INTEGERFUNCTIONEQUAL(S1,S2) LOGICAL*1S1(10000),S2(10000) INTEGERI I=1 20000 IF (.NOT.(S1(I).EQ.S2(I)))GOTO20002 IF (.NOT.(S1(I).EQ.0))GOTO20003 EQUAL=(1) RETURN 20003 CONTINUE 20001 I=I+1 GOTO20000 20002 CONTINUE EQUAL=(0) RETURN END INTEGERFUNCTIONLENGTH(STR) LOGICAL*1STR(10000) I=0 20005 IF (.NOT.(STR(I+1).NE.0))GOTO20007 20006 I=I+1 GOTO20005 20007 CONTINUE LENGTH=(I) RETURN END SUBROUTINESCOPY(FROM,START1,TO,START2,MAX) LOGICAL*1FROM(10000),TO(10000) INTEGERSTART1,START2,K1,K2,MAX,COUNT K1=START1 K2=START2 COUNT=1 20008 IF (.NOT.(FROM(K1).NE.0.AND.COUNT.LT.MAX))GOTO20010 TO(K2)=FROM(K1) K2=K2+1 K1=K1+1 20009 COUNT=COUNT+1 GOTO20008 20010 CONTINUE TO(K2)=0 RETURN END LOGICAL*1FUNCTIONTYPE(C) LOGICAL*1C IF (.NOT.(C.GE.48.AND.C.LE.57))GOTO20011 TYPE=(-3) RETURN 20011 CONTINUE IF (.NOT.((C.GE.65.AND.C.LE.90).OR.(C.GE.97.AND.C.LE.122)))GOTO $20013 TYPE=(-4) RETURN 20013 CONTINUE TYPE=(C) RETURN 20014 CONTINUE 20012 CONTINUE END INTEGERFUNCTIONCTOI(IN,I,BASE) LOGICAL*1IN(10000),DIGITS(11) INTEGERBASE,I,D DATADIGITS/1H0,1H1,1H2,1H3,1H4,1H5,1H6,1H7,1H8,1H9,0/ 20015 IF (.NOT.(IN(I).EQ.32.OR.IN(I).EQ.9))GOTO20016 I=I+1 GOTO20015 20016 CONTINUE CTOI=0 20017 IF (.NOT.(IN(I).NE.0))GOTO20019 D=INDEX(DIGITS,IN(I)) IF (.NOT.(D.EQ.0))GOTO20020 GOTO20019 20020 CONTINUE CTOI=BASE*CTOI+D-1 20018 I=I+1 GOTO20017 20019 CONTINUE RETURN END INTEGERFUNCTIONINDEX(STR,C) LOGICAL*1C,STR(10000) INDEX=1 20022 IF (.NOT.(STR(INDEX).NE.0))GOTO20024 IF (.NOT.(STR(INDEX).EQ.C))GOTO20025 RETURN 20025 CONTINUE 20023 INDEX=INDEX+1 GOTO20022 20024 CONTINUE INDEX=(0) RETURN END SUBROUTINEMCRERR(LUN,PRGNAM,MESS) LOGICAL*1PRGNAM(3),MESS(10000) INTEGERLENGTH,LUN,I WRITE(LUN,10)PRGNAM,(MESS(I),I=1,LENGTH(MESS)) 10 FORMAT(1H0,3A1,4H -- ,255A1) RETURN END SUBROUTINECANT(LUN,PRGNAM,FNAME) LOGICAL*1PRGNAM(3),FNAME(10000) INTEGERLENGTH,L,I L=LENGTH(FNAME) IF (.NOT.(L.LE.0))GOTO20027 WRITE(LUN,10)PRGNAM GOTO20028 20027 CONTINUE WRITE(LUN,20)PRGNAM,(FNAME(I),I=1,L) 20028 CONTINUE RETURN 10 FORMAT(1H0,3A1,18H -- NULL FILE NAME) 20 FORMAT(1H0,3A1,27H -- CAN'T OPEN THIS FILE: ,255A1) END SUBROUTINEKILFER CALLERRSET(29,,.FALSE.,,.FALSE.) CALLERRSET(43,,.FALSE.,,.FALSE.) RETURN END LOGICAL*1FUNCTIONGETC(C) LOGICAL*1C,BUF(132) INTEGERN,GETL,POS DATAPOS/1/,N/0/ IF (.NOT.(POS.LE.N))GOTO20029 C=BUF(POS) POS=POS+1 GOTO20030 20029 CONTINUE N=GETL(BUF,132,3) IF (.NOT.(N.EQ.-3))GOTO20031 C=-3 GOTO20032 20031 CONTINUE N=N+1 BUF(N)=10 POS=2 C=BUF(1) 20032 CONTINUE 20030 CONTINUE GETC=(C) RETURN END INTEGERFUNCTIONGETL(LINE,MAXLIN,LUNIN) INTEGERN,MAXLIN,LUNIN LOGICAL*1LINE(MAXLIN) READ(LUNIN,10,END=100)N,LINE 10 FORMAT(Q,255A1) IF (.NOT.(N.GE.MAXLIN))GOTO20033 N=MAXLIN-1 20033 CONTINUE LINE(N+1)=0 GETL=(N) RETURN 100 GETL=(-3) RETURN END SUBROUTINEPUTC(C) LOGICAL*1C,BUF(132) INTEGERPOS DATAPOS/1/ IF (.NOT.(C.EQ.-3))GOTO20035 RETURN 20035 CONTINUE IF (.NOT.(C.EQ.10.OR.POS.GE.132))GOTO20037 BUF(POS)=0 CALLPUTL(BUF,4) POS=1 20037 CONTINUE IF (.NOT.(C.NE.10))GOTO20039 BUF(POS)=C POS=POS+1 20039 CONTINUE RETURN END SUBROUTINEPUTL(LINE,LUNOUT) LOGICAL*1LINE(10000) INTEGERL,LENGTH,I,LUNOUT L=LENGTH(LINE) IF (.NOT.(L.GT.0))GOTO20041 WRITE(LUNOUT,10)(LINE(I),I=1,L) GOTO20042 20041 CONTINUE WRITE(LUNOUT,10) 20042 CONTINUE 10 FORMAT(255A1) RETURN END INTEGERFUNCTIONNXTMCR(LUNPMT,PROMPT,LUNIND,NUMOUT) LOGICAL*1PROMPT(3),MCR(82),CJUNK,FN(41),TYPE INTEGERNUMOUT,DONE,I,N,POS,LUNIND,FIRST,NBRCK,ININD,GETL COMMON/MCRNFO/MCR,POS DATADONE/0/,FIRST/1/,ININD/0/ IF (.NOT.(LUNPMT.LT.0))GOTO20043 CLOSE(UNIT=LUNIND) ININD=0 NXTMCR=(1) RETURN 20043 CONTINUE 20045 CONTINUE IF (.NOT.(DONE.EQ.1.AND.ININD.EQ.0))GOTO20048 NXTMCR=(0) RETURN 20048 CONTINUE IF (.NOT.(FIRST.EQ.1))GOTO20050 CALLGETMCR(MCR,N) CONTINUE POS=1 20052 IF (.NOT.(POS.LE.N.AND.MCR(POS).NE.32.AND.MCR(POS).NE.9))GOTO $20054 20053 POS=POS+1 GOTO20052 20054 CONTINUE CONTINUE 20055 IF (.NOT.(POS.LE.N.AND.MCR(POS).EQ.32.OR.MCR(POS).EQ.9))GOTO20056 POS=POS+1 GOTO20055 20056 CONTINUE IF (.NOT.(POS.LE.N))GOTO20057 DONE=1 20057 CONTINUE FIRST=0 GOTO20051 20050 CONTINUE IF (.NOT.(ININD.EQ.1.AND.LUNIND.GT.0))GOTO20059 N=GETL(MCR,80,LUNIND) IF (.NOT.(N.EQ.-3))GOTO20061 ININD=0 CLOSE(UNIT=LUNIND) 20061 CONTINUE GOTO20060 20059 CONTINUE WRITE(LUNPMT,10)PROMPT 10 FORMAT(1H$,3A1,1H>) READ(LUNPMT,20,END=1000)N,MCR 20 FORMAT(Q,82A1) 20060 CONTINUE CONTINUE POS=1 20063 IF (.NOT.(POS.LE.N.AND.MCR(POS).EQ.32.OR.MCR(POS).EQ.9))GOTO20065 20064 POS=POS+1 GOTO20063 20065 CONTINUE 20051 CONTINUE IF (.NOT.(POS.LT.N.AND.MCR(POS).EQ.1H@))GOTO20066 MCR(N+1)=0 N=-1 IF (.NOT.(ININD.EQ.1.OR.LUNIND.LE.0))GOTO20068 CALLMCRERR(LUNPMT,PROMPT,25HCOMMAND FILE INVALID HERE) GOTO20069 20068 CONTINUE POS=POS+1 JUNK=NXTFIL(4H.CMD,FN,41,CJUNK,1) OPEN(UNIT=LUNIND,NAME=FN,TYPE='OLD',ERR=30,READONLY) ININD=1 GOTO31 30 CALLMCRERR(LUNPMT,PROMPT,32HCAN'T OPEN INDIRECT COMMAND FILE) 31 CONTINUE 20069 CONTINUE 20066 CONTINUE 20046 IF (.NOT.(POS.LE.N))GOTO20045 20047 CONTINUE NUMOUT=1 NBRCK=0 MCR(N+1)=0 I=1 20070 IF (.NOT.(MCR(I).NE.0))GOTO20072 IF (.NOT.(MCR(I).EQ.1H[))GOTO20073 NBRCK=NBRCK+1 GOTO20074 20073 CONTINUE IF (.NOT.(MCR(I).EQ.1H]))GOTO20075 NBRCK=NBRCK-1 GOTO20076 20075 CONTINUE IF (.NOT.(MCR(I).EQ.1H,.AND.NBRCK.EQ.0))GOTO20077 NUMOUT=NUMOUT+1 GOTO20078 20077 CONTINUE IF (.NOT.(MCR(I).EQ.1H=))GOTO20079 GOTO20072 20079 CONTINUE 20078 CONTINUE 20076 CONTINUE 20074 CONTINUE 20071 I=I+1 GOTO20070 20072 CONTINUE IF (.NOT.(MCR(I).NE.1H=))GOTO20081 NUMOUT=0 20081 CONTINUE NXTMCR=(1) RETURN 1000 DONE=1 NXTMCR=(0) RETURN END INTEGERFUNCTIONNXTFIL(EXT,FNAME,MAXFNM,SWITCH,MAXSW) LOGICAL*1EXT(4),FNAME(MAXFNM),SWITCH(MAXSW),MCR(82) INTEGERMAXFNM,MAXSW,POS,GOTDOT,I,J,NBRK COMMON/MCRNFO/MCR,POS 20083 IF (.NOT.(MCR(POS).EQ.32.OR.MCR(POS).EQ.9))GOTO20084 POS=POS+1 GOTO20083 20084 CONTINUE IF (.NOT.(MCR(POS).EQ.0))GOTO20085 NXTFIL=(0) RETURN 20085 CONTINUE FNAME(1)=0 SWITCH(1)=0 I=1 GOTDOT=0 NBRAK=0 20087 IF (.NOT.(MCR(POS).NE.0.AND.MCR(POS).NE.1H/.AND.MCR(POS).NE.1H= $.AND.(MCR(POS).NE.1H,.OR.NBRK.GT.0)))GOTO20089 IF (.NOT.(MCR(POS).GE.97.AND.MCR(POS).LE.122))GOTO20090 MCR(POS)=MCR(POS)-32 GOTO20091 20090 CONTINUE IF (.NOT.(MCR(POS).EQ.1H.))GOTO20092 GOTDOT=1 GOTO20093 20092 CONTINUE IF (.NOT.(MCR(POS).EQ.1H[))GOTO20094 NBRK=NBRK+1 GOTO20095 20094 CONTINUE IF (.NOT.(MCR(POS).EQ.1H]))GOTO20096 NBRK=NBRK-1 GOTO20097 20096 CONTINUE IF (.NOT.(MCR(POS).EQ.1H;.AND.GOTDOT.EQ.0))GOTO20098 CONTINUE J=1 20100 IF (.NOT.(I.LT.MAXFNM.AND.J.LE.4))GOTO20102 FNAME(I)=EXT(J) I=I+1 20101 J=J+1 GOTO20100 20102 CONTINUE GOTDOT=1 20098 CONTINUE 20097 CONTINUE 20095 CONTINUE 20093 CONTINUE 20091 CONTINUE IF (.NOT.(I.LT.MAXFNM.AND.MCR(POS).NE.32.AND.MCR(POS).NE.9))GOTO $20103 FNAME(I)=MCR(POS) I=I+1 20103 CONTINUE 20088 POS=POS+1 GOTO20087 20089 CONTINUE IF (.NOT.(GOTDOT.EQ.0.AND.I.GT.1))GOTO20105 CONTINUE J=1 20107 IF (.NOT.(I.LT.MAXFNM.AND.J.LE.4))GOTO20109 FNAME(I)=EXT(J) I=I+1 20108 J=J+1 GOTO20107 20109 CONTINUE 20105 CONTINUE FNAME(I)=0 J=1 IF (.NOT.(MCR(POS).EQ.1H/))GOTO20110 CONTINUE POS=POS+1 20112 IF (.NOT.(MCR(POS).NE.1H=.AND.MCR(POS).NE.0.AND.MCR(POS).NE.1H,)) $GOTO20114 IF (.NOT.(J.LT.MAXSW))GOTO20115 SWITCH(J)=MCR(POS) J=J+1 20115 CONTINUE 20113 POS=POS+1 GOTO20112 20114 CONTINUE 20110 CONTINUE SWITCH(J)=0 IF (.NOT.(MCR(POS).NE.0))GOTO20117 POS=POS+1 20117 CONTINUE NXTFIL=(1) RETURN END INTEGERFUNCTIONSETOTL(LUNPMT,PROMPT,EXTIN,LUNIND) LOGICAL*1EXTIN(4),SWITCH(80),FIN(41),DEFILE(9),PROMPT(3) INTEGERNXTFIL,I,DELETE,EQUAL,LUNPMT,LUNIND,NXTMCR COMMON/SWITCH/SWITCH DATADEFILE/1HP,1HI,1HP,1HE,1H.,1HL,1HY,1HN,0/ CALLKILFER CLOSE(UNIT=3) 20119 CONTINUE IF (.NOT.(NXTMCR(LUNPMT,PROMPT,LUNIND,NUMOUT).EQ.0))GOTO20122 SETOTL=(0) RETURN 20122 CONTINUE IF (.NOT.(NUMOUT.GT.0))GOTO20124 CALLMCRERR(LUNPMT,PROMPT,29HEXACTLY ONE INPUT FILE NEEDED) GOTO20120 20124 CONTINUE JUNK=NXTFIL(EXTIN,FIN,41,SWITCH,80) IF (.NOT.(FIN(1).EQ.0))GOTO20126 CALLSCOPY(DEFILE,1,FIN,1,41) 20126 CONTINUE IF (.NOT.(EQUAL(DEFILE,FIN).EQ.1))GOTO20128 OPEN(UNIT=3,NAME=FIN,TYPE='OLD',ERR=1000,DISP='DELETE') GOTO20129 20128 CONTINUE OPEN(UNIT=3,NAME=FIN,TYPE='OLD',ERR=1000,READONLY) 20129 CONTINUE SETOTL=(1) RETURN 1000 CALLMCRERR(LUNPMT,PROMPT,21HCAN'T OPEN INPUT FILE) 20120 GOTO20119 20121 CONTINUE END INTEGERFUNCTIONSETFLT(LUNPMT,PROMPT,EXTIN,EXTOUT,LUNIND) INTEGERMAXSW,FIRST,NXTMCR,NXTFIL,JUNK,LUNIND,EQUAL,I LOGICAL*1SWITCH(80),PROMPT(3),EXTIN(4),EXTOUT(4),FIN(41),FOUT(41) $,DEFILE(9) COMMON/SWITCH/SWITCH DATADEFILE/1HP,1HI,1HP,1HE,1H.,1HL,1HY,1HN,0/ CALLKILFER CLOSE(UNIT=3) CLOSE(UNIT=4) 20130 CONTINUE IF (.NOT.(NXTMCR(LUNPMT,PROMPT,LUNIND,NUMOUT).EQ.0))GOTO20133 SETFLT=(0) RETURN 20133 CONTINUE IF (.NOT.(NUMOUT.GT.1))GOTO20135 CALLMCRERR(LUNPMT,PROMPT,12HBAD MCR LINE) GOTO20131 20135 CONTINUE IF (.NOT.(NUMOUT.EQ.1))GOTO20137 JUNK=NXTFIL(EXTOUT,FOUT,41,SWITCH,80) GOTO20138 20137 CONTINUE FOUT(1)=0 20138 CONTINUE 20136 CONTINUE IF (.NOT.(NXTFIL(EXTIN,FIN,41,SWITCH,80).EQ.0))GOTO20139 FIN(1)=0 GOTO20140 20139 CONTINUE IF (.NOT.(NXTFIL(EXTIN,FIN,41,SWITCH,80).EQ.1))GOTO20141 CALLMCRERR(LUNPMT,PROMPT,12HBAD MCR LINE) GOTO20131 20141 CONTINUE 20140 CONTINUE IF (.NOT.(FIN(1).EQ.0))GOTO20143 CALLSCOPY(DEFILE,1,FIN,1,41) 20143 CONTINUE IF (.NOT.(FOUT(1).EQ.0))GOTO20145 CALLSCOPY(DEFILE,1,FOUT,1,41) 20145 CONTINUE IF (.NOT.(EQUAL(DEFILE,FIN).EQ.1))GOTO20147 OPEN(UNIT=3,NAME=FIN,TYPE='OLD',DISPOSE='DELETE',ERR=1000) GOTO20148 20147 CONTINUE OPEN(UNIT=3,NAME=FIN,TYPE='OLD',ERR=1000,READONLY) 20148 CONTINUE OPEN(UNIT=4,NAME=FOUT,CARRIAGECONTROL='LIST',ERR=1001,TYPE='NEW') SETFLT=(1) RETURN 1000 CALLCANT(LUNPMT,PROMPT,FIN) GOTO20131 1001 CALLCANT(LUNPMT,PROMPT,FOUT) CLOSE(UNIT=3,DISPOSE='SAVE') 20131 GOTO20130 20132 CONTINUE END INTEGERFUNCTIONGETARG(ARGNUM,ARG,MAXARG) LOGICAL*1SWITCH(80),ARG(MAXARG) INTEGERARGNUM,MAXARG,I,CNTARG,J COMMON/SWITCH/SWITCH ARG(1)=0 IF (.NOT.(ARGNUM.LE.0.OR.MAXARG.LE.1.OR.SWITCH(1).EQ.0))GOTO20149 GETARG=(-3) RETURN 20149 CONTINUE I=1 CNTARG=1 20151 IF (.NOT.(CNTARG.LT.ARGNUM))GOTO20152 IF (.NOT.(SWITCH(I).EQ.0))GOTO20153 GETARG=(-3) RETURN 20153 CONTINUE IF (.NOT.(SWITCH(I).EQ.1H/))GOTO20155 CNTARG=CNTARG+1 20155 CONTINUE IF (.NOT.(SWITCH(I).EQ.64.AND.SWITCH(I+1).NE.0))GOTO20157 I=I+2 GOTO20158 20157 CONTINUE I=I+1 20158 CONTINUE GOTO20151 20152 CONTINUE J=1 20159 IF (.NOT.(J.LT.MAXARG.AND.SWITCH(I).NE.1H/.AND.SWITCH(I).NE.0)) $GOTO20161 IF (.NOT.(SWITCH(I).EQ.64.AND.SWITCH(I+1).NE.0))GOTO20162 I=I+1 20162 CONTINUE ARG(J)=SWITCH(I) J=J+1 20160 I=I+1 GOTO20159 20161 CONTINUE ARG(J)=0 GETARG=(J-1) RETURN END INTEGERFUNCTIONSPAN(S1,S2,S3) LOGICAL*1S1(10000),S2(10000),S3(10000) INTEGERD,INDEX,LENGTH I=0 20164 IF (.NOT.(S1(I+1).NE.0))GOTO20166 IF (.NOT.(INDEX(S2,S1(I+1)).EQ.0))GOTO20167 IF (.NOT.(I.EQ.0))GOTO20169 S3(1)=0 SPAN=(0) RETURN 20169 CONTINUE K=I+1 CALLSCOPY(S1,1,S3,1,K) CALLSCOPY(S1,K,S1,1,10000) K=LENGTH(S1) SPAN=(K) RETURN 20170 CONTINUE 20167 CONTINUE 20165 I=I+1 GOTO20164 20166 CONTINUE S3(1)=0 SPAN=(-1) RETURN END INTEGERFUNCTIONBRAKE(S1,S2,S3) INTEGERINDEX,I,K LOGICAL*1S1(10000),S2(10000),S3(10000) I=0 20171 IF (.NOT.(S1(I+1).NE.0))GOTO20173 IF (.NOT.(INDEX(S2,S1(I+1)).NE.0))GOTO20174 IF (.NOT.(I.EQ.0))GOTO20176 S3(1)=0 BRAKE=(0) RETURN 20176 CONTINUE K=I+1 CALLSCOPY(S1,1,S3,1,K) CALLSCOPY(S1,K,S1,1,10000) K=LENGTH(S1) BRAKE=(K) RETURN 20177 CONTINUE 20174 CONTINUE 20172 I=I+1 GOTO20171 20173 CONTINUE S3(1)=0 BRAKE=(-1) RETURN END INTEGERFUNCTIONANY(S1,S2) LOGICAL*1S1(10000),S2(10000) INTEGERINDEX,I I=1 20178 IF (.NOT.(S1(I).NE.0))GOTO20180 IF (.NOT.(INDEX(S2,S1(I)).NE.0))GOTO20181 ANY=(I) RETURN 20181 CONTINUE 20179 I=I+1 GOTO20178 20180 CONTINUE ANY=(0) RETURN END INTEGERFUNCTIONNOTANY(S1,S2) LOGICAL*1S1(10000),S2(10000) INTEGERINDEX,I I=1 20183 IF (.NOT.(S1(I).NE.0))GOTO20185 IF (.NOT.(INDEX(S2,S1(I)).EQ.0))GOTO20186 NOTANY=(I) RETURN 20186 CONTINUE 20184 I=I+1 GOTO20183 20185 CONTINUE NOTANY=(0) RETURN END INTEGERFUNCTIONSHIFT(S1,N) INTEGERLENGTH,I,J,N LOGICAL*1S1(10000) I=LENGTH(S1) J=N+1 I=(I-N)+1 CALLSCOPY(S1,J,S1,1,I) SHIFT=(I-1) RETURN END INTEGERFUNCTIONRPLACE(S1,A,B) LOGICAL*1S1(10000),A,B INTEGERINDEX,I IF (.NOT.(A.EQ.B))GOTO20188 RPLACE=(0) RETURN 20188 CONTINUE I=0 20190 CONTINUE I=INDEX(S1,A) IF (.NOT.(I.EQ.0))GOTO20193 GOTO20192 20193 CONTINUE S1(I)=B I=I+1 20191 GOTO20190 20192 CONTINUE RPLACE=(I) RETURN END INTEGERFUNCTIONTRIM(S1) LOGICAL*1S1(10000) INTEGERLENGTH,I I=LENGTH(S1) 20195 IF (.NOT.(I.GT.0))GOTO20197 IF (.NOT.(S1(I).EQ.32.OR.S1(I).EQ.9))GOTO20198 S1(I)=0 GOTO20199 20198 CONTINUE GOTO20197 20199 CONTINUE 20196 I=I-1 GOTO20195 20197 CONTINUE I=LENGTH(S1) TRIM=(I) RETURN END INTEGERFUNCTIONITOC(NUMBR,S1,BASE) INTEGERBASE,NUMBR,I,J,K,WRKNUM LOGICAL*1S1(10000),JUNK(18),TABLE(16) DATATABLE/1H0,1H1,1H2,1H3,1H4,1H5,1H6,1H7,1H8,1H9,1HA,1HB,1HC,1HD $,1HE,1HF/ IF (.NOT.(BASE.LT.2.OR.BASE.GT.16))GOTO20200 S1(1)=0 ITOC=(0) RETURN 20200 CONTINUE WRKNUM=NUMBR I=1 20202 CONTINUE J=MOD(WRKNUM,BASE)+1 JUNK(I)=TABLE(J) I=I+1 WRKNUM=WRKNUM/BASE 20203 IF (.NOT.(WRKNUM.LE.0))GOTO20202 20204 CONTINUE I=I-1 K=1 J=I 20205 IF (.NOT.(J.GT.0))GOTO20207 S1(K)=JUNK(J) K=K+1 20206 J=J-1 GOTO20205 20207 CONTINUE S1(K)=0 ITOC=(I) RETURN END INTEGERFUNCTIONCHEXTI(S1,I,BASE) LOGICAL*1S1(10000),DIGITS(17) INTEGERBASE,I,J,INDEX DATADIGITS/1H0,1H1,1H2,1H3,1H4,1H5,1H6,1H7,1H8,1H9,1HA,1HB,1HC, $1HD,1HE,1HF,0/ 20208 IF (.NOT.(S1(I).EQ.32.OR.S1(I).EQ.9))GOTO20209 I=I+1 GOTO20208 20209 CONTINUE CHEXTI=0 20210 IF (.NOT.(S1(I).NE.0))GOTO20212 J=INDEX(DIGITS,S1(I)) IF (.NOT.(J.EQ.0))GOTO20213 GOTO20212 20213 CONTINUE CHEXTI=BASE*CHEXTI+J-1 20211 I=I+1 GOTO20210 20212 CONTINUE RETURN END INTEGERFUNCTIONMATCH(LIN,PAT) LOGICAL*1LIN(10000),PAT(10000) INTEGERAMATCH,I I=1 20215 IF (.NOT.(LIN(I).NE.0))GOTO20217 IF (.NOT.(AMATCH(LIN,I,PAT).GT.0))GOTO20218 MATCH=(I) RETURN 20218 CONTINUE 20216 I=I+1 GOTO20215 20217 CONTINUE MATCH=(0) RETURN END INTEGERFUNCTIONAMATCH(LIN,FROM,PAT) LOGICAL*1LIN(10000),PAT(10000) INTEGERFROM,I,J I=FROM J=1 20220 IF (.NOT.(PAT(J).NE.0))GOTO20222 IF (.NOT.(LIN(I).NE.PAT(J)))GOTO20223 AMATCH=(0) RETURN 20223 CONTINUE I=I+1 20221 J=J+1 GOTO20220 20222 CONTINUE AMATCH=(I) RETURN END INTEGERFUNCTIONAPPEND(S1,S2,COUNT) LOGICAL*1S1(10000),S2(10000) INTEGERLENGTH,I,J,K,COUNT J=LENGTH(S2)+1 IF (.NOT.(COUNT.LE.0))GOTO20225 APPEND=(0) RETURN 20225 CONTINUE K=1 20227 IF (.NOT.(K.LE.COUNT))GOTO20229 I=LENGTH(S1)+1 CALLSCOPY(S2,1,S1,I,J) 20228 K=K+1 GOTO20227 20229 CONTINUE APPEND=(LENGTH(S1)) RETURN END INTEGERFUNCTIONREMOVE(S1,FROM,TO) LOGICAL*1S1(10000) INTEGERLENGTH,I,FROM,TO,SHIFT I=LENGTH(S1) IF (.NOT.(TO.LE.FROM))GOTO20230 REMOVE=(0) RETURN 20230 CONTINUE IF (.NOT.(FROM.GE.I))GOTO20232 REMOVE=(0) RETURN 20232 CONTINUE 20231 CONTINUE IF (.NOT.(TO.GE.I))GOTO20234 S1(FROM)=0 GOTO20235 20234 CONTINUE IF (.NOT.(FROM.LE.1))GOTO20236 I=SHIFT(S1,TO) GOTO20237 20236 CONTINUE I=TO+1 CALLSCOPY(S1,I,S1,FROM,10000) 20237 CONTINUE 20235 CONTINUE I=LENGTH(S1) REMOVE=(I) RETURN END INTEGERFUNCTIONINSERT(S1,FROM,S2) LOGICAL*1S1(10000),S2(10000),JUNK(132) INTEGERFROM,I,APPEND,LENGTH IF (.NOT.(FROM.GE.LENGTH(S1)))GOTO20238 I=APPEND(S1,S2,1) INSERT=(I) RETURN 20238 CONTINUE IF (.NOT.(FROM.LT.1))GOTO20240 I=1 GOTO20241 20240 CONTINUE I=FROM+1 20241 CONTINUE CALLSCOPY(S1,I,JUNK,1,10000) CALLSCOPY(S2,1,S1,I,10000) I=APPEND(S1,JUNK,1) INSERT=(I) RETURN END INTEGERFUNCTIONLPAD(S1,N) LOGICAL*1S1(10000),JUNK(1) INTEGERN,APPEND,LENGTH IF (.NOT.(N.LT.1))GOTO20242 LPAD=LENGTH(S1) GOTO20243 20242 CONTINUE CALLSCOPY(S1,1,JUNK,1,10000) S1(1)=0 LPAD=APPEND(S1,32,N) LPAD=APPEND(S1,JUNK,1) 20243 CONTINUE RETURN END INTEGERFUNCTIONRPAD(S1,N) LOGICAL*1S1(10000) INTEGERAPPEND,LENGTH IF (.NOT.(N.LT.1))GOTO20244 RPAD=LENGTH(S1) GOTO20245 20244 CONTINUE RPAD=APPEND(S1,32,N) 20245 CONTINUE RETURN END INTEGERFUNCTIONALIGN(S1,POS,FIELD) LOGICAL*1S1(10000) INTEGERLPAD,I,J,POS,FIELD,LENGTH,SHIFT IF (.NOT.(FIELD.LE.LENGTH(S1)))GOTO20246 ALIGN=(0) RETURN 20246 CONTINUE IF (.NOT.(POS.LT.0))GOTO20248 CONTINUE 20250 CONTINUE IF (.NOT.(S1(1).NE.32.AND.S1(1).NE.9))GOTO20253 GOTO20252 20253 CONTINUE I=SHIFT(S1,1) 20254 CONTINUE 20251 IF (.NOT.(S1(1).EQ.0))GOTO20250 20252 CONTINUE 20248 CONTINUE IF (.NOT.(POS.EQ.0))GOTO20255 I=LENGTH(S1)/2 I=(FIELD/2)-I J=LPAD(S1,I) 20255 CONTINUE IF (.NOT.(POS.GT.0))GOTO20257 I=FIELD-LENGTH(S1) J=LPAD(S1,I) 20257 CONTINUE ALIGN=LENGTH(S1) RETURN END