1
0
mirror of https://github.com/retro-software/B5500-software.git synced 2026-03-02 17:44:40 +00:00
Files
Paul Kimpel 2c72f7fd1d Commit CUBE Library version 13 of February 1972.
1. Commit library tape images, directories, and extracted text files.
2. Commit additional utilities under Unisys-Emode-Tools.
2018-05-27 11:24:23 -07:00

391 lines
31 KiB
Plaintext

BEGIN 00000100
COMMENT CUBE LIBRARY NUMBER IS H500011. THE PROGRAM NAME IS 00000200
"ECONSIM/TTY". THIS VERSION DATED 5/3/68; 00000300
INTEGER I,L,M,N,QUAR,U,K1,K3,K4,K; 00000400
INTEGER STA,NTEAMS,NCHAR,FF,II; 00000500
ALPHA AAA1,AAA2; 00000600
ALPHA IDNAME,FIRSTQ,ID2; 00000700
FILE IN ES1 DISK SERIAL "FIRST" "ECSIM" (2,10,30); 00000800
FILE ES2 DISK SERIAL "AAAAAAA" "ECSIM" (2,10,30); 00000900
FILE OUT ES3 DISK SERIAL [1:13] "AAAAAAA" "ECSIM" (2,10,30,SAVE 1);00001000
ARRAY TRA[0:9]; 00001100
ALPHA FILE IN TTIN 14(2,8); 00001200
ALPHA FILE OUT TTOUT 14(2,8); 00001300
REAL Q,ZA,PA,DA,COUNT,YD,JSTAR; 00001400
LABEL DUNN; 00001500
DEFINE CARD=TTIN(STA)#,PRINT=TTOUT(STA)#; 00001600
SWITCH FILE SFES~ES1,ES2,ES3; 00001700
BOOLEAN PCS; 00001800
ARRAY B[1:30],Y[1:40],A[ 1:4,1:10],R[1:4,1:10],J,C,T,W,P,PI, 00001900
DELC,DIVIDENDS,D,Z,CASH[1:10]; 00002000
LIST DETAILA (I,FOR U ~ 1 STEP 1 UNTIL 11 DO B[U]); 00002100
LIST MASTER (N,QUAR,Q,FOR U ~ 1 STEP 1 UNTIL 40 DO Y[U]), 00002200
LINE1 (I,QUAR),LINE2 (K1),LINE3 (B[2]), LINE4 (K3), 00002300
DETAILB (I,FOR U ~ 1 STEP 1 UNTIL 6 DO B[U]); 00002400
LIST LINE5 (K4),LINE7 (B[5]),LINE9 (B[6]), LINE10(B[7]), 00002500
LINE11 (B[8]),LINE12(B[9]),LINE13(B[10]),LINE14(B[11]); 00002600
LIST LINE15 (B[12],B[13]),LINE16(B[14]),LINE17(B[15]), 00002700
LINE18 (B[16]),LINE19(B[17]),LINE20(B[18]),LINE22(B[19]);00002800
LIST LINE24 (B[20]),LINE25(B[21]),LINE26(B[22]), 00002900
LINE27 (B[23],B[24]),LINE28(B[25]),LINE31(B[26]); 00003000
LIST LINE32 (B[27]),LINE33(B[28]),LINE34(B[29]); 00003100
LIST S1 (I),S2(CASH[I]),S3(T[I]),S4(C[I]), 00003200
S5 (CASH[I]+T[I]+C[I]),CD1(I,A[2,I],A[3,I],A[4,I], 00003300
R[2,I],R[3,I],R[4,I],T[I],C[I],J[I],W[I],CASH[I]); 00003400
LIST CRD1 (N,QUAR,Q/N), 00003500
CRD2 (Y[I],Y[I+1],Y[I+2],Y[I+3],Y[I+4],Y[I+5],Y[I+6], 00003600
Y[I+7],Y[I+8],Y[I+9],Y[I+10],Y[I+11],Y[I+12],Y[I+13], 00003700
Y[I+14],Y[I+15],Y[I+16],Y[I+17],Y[I+18],Y[I+19] ); 00003800
FORMAT IN IN1 (2I2,I8/20I4/20I4), 00003900
INA (I2,6I7,I9,2I8,I2,I9), 00004000
INB(X8,I2,X1,F5.2,X1,4(I7,X1),I7); 00004100
FORMAT IN F1(X8,A3), F2(X8,A1,A6), F3(X8,I1); 00004200
FORMAT OUT TITLE(X15,"{!O P E R A T I N G S T A T E M E N T{!~"), 00004300
REPORT1(X14,"{!FIRM",I4,X13,"PERIOD",I4,"{!~"), 00004400
REPORT2(X14,"{!SALES VOLUME",X20,I10,"{!~"), 00004500
REPORT3(X14,"{!PERCENT SHARE OF INDUSTRY SALES"F11.2, 00004600
"{!~"), 00004700
REPORT4(X14,"CURRENT INVENTORY QUANTITY", I10,"{!~"), 00004800
REPORT5(X14,"PRODUCTION CPY. NEXT QUARTER", I8 ,"{!~"),00004900
REPORT6(X26,"{!PROFIT AND LOSS!{~"), 00005000
REPORT7(X8,"!I N C O M E. SALES REVENUE",X17,"$",F9.0, 00005100
"~"), 00005200
REPORT8(X9,"{!!EXPENSE{!~"), 00005300
REPORT9(X11,"MANUFACTURING COSTS",X10,"$",F9.0,"{!~"), 00005400
REPORT10(X11,"REDUCTION IN INVENTORY VALUE",X2,F9.0, 00005500
"{!~"), 00005600
REPORT11(X11,"ADMINISTRATION AND SELLING",X4,F9.0,"{!~"),00005700
REPORT12(X11,"ADVERTISING",X19,F9.0,"{!~"), 00005800
REPORT13(X11,"RESEARCH AND DEVELOPMENT",X6 ,F9.0,"{!~"), 00005900
REPORT14(X11,"DEPRECIATION",X18,F9.0,"{!~"), 00006000
REPORT15(X11,"MISCELLANEOUS",X17,F9.0,X2,"$",F9.0,"~"), 00006100
REPORT16(X9,"PROFIT BEFORE INCOME TAX",X19,"$",F9.0"~"), 00006200
REPORT17(X9,"ADDITION TO INCOME TAX FUND",X16,"$",F9.0, 00006300
"~"), 00006400
REPORT18( X9,"NET PROFIT AFTER INCOME TAX",X16,"$", 00006500
F9.0,"~"), 00006600
REPORT19(X9,"DIVIDENDS PAID",X29"$",F9.0,"~"), 00006700
REPORT20(X9,"ADDITIONS TO OWNERS EQUITY",X17,"$",F9.0, 00006800
"~"); 00006900
FORMAT OUT REPORT21( X10,"RECEIPTS AND DISBURSEMENTS{!!!~"), 00007000
REPORT22(X9,"RECEIPTS. SALES REVENUE",X20"$", 00007100
F9.0,"~"), 00007200
REPORT23(X9,"D I S B U R S E M E N T S{!~"); 00007300
FORMAT OUT REPORT24(X9,"CASH EXPENSE",X19,"$",F9.0,"{!~"), 00007400
REPORT25(X9,"ADDITION TO INCOME TAX FUND",X5,F9.0,"{!~"),00007500
REPORT26(X11,"DIVIDENDS PAID",X16,F9.0,"{!~"); 00007600
FORMAT OUT REPORT27(X11,"INVESTMENT IN PLANT",X11,F9.0,X2,"$",F9.0, 00007700
"~"), 00007800
REPORT28(X9,"ADDITIONS TO CASH ASSETS",X19,"$",F9.0"~"), 00007900
REPORT29("!",X15,"FINANCIAL CONDITION{!!~"); 00008000
FORMAT OUT REPORT30(X9,"ASSETS{!~"), 00008100
REPORT31(X11,"NET CASH ASSETS",X26,"$",F9.0,"~"), 00008200
REPORT32(X11,"INVENTORY VALUE",X26,"$",F9.0,"~"); 00008300
FORMAT OUT REPORT33(X11,"PLANT, NET BOOK VALUE",X20,"$",F9.0,"~"), 00008400
REPORT34(X9,"O W N E R S E Q U I T Y",X19,"$",F9.0"~"), 00008500
F101(X8,"{!40 QUARTERS HAVE BEEN RUN. THE GAME IS OVER~");00008600
FORMAT OUT FAG(X8,"{!YOU DID NOT TYPE THE CORRECT RESPONSE.", 00008700
" TRY AGAIN{!~"), 00008800
FLX(X8,"{!REQUESTED FILE NOT ON THE DISK.{!~"), 00008900
FLY(X8,"CHECK YOUR SPELLING AND TRY AGAIN{!~"), 00009000
FPNO(X8,"{!NOTIFY COMP OPER FILE FIRST/ECSIM NOT ON DISK~"), 00009100
FPMO(X8,"{!THE PROGRAM MUST BE RESTARTED{!~"), 00009200
FENT(X8,"{!TT CC.CC NNNNNNN AAAAAAA RRRRRRR ", 00009300
"MMMMMMM DDDDDDD{!~"), 00009400
FENTER(X8,"{!~"), 00009500
FSTART(X8,"{!THIS IS THE START OF THE ECONOMIC SIMULATOR~"), 00009600
GSTART(X8,"{!IF YOU ARE STARTING WITH QUARTER ONE TYPE YES~"), 00009700
HSTART(X8,"{!IF NOT TYPE NO{!~"), 00009800
FPN(X8,"{!ENTER YOUR ASSIGNED PROGRAM NAME{!~"), 00009900
FNT(X8,"{!NUMBER OF TEAMS = ~"); 00010000
FORMAT OUT SUM1 (X34,"FIRM",I4,"{!~"); 00010100
FORMAT OUT MS1 (2I2,I8,X68), 00010200
MS2 (20I4); 00010300
FORMAT OUT PUN1 (I2,6I7,I9,2I8,I2,I9); 00010400
LABEL LFQ,LOQ,L1,L2; 00010500
ARRAY TBUF[0:7],SEA[0:8]; 00010600
INTEGER STREAM PROCEDURE FINDGP(A); 00010700
BEGIN 00010800
LABEL FOUND; 00010900
SI~A; 60(IF SC="~" THEN JUMP OUT 1 TO FOUND; SI~SI+1; 00011000
TALLY~TALLY+1); 00011100
FOUND: FINDGP~TALLY; 00011200
END OF FINDGP; 00011300
STA~STATUS(TBUF[*]); 00011400
STA.[9:9]~TBUF[0].[9:9]; 00011500
WRITE(TTOUT(STA),FSTART); WRITE(PRINT,GSTART); 00011600
WRITE(TTOUT(STA),HSTART); 00011700
L1: READ(TTIN(STA),F1,FIRSTQ); 00011800
IF FIRSTQ="YES" THEN 00011900
GO TO LFQ; 00012000
IF FIRSTQ.[30:12]="NO" THEN GO TO LOQ; 00012100
WRITE(TTOUT(STA),FAG); 00012200
GO TO L1; 00012300
LFQ: WRITE(TTOUT(STA),FNT); 00012400
READ(TTIN(STA),F3,NTEAMS); 00012500
LOQ: WRITE(TTOUT(STA),FPN); 00012600
L2: READ(TTIN(STA),8,TBUF[*]); 00012700
NCHAR~FINDGP(TBUF[1]); 00012800
READ(TBUF[*],F2 , AAA1,AAA2); 00012900
IDNAME.[6:6]~AAA1.[42:6]; IDNAME.[12:36]~AAA2.[12:36]; 00013000
IF NCHAR<7 THEN 00013100
BEGIN 00013200
IF IDNAME.[12:6]="~" THEN IDNAME.[12:36]~" " ELSE 00013300
IF IDNAME.[18:6]="~" THEN IDNAME.[18:30]~" " ELSE 00013400
IF IDNAME.[24:6]="~" THEN IDNAME.[24:24]~" " ELSE 00013500
IF IDNAME.[30:6]="~" THEN IDNAME.[30:18]~" " ELSE 00013600
IF IDNAME.[36:6]="~" THEN IDNAME.[36:12]~" " ELSE 00013700
IF IDNAME.[42:6]="~" THEN IDNAME.[42:6]~" "; 00013800
END; 00013900
FILL ES2 WITH IDNAME,*; 00014000
FILL ES3 WITH IDNAME,*; 00014100
IF FIRSTQ="YES" THEN 00014200
BEGIN 00014300
SEARCH(ES1,SEA[*]); 00014400
IF SEA[0]<2 THEN 00014500
BEGIN 00014600
WRITE(PRINT,FPNO); 00014700
WRITE(PRINT,FPMO); 00014800
GO TO DUNN; 00014900
END; 00015000
END ELSE 00015100
BEGIN 00015200
SEARCH(ES3,SEA[*]); 00015300
IF SEA[0]<2 THEN 00015400
BEGIN 00015500
WRITE(PRINT,FLX); 00015600
WRITE(PRINT,FLY); 00015700
GO TO L2; 00015800
END; 00015900
END; 00016000
BEGIN 00016100
LABEL LOOP,START,RD,BOTTOM,COMP,BLK1,L1,L2,ND,RUN,PCH; 00016200
IF FIRSTQ="YES" THEN NCHAR~0 ELSE NCHAR~1; 00016300
RUN: READ(SFES[NCHAR],IN1,MASTER); 00016400
IF FIRSTQ="YES" THEN N~NTEAMS; 00016500
Q ~ Q|N; 00016600
FOR M ~ 1 STEP 1 UNTIL N DO 00016700
BEGIN 00016800
LOOP: READ(SFES[NCHAR],INA,DETAILA); 00016900
IF I ! M THEN 00017000
BEGIN 00017100
GO TO LOOP; 00017200
END; 00017300
FOR U ~ 1 STEP 1 UNTIL 3 DO 00017400
BEGIN 00017500
A [U+1,I] ~ B[U]; 00017600
R [U+1,I] ~ B[U+3]; 00017700
END; 00017800
T[I] ~ B[7]; C[I] ~ B[8]; 00017900
J[I] ~ B[9]; W[I] ~ B[10]; 00018000
CASH[I] ~ B[11]; 00018100
END; 00018200
IF FIRSTQ!"YES" THEN FF~1 ELSE FF~3; 00018300
START: 00018400
IF FIRSTQ="YES" AND FF!1 THEN 00018500
BEGIN 00018600
FF~2; GO TO PCH; 00018700
END; 00018800
IF PCS THEN GO TO PCH; 00018900
WRITE(TTOUT(STA),FENT); 00019000
FOR M ~ 1 STEP 1 UNTIL N DO 00019100
BEGIN 00019200
IF W[M] = 1 THEN GO TO BOTTOM; 00019300
WRITE(TTOUT(STA),FENTER); 00019400
RD: READ (CARD,INB,DETAILB); 00019500
IF I ! M THEN 00019600
BEGIN 00019700
GO TO RD; 00019800
END; 00019900
P[I] ~ B[1]; PI[I] ~ B[2]; 00020000
A[1,I] ~ B[3]; R[1,I] ~ B[4]; 00020100
DELC[I] ~ B[5]; 00020200
DIVIDENDS [I] ~ B[6]; 00020300
BOTTOM: 00020400
END; 00020500
FOR I~0 STEP 1 UNTIL 4 DO WRITE(PRINT,FENTER); 00020600
COMP: ZA ~ PA ~ DA ~ COUNT ~ 0; 00020700
FOR I ~ 1 STEP 1 UNTIL N DO 00020800
BEGIN 00020900
IF W[I] = 1 THEN GO TO ND; 00021000
Z[I] ~ 2@-6|(1.00|(.18|A[1,I]+.12|A[2,I]+.06|A[3,I] 00021100
+.03|A[4,I])+ 00021200
.06|R[1,I]+.12|R[2,I]+.25|R[3,I]+.18|R[4,I]); 00021300
ZA ~ ZA+Z[I];PA ~ PA+1/P[I]; 00021400
D[I] ~3|Z[I]|(10-P[I])/(2|(2|Z[I]+1)); 00021500
DA~ DA+D[I]; COUNT~ COUNT+1; 00021600
END; 00021700
PA~ COUNT/PA; 00021800
YD~ (3|ZA|(10-PA)/(2|(2|ZA+1)))|4@3|Y[QUAR]; 00021900
Q ~ .5|(Q+(YD|COUNT/4)); 00022000
FOR I ~ 1 STEP 1 UNTIL N DO 00022100
BEGIN 00022200
B[2] ~ D[I]/DA; 00022300
JSTAR ~ J[I]+PI[I]; 00022400
IF B[2]|Q < JSTAR THEN 00022500
BEGIN 00022600
B[1]~B[2]|Q;GO TO BLK1; 00022700
END; 00022800
B[1]~JSTAR; 00022900
BLK1: B[3]~JSTAR-B[1]; 00023000
B[28]~.975|C[I]+DELC[I]; 00023100
B[5] ~P[I]|B[1]; 00023200
B[4] ~.05|B[28]; 00023300
K1 ~B[1];K3 ~B[3];K4 ~B[4]; 00023400
IF PI[I]< .05|C[I] THEN 00023500
BEGIN 00023600
B[6]~3|PI[I];GO TO L1; 00023700
END; 00023800
B[6]~ PI[I]|(2+PI[I]/B[4]); 00023900
L1: IF J[I] < B[1] THEN 00024000
BEGIN 00024100
B[27]~B[6]|(1-(B[1]-J[I])/PI[I]);GO TO L2; 00024200
END; 00024300
B[27]~B[6]+(T[I]|(J[I]-B[1]))/J[I]; 00024400
L2: B[7]~T[I]-B[27]; 00024500
B[8]~ 200000+.035|B[28]; 00024600
B[9]~ A[1,I]; 00024700
B[10]~R[1,I]; 00024800
B[11]~.025|C[I]; 00024900
B[12]~.05|B[27]; 00025000
B[13]~0; 00025100
FOR K ~6 STEP 1 UNTIL 12 DO 00025200
B[13] ~ B[13]+B[K]; 00025300
B[14] ~ B[5]-B[13]; 00025400
B[15] ~ .52|B[14]; 00025500
B[16] ~ B[14]-B[15]; 00025600
B[17] ~ DIVIDENDS[I]; 00025700
B[18]~ B[16]-B[17]; 00025800
B[19]~ B[5]; 00025900
B[20]~ B[13]-B[7]-B[11]; 00026000
B[21]~ B[15]; 00026100
B[22]~ B[17]; 00026200
B[23]~ DELC[I]; 00026300
B[24]~ 0; 00026400
FOR K ~ 20 STEP 1 UNTIL 23 DO 00026500
B[24] ~ B[24]+B[K]; 00026600
B[25] ~ B[5]-B[24]; 00026700
B[26] ~ CASH[I]+B[25]; 00026800
B[29] ~ B[28]+B[27]+B[26]; 00026900
B[2] ~ B[2]|100.00; 00027000
FOR II~1 STEP 1 UNTIL 5 DO WRITE(PRINT,FENTER); 00027100
WRITE (PRINT, TITLE); 00027200
WRITE (PRINT, REPORT1,LINE1); 00027300
WRITE (PRINT, REPORT2,LINE2); 00027400
WRITE (PRINT,REPORT3,LINE3); 00027500
WRITE (PRINT,REPORT4,LINE4); 00027600
WRITE (PRINT, REPORT5,LINE5); 00027700
WRITE (PRINT, REPORT6); 00027800
WRITE (PRINT, REPORT7,LINE7); 00027900
WRITE (PRINT,REPORT8); 00028000
WRITE (PRINT,REPORT9,LINE9); 00028100
WRITE (PRINT,REPORT10,LINE10); 00028200
WRITE (PRINT,REPORT11,LINE11); 00028300
WRITE (PRINT,REPORT12,LINE12); 00028400
WRITE (PRINT,REPORT13,LINE13); 00028500
WRITE (PRINT,REPORT14,LINE14); 00028600
WRITE (PRINT, REPORT15,LINE15); 00028700
WRITE(PRINT,FENTER); 00028800
WRITE (PRINT,REPORT16,LINE16); 00028900
WRITE(PRINT,FENTER); 00029000
WRITE (PRINT,REPORT17,LINE17); 00029100
WRITE(PRINT,FENTER); 00029200
WRITE (PRINT, REPORT18,LINE18); 00029300
WRITE(PRINT,FENTER); 00029400
WRITE(PRINT,FENTER); 00029500
WRITE (PRINT,REPORT19,LINE19); 00029600
WRITE(PRINT,FENTER); 00029700
WRITE (PRINT,REPORT20,LINE20); 00029800
WRITE(PRINT,FENTER); 00029900
WRITE(PRINT,FENTER); 00030000
WRITE (PRINT,REPORT21); 00030100
WRITE (PRINT, REPORT22,LINE22); 00030200
WRITE(PRINT,FENTER); 00030300
WRITE(PRINT,FENTER); 00030400
WRITE (PRINT,REPORT23); 00030500
WRITE (PRINT,REPORT24,LINE24); 00030600
WRITE (PRINT,REPORT25,LINE25); 00030700
WRITE (PRINT,REPORT26,LINE26); 00030800
WRITE (PRINT, REPORT27,LINE27); 00030900
WRITE(PRINT,FENTER); 00031000
WRITE (PRINT, REPORT28,LINE28); 00031100
WRITE(PRINT,FENTER); 00031200
WRITE(PRINT,FENTER); 00031300
WRITE (PRINT, REPORT29); 00031400
WRITE (PRINT,REPORT30); 00031500
WRITE (PRINT,REPORT31,LINE31); 00031600
WRITE(PRINT,FENTER); 00031700
WRITE (PRINT,REPORT32,LINE32); 00031800
WRITE(PRINT,FENTER); 00031900
WRITE (PRINT, REPORT33,LINE33); 00032000
WRITE(PRINT,FENTER); 00032100
WRITE(PRINT,FENTER); 00032200
WRITE (PRINT,REPORT34,LINE34); 00032300
WRITE(PRINT,FENTER); 00032400
WRITE(PRINT,FENTER); 00032500
WRITE(PRINT,FENTER); 00032600
FOR K ~ 4 STEP -1 UNTIL 2 DO 00032700
BEGIN 00032800
R[K,I] ~ R[K-1,I]; 00032900
A[K,I] ~ A[K-1,I]; 00033000
END; 00033100
J[I] ~ B[3]; 00033200
C[I] ~ B[28]; 00033300
T[I] ~ B[27]; 00033400
CASH[I] ~ B[26]; 00033500
END; 00033600
ND: I~QUAR/4; 00033700
IF 4|I = QUAR THEN 00033800
BEGIN 00033900
FOR L ~ 1 STEP 1 UNTIL N DO 00034000
BEGIN 00034100
FOR II~1 STEP 1 UNTIL 8 DO WRITE(PRINT,FENTER); 00034200
WRITE (PRINT,TITLE); 00034300
FOR I ~ 1 STEP 1 UNTIL N DO 00034400
BEGIN 00034500
WRITE(PRINT,FENTER); 00034600
WRITE (PRINT,SUM1,S1); 00034700
WRITE (PRINT,REPORT31,S2); 00034800
WRITE(PRINT,FENTER); 00034900
WRITE (PRINT,REPORT32,S3); 00035000
WRITE(PRINT,FENTER); 00035100
WRITE (PRINT, REPORT33,S4); 00035200
WRITE(PRINT,FENTER); 00035300
WRITE(PRINT,FENTER); 00035400
WRITE (PRINT, REPORT34,S5); 00035500
WRITE(PRINT,FENTER); 00035600
WRITE(PRINT,FENTER); 00035700
END 00035800
END 00035900
END; 00036000
IF QUAR = 40 THEN 00036100
BEGIN 00036200
IF NTEAMS=40 THEN 00036300
BEGIN 00036400
WRITE(TTOUT(STA),F101); 00036500
GO TO DUNN; 00036600
END; 00036700
NTEAMS~40; 00036800
PCS~FALSE; 00036900
GO TO ND; 00037000
END; 00037100
PCS~TRUE; 00037200
IF FIRSTQ!"YES" THEN REWIND (ES2); 00037300
QUAR ~ QUAR+1; GO TO START; 00037400
PCH: 00037500
WRITE(SFES[FF],MS1,CRD1); 00037600
FOR I ~ 1 STEP 20 UNTIL 40 DO 00037700
WRITE (SFES[FF],MS2,CRD2); 00037800
FOR I ~ 1 STEP 1 UNTIL N DO 00037900
WRITE(SFES[FF],PUN1,CD1); 00038000
IF FIRSTQ="YES" AND FF=2 THEN 00038100
BEGIN 00038200
FF~1; 00038300
LOCK(ES3,SAVE); 00038400
GO TO START; 00038500
END; 00038600
GO TO DUNN; 00038700
END; 00038800
DUNN: 00038900
END. 00039000