|
|
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
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.