Directory of image this file is from
This file as a plain text file
16 ;*******************************************
26 ; SOURCE PRINT6
36 ;*******************************************
46 ;
56 ;PROCESS COMPUTE STATEMENTS
66
76 ;
86 COMPUT, IF (EOL.EQ.SPACE) CALL SYNTAX
96 COMPT0, XI=
106 CALL GETLIN
116 CALL GATOM
126 HLDCOL=ACOL1
136
146 IF (ATMTYP.NE.1) GOTO COMPT9
156 IF (ICHAR.NE.'=') GOTO COMPT8
166 XENTRY=
176 HOLDNM=WORD
186 EXPRMD=
196 CALL EXPVAL
206
216 IF (FATALI.NE.0) GOTO COMPT0
226 XNAME=HOLDNM
236 WORD=HOLDNM
246 CALL SEARCH
256 IF (FINDSW.EQ.SPACE) GOTO COMPT2
266
276 IF (DATADP.EQ.XDP) GOTO COMPT4
286 ERRCOD=30
296 COMPT1, ERRCOL=HLDCOL
306 CALL FATAL
316 GOTO COMPT0
326
336 COMPT2, IF (NAMEI.GT.DATMAX) GOTO COMPT0
346 INCR NAMEI
356 IF (NAMEI.LE.DATMAX) GOTO COMPT3
366 ERRCOD=17
376 GOTO COMPT1
386 COMPT3, XWK='X'
396 XMOD=EXPRMD
406 IF (XSIZ.LE.15) GOTO COMP3A
416 XSIZ=15
426 COMP3A, ERRCOD=30
436 IF (XDP.GT.XSIZ) GOTO COMPT1
446 IF (XDP.LT.0) GOTO COMPT1
456 DATANT(NAMEI)=XENTRY
466 COMPT4, IF (COMPI.GT.EXPMAX) GOTO COMPT0
476 INCR COMPI
486 IF (COMPI.LE.EXPMAX) GOTO COMPT5
496 ERRCOD=32
506 GOTO COMPT1
516
526 COMPT5, J=1
536 I=COMPI*118-117
546 COMPT6, ICHAR=INLINE(J,J)
556 IF (ICHAR.EQ.SPACE) GOTO COMPT7
566 IF (ICHAR.EQ.'.') GOTO COMPT7
576 IF (ICHAR.EQ.';') GOTO COMPT0
586 COMPT(I,I)=ICHAR
596 INCR I
606 COMPT7, INCR J
616 IF (J.LE.INLSIZ) GOTO COMPT6
626 GOTO COMPT0
636
646 COMPT8, IF (ICHAR.NE.SPACE) GOTO COMPT9
656 IF (WORD.EQ.'PRINT ') RETURN
666 IF (WORD.EQ.'END ') RETURN
676 COMPT9, CALL SYNTAX
686 GOTO COMPT0
696 ;
706 ;
716 ; EVALUATE AN EXPRESSION
726 ;
736 EXPVAL, IF (XI.LT.XIMAX) GOTO EXPVL0
746 ERRCOD=29
756 GOTO FATALA
766 EXPVL0, INCR XI
776 XENTRY=
786 CALL SCANF
796 IF (ICHAR.EQ.SPACE) GOTO SYNTAX
806 ICOL=ICOL-1
816 IF (ICHAR.NE.SQUOTE) GOTO EXPVL6
826 CALL GATOM
836 IF (FATALI.NE.0) RETURN
846 IF (EOL.EQ.SPACE) GOTO SYNTAX
856 IF (EXPRMD.NE.SPACE) GOTO SYNTAX
866 EXPRMD='A'
876 XSIZ=ATOMSZ
886 GOTO EXPV13
896
906 EXPVL6, CALL GETOPN
916 IF (FATALI.NE.0) RETURN
926 EXPRMD='D'
936 XSIZ=ATOMSZ
946 XDP=ATOMDP
956
966 EXPVL7, IF (EOL.NE.SPACE) GOTO EXPV12
976 IF (ICHAR.EQ.')') GOTO EXPV11
986 IF (ICHAR.EQ.'+') GOTO EXPVL8
996 IF (ICHAR.EQ.'-') GOTO EXPVL8
1006 IF (ICHAR.EQ.'*') GOTO EXPVL9
1016 IF (ICHAR.EQ.'/') GOTO EXPV10
1026 GOTO SYNTAX
1036
1046 ;IT IS '+' OR '-'
1056
1066 EXPVL8, SCOL=ICOL
1076 CALL GETOPN
1086 IF (FATALI.NE.0) RETURN
1096 EXPV8A, IF (ICHAR.EQ.'*') GOTO EXPV8B
1106 IF (ICHAR.NE.'/') GOTO EXPV8C
1116 EXPV8B, XASIZ=ATOMSZ
1126 XADP=ATOMDP
1136 CALL GETOPN
1146 IF (FATALI.NE.0) RETURN
1156 ATOMSZ=ATOMSZ+XASIZ
1166 ATOMDP=ATOMDP+XADP
1176 GOTO EXPV8A
1186 EXPV8C, IF (ATOMDP.EQ.XDP) GOTO EXPV8E
1196 ERRCOD=30
1206 ERRCOL=SCOL
1216 CALL FATAL
1226 GOTO EXPVL7
1236 EXPV8E, IF (XSIZ.GE.ATOMSZ) GOTO EXPVL7
1246 XSIZ=ATOMSZ
1256 GOTO EXPVL7
1266
1276 ;IT IS '*'
1286
1296 EXPVL9, CALL GETOPN
1306 IF (FATALI.NE.0) RETURN
1316 XSIZ=XSIZ+ATOMSZ
1326 XDP=XDP+ATOMDP
1336 GOTO EXPVL7
1346
1356 ;IT IS '/'
1366
1376 EXPV10, CALL GETOPN
1386 IF (FATALI.NE.0) RETURN
1396 XDP=XDP-ATOMDP
1406 GOTO EXPVL7
1416
1426 ;IT IS ')'
1436
1446 EXPV11, ERRCOD=27
1456 IF (XI.LE.1) GOTO FATALB
1466 CALL SCANF
1476 GOTO EXPV13
1486
1496 ;END OF LINE
1506
1516 EXPV12, IF (XI.EQ.1) GOTO EXPV13
1526 ERRCOD=28
1536 GOTO FATALB
1546
1556 EXPV13, XI=XI-1
1566 RETURN
1576 ;
1586 ;
1596 ;GET NEXT EXPRESSION OPERAND
1606 ;
1616 GETOPN, CALL SCANF
1626 IF (ICHAR.EQ.'+') GOTO GETOPN
1636 IF (ICHAR.EQ.'-') GOTO GETOPN
1646 ICOL=ICOL-1
1656 CALL GATOM
1666 IF (FATALI.NE.0) RETURN
1676 IF (ICHAR.NE.'(') GOTO GTOPN1
1686 IF (ATOMSZ.NE.0) GOTO SYNTAX
1696 XTABLE(XI)=XENTRY
1706 CALL EXPVAL
1716 IF (FATALI.NE.0) RETURN
1726 CALL GTOPN5
1736 ATOMSZ=XSIZ-HOLDDP
1746 ATOMDP=XDP-HOLDDP
1756 XENTRY=XTABLE(XI)
1766 RETURN
1776
1786 GTOPN1, IF (ATMTYP.EQ.1) GOTO GTOPN2
1796 IF (ATMTYP.EQ.3) RETURN
1806 ERRCOD=23
1816 GOTO FATALA
1826
1836 GTOPN2, CALL SEARCH
1846 IF (FINDSW.NE.SPACE) GOTO GTOPN3
1856 ERRCOD=15
1866 GOTO FATALA
1876
1886 GTOPN3, CALL GTOPN5
1896 ATOMSZ=DATAS-HOLDDP
1906 ATOMDP=DATADP-HOLDDP
1916 RETURN
1926
1936 GTOPN5, HOLDDP=
1946 IF (ICHAR.NE.'#') RETURN
1956 CALL GATOM
1966 IF (FATALI.NE.0) RETURN
1976 IF (ATMTYP.NE.3) GOTO GTOPN6
1986 IF (DPCOL.NE.0) GOTO GTOPN6
1996 IF (NUMLIT(1,ATOMSZ).GT.15) GOTO GTOPN6
2006 IF (NUMLIT(1,ATOMSZ).LE.0) GOTO GTOPN6
2016 HOLDDP=NUMLIT(1,ATOMSZ)
2026 RETURN
2036 GTOPN6, ERRCOD=7
2046 GOTO FATALA
2056 END