Annotation of cci/usr/src/usr.bin/f77/f77pass1/tst/overlay.f, revision 1.1.1.1

1.1       root        1:        subroutine ovlay
                      2:        common ifld(400),ipc,ipb,ipa,inextb,ifr
                      3:        common inextc,iresta,irestb,iquot,iaccb,iacca,ipb2,ipa2,ilp2
                      4:        common ibufa,ibufb
                      5: c      set,iipb2,iipa2,iiaccb,iacca
                      6: 111    format('tag')
                      7: 26     iacca=0
                      8:        iaccb=0
                      9: 101    ipb2=ipb
                     10:        ipa2=ipa
                     11: c      set ibufa and bufb
                     12:        ibufa=ifld(ipa)
                     13:        ibufb=ifld(ipb)
                     14: c      check if a's type is 'x'
                     15:        iquot=ibufa/4
                     16:        if (ibufa-4*iquot)  27,1,27
                     17: c      check if a longer than b
                     18: 1      iquot=ibufa/4
                     19:        iresta=iquot/64
                     20:        iresta=iquot-64*iresta
                     21: 6      iquot=ibufb/4
                     22:        irestb=iquot/64
                     23:        irestb=iquot-64*irestb
                     24:        iaccb=irestb+iaccb
                     25: 10     if (iresta.lt.iaccb) go to 7
                     26: c      check length(in words) of b's record
                     27:        iquot=ibufb/4
                     28:        irestb=(ibufb-iquot*4)+1
                     29:        ilp2=ipb2
                     30:        go to(2,4,2,3)irestb
                     31: 2      ipb2=ipb2+1
                     32:        go to 55
                     33: 3      if (ifld(ipb2+1).eq.-1) go to 5
                     34: 4      ipb2=ipb2+1
                     35: 5      ipb2=ipb2+2
                     36: c      iaccumulate b's bits that overlay a's  x'es
                     37: 55     ibufb=ifld(ipb2)
                     38: c      check word's end
                     39:        if (iresta.eq.iaccb) go to 22
                     40:        go to 6
                     41: c      check for single b record
                     42: 7      if (ipb.eq.ipb2)go to 27
                     43: c      check if b's type is x
                     44:        iquot=ifld(ipb2)/4
                     45:        if (ifld(ipb2)-4*iquot) 1000,8,1000
                     46: c      fill c with b's contents
                     47: 8      do 9 i=ipb,ipb2-1
                     48:        ifld(ipc)=ifld(i)
                     49:        ipc=ipc+1
                     50: 9      continue
                     51:        ipb=ipb2
                     52: c      create and insert record for a's tail
                     53:        ilgth=iresta-(iaccb-irestb)
                     54:        ifld(ipc)=ilgth*4
                     55:        ipa=ipa+1
                     56:        ipc=ipc+1
                     57:        iaccb=-ilgth
                     58:        iacca=ilgth
                     59:        go to 101
                     60: c      check if b's type is 'x'
                     61: 27     iquot=ibufb/4
                     62:        if (ibufb-4*iquot) 20,11,20
                     63: c      check if b longer than a
                     64: 11     iquot=ibufb/4
                     65:        irestb=iquot/64
                     66:        irestb=iquot-64*irestb
                     67: 115    iquot=ibufa/4
                     68:        iresta=iquot/64
                     69:        iresta=iquot-64*iresta
                     70:        iacca=iresta+iacca
                     71:        if (irestb.lt.iacca) go to 155
                     72: c      check length(in words) of a record
                     73:        iquot=ibufa/4
                     74:        iresta=(ibufa-4*iquot)+1
                     75:        ilp2=ipa2
                     76:        go to (12,14,12,13) iresta
                     77: 12     ipa2=ipa2+1
                     78:        go to 154
                     79: 13     if (ifld(ipa2+1).eq.-1) go to 15
                     80: 14     ipa2=ipa2+1
                     81: 15     ipa2=ipa2+2
                     82: c      iaccumulate a's bits that overlay b's x'es
                     83: 154    ibufa=ifld(ipa2)
                     84:        if (irestb.eq.iacca) go to 30
                     85:        go to 115
                     86: c      check for iaccumulate
                     87: 155    if (ipa.eq.ipa2)  go to 1000
                     88: c      check if a's type is 'x'
                     89: 16     iquot=ifld(ipa2)/4
                     90:        if (ifld(ipa2)-4*iquot) 1000,18,1000
                     91: c      fill c with a's contents
                     92: 18     do 19 i=ipa,ipa2-1
                     93:        ifld(ipc)=ifld(i)
                     94: 19     ipc=ipc+1
                     95:        ipa=ipa2
                     96: c      create and insert record for b's trail
                     97:        ilgth=irestb-(iacca-iresta)
                     98:        ifld(ipc)=ilgth*4
                     99: c      set new ipb,pointc,iacca,irestb
                    100:        ipb=ipb+1
                    101:        ipc=ipc+1
                    102:        iacca=-ilgth
                    103:        iaccb=ilgth
                    104:        go to 101
                    105: c      check for a=b
                    106: 20     iquot=ibufa/4
                    107:        write(6,111)
                    108:        iresta=(ibufa-4*iquot)+1
                    109:        go to (201,202,203,204)iresta
                    110: 202    iresta=3
                    111:        go to 201
                    112: 203    iresta=1
                    113:        go to 201
                    114: 204    if (ifld(ipa+1).ne.-1) go to 202
                    115:        iresta=3
                    116: 201    do 21 i=1,iresta
                    117:        if(ifld(ipa).ne.ifld(ipb)) go to 1000
                    118:        ifld(ipc)=ifld(ipa)
                    119:        ipa=ipa+1
                    120:        ipb=ipb+1
                    121:        ipc=ipc+1
                    122: 21     continue
                    123:        go to 26
                    124: c      end of host word for first case a>=b
                    125: c      fill c with b's content
                    126: 22     do 23 i=ipb,ipb2-1
                    127:        ifld(ipc)=ifld(i)
                    128:        ipc=ipc+1
                    129: 23     continue
                    130:        if (ipb2-inextb+1) 25,24,24
                    131: 24     inextc=ipc
                    132:        return
                    133: 25     ipa=ipa+1
                    134:        ipb=ipb2
                    135:        go to 26
                    136: c      end of host word for  2nd case a<=b
                    137: c      fill c with a's content
                    138: 30     do 31 i=ipa,ipa2-1
                    139:        ifld(ipc)=ifld(i)
                    140:        ipc=ipc+1
                    141: 31     continue
                    142:        if (ipb-inextb+1) 35,34,34
                    143: 34     inextc=ipc
                    144:        write (6,111)
                    145:        return
                    146: 35     ipb=ipb+1
                    147:        ipa=ipa2
                    148:        go to 26
                    149: 1000   ifr=1
                    150:        end

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.