12 PROC 3 ;INITIALIZATION FOR PASS 1 22 ;... SBTTL ;INITIALIZATION FOR PASS 1 32 42 ;... I/O ;DISPLAY VERSION MESSAGE 52 ;... DISK ;OPEN $PASS1 FOR OUTPUT 62 ;... DISK ;OPEN SYS FILE FOR INPUT 72 ;... DISK ;OPEN $KREF FOR OUTPUT 82 ;... IF NO:NOIN ;IS THERE A SYS FILE? 92 ;... PROC ;BUILD A TAB CHARACTER 102 ;... PROC ;SET UP OPTION FLAGS 112 ;... GOTO NEXT 122 ;... NOIN, I/O ;DISPLAY 'NO INPUT?' 132 ;... STOP ;END OF PGM 142 XMIT(8,"FLOW V 8.00') 152 INIT(2,O,'$PASS1',1) 162 INIT(3,O,'$KREF',2) 172 ON ERROR NOIN 182 INIT(1,SYS) 192 INCR DTAB 202 D2=TAB 212 OPTLP, INCR CTR 222 IF(OPT(CTR,CTR).EQ.'P')CALL FIXP 232 IF(OPT(CTR,CTR).EQ.'L')CALL FIXL 242 IF(CTR.LT.2)GO TO OPTLP 252 GO TO NEXT 262 FIXP, OPTP=OPT(CTR,CTR) 272 RETURN 282 FIXL, OPTL=OPT(CTR,CTR) 292 RETURN 302 312 NOIN, XMIT(8,"NO INPUT?') 322 STOP 332 START ;MAIN LOOP FOR PASS 1 342 ;... SBTTL ;MAIN LOOP FOR PASS 1 352 362 ;... NEXT, DISK ;READ AN INPUT RECORD 372 ;... IF YES:MORE ;END OF FILE? 382 ;... IF NO:THIS1 ;IS INPUT A DIBOL PROGRAM? 392 ;... IF NO:NEXT ;PROCESS THIS RECORD? 402 ;... PROC ;ADJUST RECORD FORMAT 412 NEXT, XMIT(1,INREC,MORE) ;READ A SYS RECORD 422 LAST=(4096-64*#TRICK1(3)-#TRICK1(4))*2 432 IF(OPTP.NE.'P')GO TO THIS1 ;IS INPUT A PROGRAM? 442 IF(CHR(1,2).NE.';.')GO TO NEXT ;YES--IS THIS A FLOWCHART LINE? 452 CTR=2 462 FIXLP, INCR CTR 472 IF(CHR(CTR).EQ.SPACES)GO TO FIXFND 482 IF(CHR(CTR).NE.TAB)GO TO FIXLP 492 FIXFND, CHR(1,LAST-CTR)=CHR(1+CTR,LAST) 502 LAST=LAST-CTR 512 522 ;... THIS1, PROC ;INITIALIZE FIELDS FOR NEW LINE 532 ;... PROC ;FIND LABEL 542 ;... PROC ;FIND COMMAND 552 ;... IF NO:ERROR ;IS COMMAND IN LIST? 562 THIS1, BGN= 572 DELIMS=D2 582 CALL GETFLD ;GET LABEL 592 LABEL=TXT 602 DELIMS=D1 612 CALL GETFLD ;GET COMMAND 622 COMAND=TXT 632 CTR= 642 COMLP, INCR CTR 652 IF(COMAND.EQ.COMLST(CTR))GO TO FOUND 662 IF(CTR.LT.MAXCOM)GO TO COMLP 672 GO TO ERROR 682 692 ;... FOUND, PROC ;GET PARAMETERS FOR COMMAND 702 ;... IF NO:NOHOF ;PAGE FULL? 712 ;... CALL HOF ;OUTPUT PAGE MARKER 722 ;... NOHOF, PROC ;BUMP LINE COUNTER 732 ;... PROC ;BRANCH BASED ON COMMAND NUMBER 742 ;... CGOTO PROCES,DISK,IF,CALL,STRT,STOP,GOTO,CGOTO,IO,TITLE,SBTTL,PAGE 752 FOUND, PARAM=COMLST(CTR) 762 IF(LNECTR.LT.MAXLNE)GO TO NOHOF 772 CALL HOF 782 NOHOF, LNECTR=LNECTR+LNBUMP 792 GO TO(PROCES,DISK,IF,CALL,STRT,STOP,GOTO,CGOTO,IO,TITLE),CTR 802 GO TO(SBTTL,PAGE),CTR-10 812 822 ;... ERROR, I/O ;DISPLAY 'ERROR' 832 ;... I/O ;DISPLAY OFFENDING LINE 842 ;... GOTO NEXT 852 ERROR, XMIT(8,"ERROR') 862 LINENO= 872 XMIT(8,INREC) 882 GO TO NEXT 892 902 ;... MORE, DISK ;OPEN NEXT SYS FILE 912 ;... IF NO:END1 ;IS THERE ONE? 922 ;... GOTO NEXT 932 ;... END1, I/O ;CLOSE FILES 942 ;... GOTO PASS2 952 MORE, FINI(1) 962 ON ERROR END1 972 INIT(1,SYS) ;OPEN NEXT SYS FILE 982 GO TO NEXT 992 END1, FINI(1) 1002 FINI(2) 1012 FINI(3) 1022 GO TO PASS2