|
|
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: 11929 (0x2e99)
Types: Q1_Text, reclen=79
Notes: q1file
Names: »INVO«
└─⟦dbbef6eca⟧ Bits:30008596 DDMQ1-0028_DEMONSTRATION_DISK_LMC_SOURCE_Sept_77
└─⟦this⟧ »INVO«
DCL 1 ORDER, /*VERSION 9/19/77*/
2 ORDERDATE CHAR(6),
2 INV# CHAR(5),
2 CUS# CHAR(15),
2 SALESMEN# CHAR(6),
2 SOLDTO FIXED(5),
2 SOLDTONAME CHAR(30),
2 SOLDTOADD1 CHAR(25),
2 SOLDTOADD2 CHAR(25),
2 SHIPTO FIXED(5),
2 SHIPTONAME CHAR(30),
2 SHIPTOADD1 CHAR(25),
2 SHIPTOADD2 CHAR(25),
2 USER FIXED(5),
2 USERNAME CHAR(30),
2 PART# CHAR(8),
2 DES CHAR(25),
2 ORDERQTY FIXED(6),
2 DELIVER CHAR(6),
2 JOB CHAR(1),
2 INTER CHAR(1),
2 PROOF CHAR(1),
2 PRTO CHAR(25),
2 TERM CHAR(1),
2 COMMENT CHAR(25),
2 OVERPRICE FIXED(5,2),
2 DISPRICE FIXED(5,2),
2 RUNPRICE FIXED(5,2),
2 DISRUN FIXED(5,2),
2 ORUNITQTY BINARY,
2 ORTAX BINARY,
2 BSUP FIXED(1),
2 STARTNUM CHAR(8);
/* COMMENT=ZZZZZ FOR CLOSED ORDER COMMENT=YYYYY FOR BACK ORDER */
DCL 1 TAXST,
2 TAXCODE BINARY,
2 TAXPER FIXED(2),
2 TAXAMOUNT FIXED(9,2);
DCL TAX BINARY,A CHAR(1),CHSOLD FIXED(6,1),BINV# CHAR(5),BTERM CHAR(1);
DCL INORDERDATE CHAR(6),GTOTAL FIXED(11,2),DPART# CHAR(8),BCOMMENT CHAR(25);
DCL SQ FIXED(6),CS CHAR(1),BSQ FIXED(6),NEWDISCMESG CHAR(1),DISCDATE CHAR(8);
DCL DISCOUNT FIXED(4,2),TAXCAL FIXED(11,2),KQ FIXED(12,4);DCL BORDATE CHAR(8);
DCL MMM CHAR(3),DDD CHAR(2),YYY CHAR(2),MM CHAR(2),DD CHAR(2),YY CHAR(2);
DCL COFILE FILE,TAXFILE FILE;DCL TAXREW FIXED(1);
BP: PROCEDURE;CALL OUTPUT(1,2);CALL OUTPUT(1,6);RETURN;END;
OPEN COFILE;OPEN TAXFILE;
AGDATE:PUT FILE(D)SKIP EDIT('ENTER TODAY''S DATE : ')(A(22));
GET SKIP LIST(ORDERDATE);INORDERDATE=ORDERDATE;
MM=SUBSTR(ORDERDATE,1,2);DD=SUBSTR(ORDERDATE,3,2);
YY=SUBSTR(ORDERDATE,5,2);BORDATE=MM CAT '/' CAT DD CAT '/' CAT YY;
PUT FILE(D)LIST(BORDATE,' ? ');GET SKIP LIST(A);IF A¬='Y'THEN GOTO AGDATE;
INVOICE:N=13;GTOTAL=0;PUT FILE(D)SKIP LIST('ENTER ORDER # : ');
GET SKIP LIST(INV#);IF INV#='END ' THEN STOP;
PUT FILE(D)SKIP LIST(INV#,' ? ');GET SKIP LIST(A);IF A¬='Y'THEN GOTO INVOICE;
ON ERROR GOTO MESG2;
READ KEY(INV#)FILE(COFILE)INTO(ORDER)KEYTO(INV#);CHSOLD=SOLDTO;TAX=ORTAX;
PUT SKIP EDIT(SOLDTONAME)(X(6),A(54))(SHIPTONAME)(A(30));
PUT SKIP EDIT(SOLDTOADD1)(X(6),A(54))(SHIPTOADD1)(A(30));
PUT SKIP EDIT(SOLDTOADD2)(X(6),A(54))(SHIPTOADD2)(A(30));
PUT SKIP EDIT('(')(X(6),A(2))(SOLDTO)(P'99999')(' )')(A(47))
('(')(A(2))(SHIPTO)(P'99999')(' )')(A(2));
IF TERM='1'THEN DO;PUT SKIP (4)EDIT('NET 10 EOM')(X(13),A(24));END;
IF TERM='2' THEN DO;PUT SKIP(4) EDIT('3 % 10 EOM')(X(13),A(24));END;
BTERM=TERM;
PUT EDIT(SALESMEN#)(A(12))(CUS#)(A(18))(INV#)(A(5));
IF COMMENT='YYYYY'THEN PUT EDIT('BO')(A(12));ELSE PUT EDIT(' ')(A(12));
ORDERDATE=INORDERDATE;
MM=SUBSTR(ORDERDATE,1,2);DD=SUBSTR(ORDERDATE,3,2);YY=SUBSTR(ORDERDATE,5,2);
BORDATE=MM CAT '/' CAT DD CAT '/' CAT YY;PUT EDIT(BORDATE)(A(8));
PUT SKIP(4);
UNSPEC(COFILE)=UNSPEC(COFILE)-1;
BINV#=INV#;
INVREAD: ON ENDFILE GOTO THINV;
READ FILE(COFILE)INTO(ORDER);IF COMMENT='ZZZZZ' THEN GOTO INVREAD;
CHSOLD=SOLDTO;IF INV#¬=BINV# THEN DO;UNSPEC(COFILE)=UNSPEC(COFILE)-1;
GOTO THINV;END;
IMLN: GOTO SPCH;
SKAG:PUT EDIT(OVERPRICE)(X(6),P'ZZZV.99');
IF OVERPRICE=DISPRICE THEN DO;PUT EDIT(' ')(A(8));
END; IF DISPRICE¬=OVERPRICE THEN DO;NEWDISCMESG='0';
IF DISPRICE/OVERPRICE<.59 THEN NEWDISCMESG='1';
IF DISPRICE/OVERPRICE<.49 THEN NEWDISCMESG='2';OVERPRICE=DISPRICE;
PUT EDIT(DISPRICE)(P'ZZZZV.99',X(1));END;
IF SUBSTR(PART#,1,2)¬='SP' THEN PUT EDIT(ORUNITQTY)(P'ZZZZZ9',X(3));
IF SUBSTR(PART#,1,2)='SP'THEN PUT LIST(' FLAT ');
KQ=SQ*(OVERPRICE/ORUNITQTY);
IF SUBSTR(PART#,1,2)='SP' THEN KQ=SQ*OVERPRICE;
PUT EDIT(KQ)(P'ZZZZV.99');
GTOTAL=GTOTAL+(KQ);
V: IF SUBSTR(PART#,1,2)='SP' THEN DO;IF RUNPRICE¬=0 THEN DO;
PUT SKIP EDIT('RUNNING CHARGE')(X(34),A(27))(RUNPRICE)(P'ZZZV.99');N=N-1;
IF RUNPRICE=DISRUN THEN DO;PUT EDIT (' ')(A(9));END;
IF DISRUN¬=RUNPRICE THEN DO;
PUT EDIT(DISRUN)(P'ZZZZV.99',X(2));END;
PUT EDIT(' M ')(A(8));
PUT EDIT((BSQ/ORUNITQTY)*DISRUN)(P'ZZZZV.99');
GTOTAL=GTOTAL+((BSQ/ORUNITQTY)*DISRUN);
END;END;
IF COMMENT='YYYYY'THEN ORDERQTY=ORDERQTY - SQ;
REWRITE FILE(COFILE)FROM(ORDER);GOTO INVREAD;
SPCH: DPART#=PART#;IF SUBSTR(PART#,1,2)¬='SP' & BSUP ¬=0 THEN DO;
NOCARB: DO I =((BSUP)+1) TO 8;SUBSTR(PART#,I,1)=' ';END;END;
PUT FILE(D)SKIP EDIT(ORDERQTY)(P'ZZZZZ9',X(3))
(PART#)(A(66))('QUANTITY SHIPPED :')(A(18));;
GET SKIP LIST(SQ);PUT SKIP EDIT(SQ)(P'ZZZZZ9')(ORDERQTY)(X(4),P'ZZZZZ9',X(3))
(PART#)(A(10))(DES)(A(27));
NOROLL: PART#=DPART#;
N=N-1;BCOMMENT=COMMENT;COMMENT='ZZZZZ';
IF SQ< ORDERQTY THEN DO;BACKAG: PUT FILE(D)SKIP LIST('BACK ORDER ? ');
GET SKIP LIST(A);IF A='Y' THEN DO;COMMENT='YYYYY';GOTO BACKOK;END;
IF A¬='N' THEN GOTO BACKAG;END;
BACKOK: IF SUBSTR(PART#,1,2)¬='SP' THEN BSQ=SQ;
IMP1: GOTO SKAG;
THINV: IF SUBSTR(INV#,1,1)='P' THEN NEWDISCMESG='0';
IF NEWDISCMESG¬='0'& BTERM='2'THEN DO;
PUT SKIP(2)EDIT('TOTAL FORMS : ')(X(29),A(19));
IF NEWDISCMESG='1'THEN PUT LIST('1000 & OVER');ELSE PUT LIST('3000 & OVER');
PUT SKIP EDIT('MINIMUM : 500 EACH FORM')(X(29),A(32));
PUT SKIP EDIT('SPECIAL DISCOUNT : ')(X(29),A(19));
IF NEWDISCMESG='1'THEN PUT LIST('50%');ELSE PUT LIST('(50+5)%');
N=N-4;END;NEWDISCMESG='0';PUT SKIP(N-2)EDIT(BCOMMENT)(X(29),A(26));
IF BTERM='2'THEN DO;
MMM=MM+101;IF DD>24 THEN MMM=MMM+1;DDD=10;YYY=YY;IF SUBSTR(MMM,2,2)>12 THEN DO;
SUBSTR(MMM,2,2)=SUBSTR(MMM,2,2)-12;
YYY=YYY+1;END;IF SUBSTR(MMM,2,1)='0' THEN SUBSTR(MMM,2,2)=SUBSTR(MMM,3,1);
DISCDATE=SUBSTR(MMM,2,2) CAT '/' CAT DDD CAT '/' CAT YYY;
DISCOUNT=GTOTAL*.03;
PUT SKIP(2)EDIT('HERE''S EXTRA PROFIT FOR YOU!')(X(14),A(41));END;
ELSE PUT SKIP(2)EDIT('')(A(55));
PUT EDIT(GTOTAL)(X(22),P'ZZZ,ZZZ,ZZZV.99');
ON ERROR GOTO MESG4;
READ KEY(TAX)FILE(TAXFILE)INTO(TAXST);
TAXREW=1;
TAXAG:IF BTERM='2' THEN DO;PUT SKIP EDIT(' YOU MAY DEDUCT $')(A(17))
(DISCOUNT)(P'ZZV.99')(' FOR PAYMENT RECEIVED BY ')(A(25))(DISCDATE)(A(8));;
END;ELSE PUT SKIP EDIT('')(A(55));TAXCAL=(GTOTAL*TAXPER)/100;
TAXAMOUNT=TAXAMOUNT+TAXCAL;PUT EDIT(TAXCAL)(X(26),P'ZZZ,ZZZV.99');
PUT FILE(D)SKIP LIST('DELIVERY CHARGE : ');GET SKIP LIST(CHAMOUNT);
PUT SKIP EDIT(CHAMOUNT)(X(81),P'ZZZ,ZZZV.99');GTOTAL=GTOTAL+CHAMOUNT+TAXCAL;
PUT FILE(D)SKIP LIST('OTHER CHARGE : ');GET SKIP LIST(CHAMOUNT);
PUT SKIP EDIT(CHAMOUNT)(X(81),P'ZZZ,ZZZV.99');GTOTAL=GTOTAL+CHAMOUNT;
PUT SKIP EDIT(GTOTAL)(X(77),P'ZZZ,ZZZ,ZZZV.99');GTOTAL=0;
IF TAXREW=0 THEN GOTO PRDEL;
REWRITE FILE(TAXFILE)FROM(TAXST);
PRDEL: PUT SKIP(13);GOTO INVOICE;
MESG2: CALL BP;PUT FILE(D)SKIP LIST('SORRY WRONG INV# ');GET SKIP LIST('');
GOTO INVOICE;
MESG4: CALL BP;PUT FILE(D)SKIP LIST('NO SUCH TAX CODE ! ');GET SKIP LIST('');
PUT FILE(D)SKIP LIST('ENTER TAX % : ');GET SKIP LIST(TAXPER);GOTO TAXAG;
TAXREW=0;
END;