|
|
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.