100  ! *****OUTPUT.BAS**********************************************
110  ! *
120  ! *    PROGRAM TO OUTPUT DOCUMENTED PROGRAM LISTINGS
130  ! *
140  ! *    AUTOMATED PROFESSIONAL SYSTEMS, INC.
150  ! *    PETER R. JAX
160  ! *    10/2/78 VER 2.2  AMOS 3.4
170  ! *
180  ! *************************************************************
400 MAP1 CALDATE'HOLD
410  MAP2 H'MN,S,2
420  MAP2 H'DA,S,2
430  MAP2 H'YR,S,2
440 MAP1 JULDATE'HOLD
450  MAP2 JULYR,S,2
460  MAP2 JULDAY,S,3
600 MAP1        DUMMYS
610     MAP2    FF,S,1
612     MAP2    CDATE,S,8
620     MAP2    N,F
630     MAP2    IBUF,S,133
1000 start:
1205    FF=CHR(12)
1210    NAME$="  "
1270    NPAGE = 0
1272    CALL calget
1273    CDATE=H'MN+"/"+H'DA+"/"+H'YR
1274    IF D'FLG=1 THEN CALL dat
1280    ? TAB(-1,0);TAB(5,1);
1400    INPUT "DO YOU NEED INSTRUCTIONS?  ", NAME$
1405    ? TAB(-1,0);TAB(5,1);
1410    IF NAME$[1;1]= "N"  THEN GOTO namin
1420    ? "THIS COMMAND OUTPUTS BASIC PROGRAM SOURCE LISTINGS OR"
1430    ? "LISTINGS OF SEQUENTIAL FILES TO A PRINTER WITH"
1440    ? "APPROPRIATE HEADERS TO HELP DOCUMENT THE SOURCE OF THE"
1450    ? "LISTING AT SOME LATER DATE"
1500 namin:
1501    INPUT "ENTER NAME OF PROGRAM OR FILE:  ", NAME$
1502    IF NAME$="QUIT"  THEN GOTO fini
1510    LOOKUP NAME$,RECS
1520    IF RECS>0  THEN GOTO namok
1530    ? "CAN NOT OUTPUT THAT FILE - MISSING OR NOT SEQUENTIAL"
1540    ? "TYPE 'QUIT' TO TERMINATE OUTPUT"
1550    GOTO namin
1560 namok:
1570    GOSUB timget
1600    NOUT$=NAME$[1,-4]
1601    OPEN #1, NOUT$+"OUT", OUTPUT
1610    OPEN #2, NAME$,INPUT
1620    N=100
1630 loop:
1632    INPUT LINE #2, IBUF
1640    IF EOF(2) = 1  THEN GOTO wrapup
1650    N=N+1
1660    IF N>50  THEN GOSUB header
1670    ? #1, IBUF
1680    GOTO loop
2000 wrapup:
2002    ? #1:? #1:? #1, TAB(11);"END OF PRINT"
2010    ? #1, TAB(4);NAME$;TAB(29);CDATE;TAB(39);TZ$+"M";TAB(55);"PAGE ";NPAGE
2020    CLOSE #1
2030    CLOSE #2
2040    NPAGE = 0
2050    GOTO namin
3300 dat:
3310    ? TAB(-1,0);TAB(10,10);"SYSTEM DATE IS NOT SET - PROGRAM ABORTED";
3320    ? TAB(20,1);
3330    GOTO term
4000 header:
4002    N=0
4005    IF NPAGE=0  THEN GOTO init
4008    ? #1: ? #1
4010    ? #1, TAB(4);NAME$;TAB(29);CDATE;TAB(39);TZ$+"M";TAB(55);"PAGE ";NPAGE
4015 init:
4017    NPAGE = NPAGE + 1
4020    ? #1, FF,TAB(4);NAME$;TAB(29);CDATE;TAB(39);TZ$+"M";TAB(55);"PAGE ";NPAGE
4030    ? #1: ? #1
4999    RETURN
23000 calget:
23001   IF DATE=0       THEN D'FLG=1    ELSE D'FLG=0
23010   H'YR=INT(DATE/65536)
23011   H'YR=("0"+H'YR)[-2;2]
23020   Z=DATE-(H'YR*65536)
23030   H'DA=INT(Z/256)
23031   H'DA=("0"+H'DA)[-2;2]
23040   H'MN=Z-(H'DA*256)
23041   H'MN=("0"+H'MN)[-2;2]
23050   RETURN
50000 !*****   CALCULATE TIME OF DAY
50004 timget:
50008   STRSIZ 11
50010   IF TIME>5184000 THEN TIME = TIME - 5184000
50012   SZ = INT(TIME /60)
50016   MZ = INT( SZ / 60 )
50020   SZ = SZ - (MZ * 60)
50024   HZ = INT( MZ /60 )
50028   MZ = MZ - (HZ * 60)
50032   AP$="PM"
50036   IF HZ < 12 THEN AP$="AM"
50040   IF HZ > 12 THEN HZ = HZ - 12
50044   TZ$=("0"+SZ)[-2;2]+" "+AP$
50048   TZ$=("0"+MZ)[-2;2]+":"+TZ$
50052   TZ$=(" "+HZ)[-2;2]+":"+TZ$
50056 RETURN
65500 REM ***  TERMINATION SEGMENT
65501 fini:
65534 term: END