|
DataMuseum.dkPresents historical artifacts from the history of: Q1 computer |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Q1 computer Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 13509 (0x34c5) Types: Q1_Text, reclen=79 Notes: q1file Names: »VINVOICE«
└─⟦934333717⟧ Bits:30008597 DDMQ1-0029_Demonstration_Disk_SOURCE_Single_Density_Sept_77 └─⟦this⟧ »VINVOICE«
/**INVOICING DEMONSTRATION PROGRAM */ /* NAME: INVOICE FOR V.R. STINER ONLY */ DCL F1 FLOAT(1), F2 FLOAT(1), F3 FLOAT(1), F4 FLOAT(1), F5 FLOAT(1), F6 FLOAT(1), G FLOAT(1), E BINARY, LINE BINARY; DCL CLENTMA FILE, STOCKFL FILE, TRANFL2 FILE; DCL 1 CLENTMAS_REC, 2 CACCT_NO CHAR(6), 2 M_NAME(4) CHAR(30), 2 M_BALANCE FLOAT(8); DCL 1 STOCKMAS_REC, 2 M_STOCKNO CHAR(6), 2 M_DESCRIPTION CHAR(30), 2 M_UNIT CHAR(6), 2 M_UNITPRICE(4) FLOAT (5), 2 ON_HAND FLOAT(5); DCL BLNK CHAR(30), NINE CHAR(25)INIT(' '), MES2 CHAR(30)INIT('END OF INVOICING, CHANGE PAPER'), MES3 CHAR(23) INIT('INVOICE PREPARATION ON:'), MES4 CHAR(24) INIT('INITIAL INVOICE NUMBER '), MES5 CHAR(26) INIT('TOTAL INVOICE AMOUNT IS '); DCL VALUE FIXED(12,2), RATING CHAR(1), RRM FIXED (1); DCL 1 TRAN, 2 ARR CHAR (25); DCL MONTH CHAR(3), DAY FIXED(2), DD CHAR(2), YY CHAR(2), MM CHAR(2), SINA(40) BINARY INIT (16,18,13,15,12,15,18,14,15,19,16,11,17,10,18,10,18, 18,16,16,14,16,12,16,16,11,17,14,18,15,15,14,19,16,18,16,18,10,17,9), SINB(40) BINARY INIT (1,1,1,1,1,1,1,1,1,1,1,1,19,1,1,1,20,1,18,1,16,1,13, 17,1,13,1,16,1,17,17,1,1,1,20,18,20,1,19,11), VA FIXED(5), SINC(41) BINARY INIT(1,1,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1, 1,1,1,2,2,1,2,1,2,2,1,1,1,1,1,1), M_CODE FIXED(2), YEAR FIXED(2), W_AREA1 FIXED(2), W_AREA2 FLOAT(2), R BINARY, CH9 CHAR(9), C3 CHAR(2), S3 FLOAT(2), ANS CHAR(1), DUM CHAR(9), BLANK1 CHAR(1) INIT(' '), INIT_INV FLOAT(5), INV_NO FLOAT(5), BLANK20 CHAR(19) INIT(' '), W_AREA3 CHAR(6), W_AREA5 CHAR(6), PASS CHAR (8), ORDER FIXED (12,2), B4 CHAR(4) INIT(' '),QTY FLOAT(5), AMOUNT FLOAT(8), TOTAL FLOAT(8), B10 CHAR(9) INIT(' '), INV_TOTAL FLOAT(9), TEM BINARY, B9 CHAR(9) INIT(' '), MESS CHAR(13) INIT('**TRY AGAIN -'); DCL NI(13) FLOAT(2) INIT(1,2,3,4,5,6,7,8,9,10,11,12,30); DCL MON(12) CHAR(3) INIT('JAN','FEB','MAR','APR','MAY','JUN','JUL', 'AUG','SEP','OCT','NOV','DEC'); TOTAL=0; AMOUNT=0; INV_TOTAL=0; BLNK=' 'ööBLNK; R=0; OPEN CLENTMA; OPEN STOCKFL; OPEN TRANFL2; ARR='9'ööARR; PASSWORD: DO I=1 TO 3; PUT FILE(DISPLAY) SKIP LIST('PLEASE ENTER YOUR PASSWORD: '); GET SKIP LIST(PASS); IF PASS='MICROCOM' THEN GO TO AAA; END; GO TO ZZZZ; AAA: PUT FILE(DISPLAY)SKIP; ASK: PUT FILE(DISPLAY) LIST ('DATE (DAY MONTH YEAR): '); GET SKIP LIST(DAY,M_CODE,YEAR); MM=M_CODE;DD=DAY; YY=YEAR; IF M_CODE>NI(12) ö M_CODE<NI(1) THEN GO TO WRONG_DATE; IF DAY>31 ö DAY<NI(1) THEN GO TO WRONG_DATE; IF M_CODE¬=NI(2) THEN GO TO CHECK_MONTH; IF DAY>29 THEN GO TO WRONG_DATE; W_AREA1=YEAR; W_AREA1=W_AREA1/4; W_AREA1=W_AREA1*4; IF W_AREA1¬=YEAR & DAY>28 THEN GO TO WRONG_DATE; GO TO TRANSLATE; CHECK_MONTH: IF M_CODE=NI(4) & DAY>NI(13) THEN GO TO WRONG_DATE; IF M_CODE=NI(6) & DAY>NI(13) THEN GO TO WRONG_DATE; IF M_CODE=NI(11) & DAY>NI(13) THEN GO TO WRONG_DATE; TRANSLATE: MONTH=MON(M_CODE); PUT FILE(DISPLAY) SKIP LIST ('DATE: '); PUT FILE(DISPLAY) EDIT(DAY)(P'99')(' ')(A(1))(MONTH)(A(3))(YEAR)(P'Z99')('?') (A(2)); GET SKIP LIST(ANS); IF ANS¬='Y' THEN GO TO AAA; SUBSTR(ARR,1,2)=YY;SUBSTR(ARR,3,2)=MM; SUBSTR(ARR,5,2)=DD; WRITE FILE(TRANFL2) FROM (TRAN); GO TO ASK1; WRONG_DATE: PUT FILE(DISPLAY) SKIP EDIT('** WRONG DATE!!')(A(16))(DAY)(P'99'); PUT FILE(DISPLAY) EDIT (M_CODE)(P'Z99')(YEAR)(P'Z99')(' ')(A(13))(MESS)(A(14)); GOTO ASK; ASK1: PUT FILE(DISPLAY)SKIP LIST('INITIAL INVOICE NO.? '); GET SKIP LIST(INV_NO);R=0; PUT FILE(DISPLAY) SKIP EDIT('*')(A(1))(INV_NO)(P'ZZZZZ')('?')(A(2)); GET SKIP LIST(ANS); IF ANS¬='Y' THEN GO TO ASK1; INIT_INV=INV_NO; NEW_INV: TOTAL=0; LINE=11; BBB: PUT FILE(DISPLAY) SKIP; ASK2: PUT FILE(DISPLAY)LIST('ACCOUNT NUMBER: '); GET SKIP LIST(W_AREA3); IF SUBSTR(W_AREA3,1,3)='END' THEN GO TO EOJ; IF SUBSTR(W_AREA3,1,3)='ENQ' THEN GO TO JOB; X=W_AREA3; GOTO SEARCH; ERR1: PUT FILE(DISPLAY) SKIP EDIT('** INVALID ACCOUNT NUMBER!! : ')(A(30)) (W_AREA3)(A(7))(MESS)(A(14)); GO TO ASK2; JOB: PUT FILE(DISPLAY) SKIP LIST ('ENQUIRE WHICH '); IF SUBSTR(W_AREA3,1,4)='ENQS' THEN GO TO JOB2; IF SUBSTR(W_AREA3,1,4)='ENQC' THEN GO TO JOB1; PUT FILE(DISPLAY) SKIP EDIT('**INVALID COMMAND**')(A(37))(MESS)(A(14)); GOTO ASK2; JOB1: R=1; GOTO ASK2; JOB2: R=3; GOTO ASK3; PLAY: VALUE=M_UNITPRICE(1)*ON_HAND*0.8; PUT FILE(DISPLAY) SKIP EDIT ('STOCK NO')(A(12))(' :')(A(3))(M_STOCKNO)(A(22)); IF SINC(NO)=2 THEN PUT FILE(DISPLAY) EDIT ('DES : ')(A(7))(M_DESCRIPTION) (A(30)); IF SINC(NO)=1 THEN PUT FILE(DISPLAY) EDIT ('DESCRIPTION : ')(A(15)) (M_DESCRIPTION)(A(22)); PUT FILE(DISPLAY) EDIT ('UNIT')(A(13)); PUT FILE(DISPLAY) EDIT (':')(A(2))(M_UNIT)(A(22))('UNIT PRICE :')(A(14)); DO KI=1 TO 4; IF KI¬=1 THEN PUT FILE(DISPLAY) LIST (' '); PUT FILE(DISPLAY)EDIT (M_UNITPRICE(KI))(P'Z9V.99'); END; PUT FILE(DISPLAY) EDIT('QTY ON HAND :')(A(15))(ON_HAND)(P'ZZZZZZ9'); PUT FILE(DISPLAY) EDIT (B9)(A(15))('VALUE')(A(13))(':')(A(2)); PUT FILE(DISPLAY) EDIT (VALUE)(P'$$$$$$9V.99')(B9)(A(12)); PUT FILE(DISPLAY) EDIT ('LOCATION : STORE')(A(20))(I)(P'ZZ9'); PUT FILE(DISPLAY) LIST (B9,' REORDER LEVEL: 1000'); GOTO RESET; PLAY1: ANS=SUBSTR(W_AREA3,6,1); MR=ANS; VALUE=M_BALANCE*0.4; NO=NO+1; KI=31-SINB(NO); ORDER=M_BALANCE-5000; RATING='A'; IF MR>3 THEN RATING='B'; IF MR>6 THEN RATING='C'; PUT FILE(DISPLAY) SKIP EDIT ('ACCOUNT NO. :')(A(18))(CACCT_NO)(A(19)); PUT FILE(DISPLAY) EDIT('NAME')(A(16))(':')(A(2))(SUBSTR(M_NAME(1),1,SINA(NO))) (A(19)); IF SINB(NO)¬=1 THEN PUT FILE(DISPLAY) EDIT (' ')(A(18)) (SUBSTR(M_NAME(1),SINB(NO),KI))(A(19)); PUT FILE(DISPLAY) EDIT ('RATING')(A(16)); PUT FILE(DISPLAY) EDIT (':')(A(2))(RATING)(A(19))('AMOUNT DUE')(A(16)); PUT FILE(DISPLAY) EDIT (':')(A(2))(ORDER)(P'$$$$$$$9V.99')(B9)(A(8)); PUT FILE(DISPLAY) EDIT ('LAST MNTHS ORDER:')(A(18))(VALUE)(P'$$$$$$$9V.99'); PUT FILE(DISPLAY) EDIT (B9)(A(8))('YEAR TO DATE :')(A(18)); PUT FILE(DISPLAY) EDIT (M_BALANCE)(P'$$$$$$$9V.99')(B4)(A(4)); PUT FILE(DISPLAY) LIST (' SALESMAN : SHIH WEI SHENG'); RESET: GET SKIP LIST (ANS);R=0; GOTO BBB; SEARCH: IF VERIFY(W_AREA3,'0123456789')=0 THEN GOTO ERR1; ORDER=0; DO I=1 TO 5; RATING=SUBSTR(W_AREA3,I,1); MR=RATING; ORDER=ORDER+(MR*I); END; RATING=SUBSTR(W_AREA3,6,1); VALUE=RATING; ORDER=ORDER+VALUE; VA=ORDER/10; RRM=ORDER-(VA*10); IF RRM¬=0 THEN GOTO ERR1; YY=SUBSTR(W_AREA3,4,2); MM=SUBSTR(W_AREA3,2,1); ORDER=YY; VALUE=MM; NO=(10*(VALUE-1))+(ORDER/5)-2; C3=NO+1; IF NO>=40 THEN GOTO ERR1; UNSPEC(CLENTMA)=NO; READ FILE(CLENTMA) INTO (CLENTMAS_REC); IF W_AREA3=CACCT_NO & R=1 THEN GOTO PLAY1; IF W_AREA3¬=CACCT_NO THEN GOTO ERR1; PUT SKIP LIST(B10,M_NAME(1),BLANK20,B10,' ',W_AREA3); PUT SKIP;PUT SKIP LIST (B10,M_NAME(2)); PUT SKIP LIST(B10,M_NAME(3),BLANK20); PUT EDIT(B10)(A(11))(MONTH)(A(4))(DAY)(P'99')(',')(A(2))(YEAR)(P'99'); PUT SKIP EDIT(B10)(A(9))(M_NAME(4))(A(31))(BLANK20)(A(20))(B10)(A(10)); PUT EDIT (INV_NO)(P'99999'); PUT SKIP(7); YY=SUBSTR(CACCT_NO,2,1); W_AREA2=YY; CCC: PUT FILE(DISPLAY) SKIP; ASK3: PUT FILE(DISPLAY) LIST('STOCK NUMBER: '); GET SKIP LIST(W_AREA5); ANS=SUBSTR(W_AREA5,1,1); IF ANS='E' THEN GOTO EOI;X=W_AREA5; GOTO SEARCH2; ERR2: PUT FILE(DISPLAY) SKIP EDIT('**INVALID STOCK NUMBER!! :')(A(28)) (W_AREA5)(A(9))(MESS)(A(14)); GO TO ASK3; SEARCH2: IF VERIFY(W_AREA5,'0123456789')=0 THEN GOTO ERR2; ORDER=0; DO II=1 TO 5; RATING=SUBSTR(W_AREA5,II,1); MR=RATING; ORDER=ORDER+(MR*II);END; RATING=SUBSTR(W_AREA5,6,1); VALUE=RATING; ORDER=ORDER+VALUE; VALUE=ORDER/10; RRM=ORDER-(VALUE*10); IF RRM¬=0 THEN GOTO ERR2; YY=SUBSTR(W_AREA5,4,2); NO=YY; IF NO>41 THEN GOTO ERR2; UNSPEC(STOCKFL)=NO-1; READ FILE(STOCKFL) INTO (STOCKMAS_REC); IF W_AREA5=M_STOCKNO & R=3 THEN GOTO PLAY;IF W_AREA5¬=M_STOCKNO THEN GOTO ERR2; PUT SKIP EDIT(M_STOCKNO)(A(7))(' ')(A(2))(M_DESCRIPTION)(A(31)); PUT EDIT(' ')(A(4))(M_UNIT)(A(7))(' ')(A(3)); PUT EDIT(M_UNITPRICE(W_AREA2))(P'Z9V.99'); PUT FILE(DISPLAY) SKIP; CH_QTY: PUT FILE(DISPLAY) LIST('QUANTITY: '); GET SKIP LIST(QTY); IF QTY>ON_HAND THEN GO TO REJECT; PUT EDIT(QTY)(P'ZZZZZ9');AMOUNT=M_UNITPRICE(W_AREA2)*QTY; PUT EDIT(' ')(A(2))(AMOUNT)(P'ZZZZZZ9V.99'); TOTAL=TOTAL+AMOUNT; LINE=LINE-1; IF QTY=0 THEN GO TO CCC; ON_HAND=ON_HAND-QTY; REWRITE FILE(STOCKFL) FROM (STOCKMAS_REC); SUBSTR(ARR,1,6)=W_AREA5; SUBSTR(ARR,7,5)=INV_NOööB4; SUBSTR(ARR,12,5)=QTYööB9; DUM=AMOUNT; SUBSTR(ARR,17,9)=DUMööB9; WRITE FILE (TRANFL2) FROM (TRAN); GOTO CCC; REJECT: PUT FILE(DISPLAY) SKIP EDIT ('**NOT ENOUGH STOCK FOR:')(A(24))(QTY) (P'ZZZZ9')('!!')(A(8)); PUT FILE(DISPLAY) EDIT ('**MAX STOCK AUAILABLE :')(A(23))(ON_HAND)(P'ZZZZZ9'); PUT FILE(DISPLAY) EDIT (' ')(A(8))(MESS)(A(14)); GOTO CH_QTY; EOI: LINE=LINE-1; PUT SKIP(LINE); PUT SKIP LIST(BLANK20,BLANK20,BLANK20,' '); PUT EDIT(TOTAL)(P'ZZZZZZ9V.99'); INV_TOTAL=INV_TOTAL+TOTAL; PUT SKIP(10); INV_NO=INV_NO+1; M_BALANCE=M_BALANCE+TOTAL; REWRITE FILE(CLENTMA) FROM (CLENTMAS_REC); SUBSTR(ARR,1,6)=W_AREA3; DUM=INV_NO-1; SUBSTR(ARR,7,5)=DUMööB4;SUBSTR(ARR,12,2)=C3ööB4; DUM=TOTAL; SUBSTR(ARR,17,9)=DUMööB9; WRITE FILE(TRANFL2) FROM (TRAN); GO TO NEW_INV; EOJ: I=1; PUT FILE(DISPLAY) SKIP LIST(MES2); GET SKIP LIST(ANS); PUT SKIP LIST(BLANK20,MES3,' '); PUT EDIT(MONTH)(A(4))(DAY)(P'99')(YEAR)(P'Z99'); PUT SKIP(3) LIST(BLANK20,MES4); PUT EDIT (' ')(A(5))(INIT_INV)(P'999999'); INV_NO=INV_NO-1; PUT SKIP LIST(BLANK20,'LAST INVOICE NUMBER '); PUT EDIT(INV_NO)(P'999999'); INV_NO=INV_NO-INIT_INV+1; PUT SKIP EDIT(B9)(A(19))('TOTAL INVOICE PRINTED')(A(29))(INV_NO)(P'ZZZZ9'); PUT SKIP LIST(BLANK20,MES5); PUT EDIT(INV_TOTAL)(P'ZZZZZZ9V.99'); ARR='999999'; WRITE FILE(TRANFL2) FROM (TRAN); CLOSE TRANFL2; ZZZZ: END;