DataMuseum.dk

Presents historical artifacts from the history of:

Q1 computer

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Q1 computer

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦f9fed4076⟧ Q1_Text, reclen=79

    Length: 13509 (0x34c5)
    Types: Q1_Text, reclen=79
    Notes: q1file
    Names: »VINVOICE«

Derivation

└─⟦934333717⟧ Bits:30008597 DDMQ1-0029_Demonstration_Disk_SOURCE_Single_Density_Sept_77
    └─⟦this⟧ »VINVOICE« 

Text

/**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;