Re: COBOL, Article on new mainframe use (2/3)
From
Scott Lurndal@21:1/5 to
John Levine on Fri Aug 23 17:54:36 2024
[continued from previous message]
5900-EXIT. EXIT.
6000-TRANSFER.
COMPUTE A = Y + RCNTR.
COMPUTE B = X + KCNTR.
MOVE MACOL (A , B) TO MCOL (RCNTR , KCNTR).
6000-EXIT. EXIT.
6500-DISPLAY-MT.
DISPLAY "= = = = = = = = = = = = = = = =".
PERFORM 6600-MINI-DIS THRU 6600-EXIT
VARYING RCNTR FROM 1 BY 1 UNTIL RCNTR > 14.
DISPLAY "= = = = = = = = = = = = = = = =".
6500-EXIT. EXIT.
6600-MINI-DIS.
PERFORM 6700-MINI-MOD THRU 6700-EXIT
VARYING KCNTR FROM 1 BY 1 UNTIL KCNTR > 14.
DISPLAY "=" MD-ROW " =".
6600-EXIT. EXIT.
6700-MINI-MOD.
COMPUTE MOD-CTR = 2 * KCNTR.
MOVE MCOL (RCNTR , KCNTR) TO MD-SUB (MOD-CTR).
6700-EXIT. EXIT.
7000-NAV-CK.
IF SRCTR < 1 OR SRCTR > 126 OR SKCTR < 1 OR SKCTR > 126
DISPLAY "WARP DRIVE SHUT DOWN - "
DISPLAY "UNAUTHORIZED ATTEMPT TO LEAVE GALAXY "
PERFORM 8100-DMG-COM THRU 8100-EXIT
GO TO 2000-EXIT
ELSE
MOVE " " TO MACOL (MRCTR , MKCTR)
MOVE SRCTR TO MRCTR.
MOVE SKCTR TO MKCTR.
IF MACOL (MRCTR , MKCTR) = "K" OR MACOL (MRCTR , MKCTR) =
"R" OR MACOL (MRCTR , MKCTR) = "B"
PERFORM 8000-BOMB THRU 8000-EXIT
ELSE
MOVE "E" TO MACOL (MRCTR , MKCTR).
7000-EXIT. EXIT.
********************************************
* 7100-NAV THRU 7800-INT EXECUTE VARIOUS *
* COMMANDS FROM THE USER, AND PRESENT THE *
* RESULTS AND CONSEQUENCES OF EACH COMMAND *
* *
* CALLED FROM 2000-PROCESS OR 3000-COM-FUN *
********************************************
7100-NAV.
PERFORM 8340-CK-FL THRU 8340-EXIT.
COMPUTE FUEL-COUNT = FUEL-COUNT - (200 * WARP-A).
IF WARP-A > 0
MOVE WARP-A TO RX-S
ELSE
COMPUTE RX-S ROUNDED = WARP-B / 100.
MOVE MRCTR TO SRCTR.
MOVE MKCTR TO SKCTR.
COMPUTE WARP1 ROUNDED = (WARP-A * 5) + (WARP-B * .05).
COMPUTE WARP2 ROUNDED = (WARP-A * 8) + (WARP-B * .08).
COMPUTE WARP3 ROUNDED = (COURSE-B * .05) * RX-S.
COMPUTE WARP4 ROUNDED = (COURSE-B * .03) * RX-S.
GO TO
7110-NAV
7120-NAV
7130-NAV
7140-NAV
7150-NAV
7160-NAV
7170-NAV
7180-NAV
DEPENDING ON COURSE-A.
DISPLAY "INVALID COURSE".
GO TO 7100-EXIT.
7110-NAV.
COMPUTE SRCTR = SRCTR - WARP2 + WARP4.
COMPUTE SKCTR = SKCTR + WARP3.
PERFORM 7000-NAV-CK THRU 7000-EXIT.
GO TO 7100-EXIT.
7120-NAV.
COMPUTE SRCTR = SRCTR - WARP1 + WARP3.
COMPUTE SKCTR = SKCTR + WARP1 + WARP4.
PERFORM 7000-NAV-CK THRU 7000-EXIT.
GO TO 7100-EXIT.
7130-NAV.
COMPUTE SRCTR = SRCTR + WARP3.
COMPUTE SKCTR = SKCTR + WARP2 - WARP4.
PERFORM 7000-NAV-CK THRU 7000-EXIT.
GO TO 7100-EXIT.
7140-NAV.
COMPUTE SRCTR = SRCTR + WARP1 + WARP4.
COMPUTE SKCTR = SKCTR + WARP1 - WARP3.
PERFORM 7000-NAV-CK THRU 7000-EXIT.
GO TO 7100-EXIT.
7150-NAV.
COMPUTE SRCTR = SRCTR + WARP2 - WARP4.
COMPUTE SKCTR = SKCTR - WARP3.
PERFORM 7000-NAV-CK THRU 7000-EXIT.
GO TO 7100-EXIT.
7160-NAV.
COMPUTE SRCTR = SRCTR + WARP1 - WARP3.
COMPUTE SKCTR = SKCTR - WARP1 - WARP4.
PERFORM 7000-NAV-CK THRU 7000-EXIT.
GO TO 7100-EXIT.
7170-NAV.
COMPUTE SRCTR = SRCTR - WARP3.
COMPUTE SKCTR = SKCTR - WARP2 + WARP4.
PERFORM 7000-NAV-CK THRU 7000-EXIT.
GO TO 7100-EXIT.
7180-NAV.
COMPUTE SRCTR = SRCTR - WARP1 - WARP4.
COMPUTE SKCTR = SKCTR - WARP1 + WARP3.
PERFORM 7000-NAV-CK THRU 7000-EXIT.
GO TO 7100-EXIT.
7100-EXIT. EXIT.
7200-PHA.
IF KLGNS < 1 AND ROMULONS < 1
DISPLAY "SCIENCE OFFICER SPOCK REPORTS NO ENEMY "
DISPLAY "VESSELS IN THIS QUADRANT, " NAME-X
GO TO 7200-EXIT.
PERFORM 8340-CK-FL THRU 8340-EXIT.
IF FUEL-COUNT < 9999
MOVE FUEL-COUNT TO FUEL-CO
DISPLAY "MAXIMUM OF " FUEL-CO " UNITS AVAILABLE TO
- " PHASERS ".
DISPLAY "HOW MANY UNITS TO PHASER BANKS? ".
ACCEPT VAR4-AN.
PERFORM 7210-REP-BL THRU 7210-EXIT.
PERFORM 7220-COMPUTE-DIST THRU 7220-EXIT.
COMPUTE VAR2 = 450000 / (SHIELD-CNT + 100).
PERFORM 8150-TEST-AGN THRU 8150-EXIT.
IF KLGNS > 1 AND TRAP-VEC
DISPLAY "*ENTERPRISE DESTROYED* "
DISPLAY "DIRECT HITS FROM " KLGNS " KLINGONS "
MOVE 1 TO INDICATE-X.
PERFORM 8200-CK-DONE THRU 8200-EXIT.
COMPUTE DM-VAR4 = VAR4 - (DAMAGE-CNT / 15).
COMPUTE VAR3 = VAR2 / 2.
IF ROMULONS > 0
DISPLAY "*ROMULON VESSELS PRESENT IN QUADRANT* "
DISPLAY "DO YOU WANT TO FIRE ON ROMULONS? "
ACCEPT LST-REPLY
IF YES-LST
PERFORM 7250-ROMULON-CK THRU 7250-EXIT
GO TO 7200-EXIT.
IF KLGNS > 0
COMPUTE VAR2 = VAR2 / (DIST-X / 10)
SUBTRACT VAR4 FROM FUEL-COUNT
MOVE DM-VAR4 TO VAR4
ADD KH-TL TO VAR4
IF VAR4 < 400
PERFORM 4700-DISP-HIT THRU 4700-EXIT
DISPLAY "*KLINGON DISABLED* "
PERFORM 4500-DISP-HIT THRU 4500-EXIT
COMPUTE VAR4 = .75 * VAR4
ADD VAR4 TO KH-TL
ADD VAR2 TO DAMAGE-CNT
SUBTRACT VAR3 FROM SHIELD-CNT
ELSE
PERFORM 7201-REPLACE THRU 7201-EXIT
VARYING REP-CTR FROM 1 BY 1 UNTIL REP-CTR > RX
INSPECT MINI-TABLE REPLACING FIRST "K" BY " "
INSPECT MINI-TABLE REPLACING ALL "X" BY "K"
COMPUTE VAR4 = VAR4 / (DIST-X ** .224)
PERFORM 4700-DISP-HIT THRU 4700-EXIT
DISPLAY "*KLINGON DESTROYED* "
MOVE 0 TO KH-TL
SUBTRACT 1 FROM KLGNS
SUBTRACT 1 FROM KLINGONS
PERFORM 5400-TRANS-BACK THRU 5400-EXIT
IF KLGNS > 0
PERFORM 4500-DISP-HIT THRU 4500-EXIT
ADD VAR2 TO DAMAGE-CNT
COMPUTE VAR2 = .75 * VAR2
SUBTRACT VAR2 FROM SHIELD-CNT
ELSE
MOVE VAR3 TO VAR2
PERFORM 4500-DISP-HIT THRU 4500-EXIT
ADD VAR3 TO DAMAGE-CNT
SUBTRACT VAR3 FROM SHIELD-CNT
ELSE
DISPLAY "THERE ARE 0 KLINGONS IN THIS QUADRANT, " NAME-X.
PERFORM 8120-DAM-COM THRU 8120-EXIT.
PERFORM 8300-CK-FUEL-DAMAGE THRU 8300-EXIT.
PERFORM 8200-CK-DONE THRU 8200-EXIT.
7200-EXIT. EXIT.
7201-REPLACE.
INSPECT MINI-TABLE REPLACING FIRST "K" BY "X".
7201-EXIT. EXIT.
7202-REPLACE.
INSPECT MINI-TABLE REPLACING FIRST "R" BY "X".
7202-EXIT. EXIT.
7210-REP-BL.
MOVE 0 TO TAL4.
INSPECT VAR4-AN TALLYING TAL4 FOR ALL " ".
IF TAL4 > 0
INSPECT VAR4-AN REPLACING ALL " " BY ZEROS
IF VAR4-AN NUMERIC
MOVE VAR4-AN TO VAR4
COMPUTE VAR4 = VAR4 / (10 ** TAL4)
ELSE
MOVE 300 TO VAR4
ELSE
IF VAR4-AN NUMERIC
MOVE VAR4-AN TO VAR4
ELSE
MOVE 300 TO VAR4.
IF VAR4 < 300
MOVE 300 TO VAR4.
7210-EXIT. EXIT.
7220-COMPUTE-DIST.
MOVE 30 TO DIST-B.
MOVE 30 TO DIST-X.
MOVE 30 TO DIST-R.
MOVE 0 TO CT-K.
MOVE 0 TO CT-R.
PERFORM 7225-FIND-E THRU 7225-EXIT
VARYING RCNTR FROM 1 BY 1 UNTIL RCNTR > 14
AFTER KCNTR FROM 1 BY 1 UNTIL KCNTR > 14.
PERFORM 7230-COMPUTE THRU 7230-EXIT
VARYING RCNTR FROM 1 BY 1 UNTIL RCNTR > 14
AFTER KCNTR FROM 1 BY 1 UNTIL KCNTR > 14.
PERFORM 7247-EST-NBR THRU 7247-EXIT.
7220-EXIT. EXIT.
7225-FIND-E.
IF MCOL (RCNTR , KCNTR) = "E"
MOVE RCNTR TO E1
MOVE KCNTR TO E2.
7225-EXIT. EXIT.
7230-COMPUTE.
IF MCOL (RCNTR , KCNTR) = "K"
MOVE RCNTR TO K1
MOVE KCNTR TO K2
ADD 1 TO CT-K
MOVE DIST-X TO STR-A
PERFORM 7240-DIST-K THRU 7240-EXIT
IF DIST-X > STR-A
MOVE STR-A TO DIST-X.
IF MCOL (RCNTR , KCNTR) = "R"
MOVE RCNTR TO R1
MOVE KCNTR TO R2
ADD 1 TO CT-R
MOVE DIST-R TO STR-R
PERFORM 7243-DIST-R THRU 7243-EXIT
IF DIST-R > STR-R
MOVE STR-R TO DIST-R.
IF MCOL (RCNTR , KCNTR) = "B"
MOVE RCNTR TO B1
MOVE KCNTR TO B2
MOVE DIST-B TO STR-X
PERFORM 7245-DIST-B THRU 7245-EXIT
IF DIST-B > STR-X
MOVE STR-X TO DIST-B.
7230-EXIT. EXIT.
7240-DIST-K.
IF K1 > E1
COMPUTE K1 = K1 - E1
ELSE
COMPUTE K1 = E1 - K1.
IF K2 > E2
COMPUTE K2 = K2 - E2
ELSE
COMPUTE K2 = E2 - K2.
COMPUTE DIST-X ROUNDED = ((K1 ** 2) + (K2 ** 2)) ** .5.
MOVE DIST-X TO DKC (CT-K).
7240-EXIT. EXIT.
7243-DIST-R.
IF R1 > E1
COMPUTE R1 = R1 - E1
ELSE
COMPUTE R1 = E1 - R1.
IF R2 > E2
COMPUTE R2 = R2 - E2
ELSE
COMPUTE R2 = E2 - R2.
COMPUTE DIST-R ROUNDED = ((R1 ** 2) + (R2 ** 2)) ** .5.
MOVE DIST-R TO DRC (CT-R).
7243-EXIT. EXIT.
7245-DIST-B.
IF B1 > E1
COMPUTE B1 = B1 - E1
ELSE
COMPUTE B1 = E1 - B1.
IF B2 > E2
COMPUTE B2 = B2 - E2
ELSE
COMPUTE B2 = E2 - B2.
COMPUTE DIST-B ROUNDED = ((B1 ** 2) + (B2 ** 2)) ** .5.
7245-EXIT. EXIT.
7247-EST-NBR.
MOVE 30 TO STR-X.
PERFORM 7248-EST-K THRU 7248-EXIT
VARYING RT FROM 1 BY 1 UNTIL RT > CT-K.
PERFORM 7249-EST-R THRU 7249-EXIT
VARYING QT FROM 1 BY 1 UNTIL QT > CT-R.
7247-EXIT. EXIT.
7248-EST-K.
IF DKC (RT) < STR-X
MOVE DKC (RT) TO STR-X
COMPUTE RX = RT - 1.
7248-EXIT. EXIT.
7249-EST-R.
IF DRC (QT) < STR-R
MOVE DRC (QT) TO STR-R
COMPUTE QX = QT - 1.
7249-EXIT. EXIT.
7250-ROMULON-CK.
IF ROMULONS > 2 AND NO-WAY
DISPLAY "*ENTERPRISE FIRING ON ROMULONS*"
DISPLAY "*ROMULONS RETURNING FIRE* "
DISPLAY "SIMULTANEOUS HITS FROM " ROMULONS " ROMULONS "
DISPLAY "*ENTERPRISE DESTROYED*"
MOVE 1 TO INDICATE-X
PERFORM 8200-CK-DONE THRU 8200-EXIT
ELSE
PERFORM 8400-GENERATE THRU 8400-EXIT
DISPLAY "*ENTERPRISE FIRING ON ROMULONS* "
SUBTRACT VAR4 FROM FUEL-COUNT
IF NO-WAY OR VAR4 < 447
COMPUTE VAR4 = VAR4 / (DIST-R ** .224)
MOVE VAR4 TO VAR5
DISPLAY VAR5 " UNIT HIT ON ROMULON "
DISPLAY "*ROMULON RETURNING FIRE*"
PERFORM 8400-GENERATE THRU 8400-EXIT
IF NO-WAY
DISPLAY "*ENTERPRISE DESTROYED BY ROMULON
- " TORPEDO* "
MOVE 1 TO INDICATE-X
PERFORM 8200-CK-DONE THRU 8200-EXIT
ELSE
COMPUTE VAR2 = 3 * VAR2 / (DIST-R / 10)
PERFORM 4500-DISP-HIT THRU 4500-EXIT
ADD VAR2 TO DAMAGE-CNT
COMPUTE VAR3 = VAR2 / 2
IF VAR3 < 9999
SUBTRACT VAR3 FROM SHIELD-CNT
ELSE
MOVE 0 TO SHIELD-CNT
ELSE
COMPUTE VAR4 = VAR4 / (DIST-X ** .125)
MOVE VAR4 TO VAR5
DISPLAY VAR5 " UNIT HIT ON ROMULON "
DISPLAY "*ROMULON DESTROYED*"
PERFORM 7202-REPLACE THRU 7202-EXIT
VARYING REP-CTR FROM 1 BY 1 UNTIL REP-CTR > QX
INSPECT MINI-TABLE REPLACING FIRST "R" BY " "
INSPECT MINI-TABLE REPLACING ALL "X" BY "R"
SUBTRACT 1 FROM ROMULONS
PERFORM 5400-TRANS-BACK THRU 5400-EXIT.
PERFORM 8100-DMG-COM THRU 8100-EXIT.
PERFORM 8300-CK-FUEL-DAMAGE THRU 8300-EXIT.
PERFORM 8200-CK-DONE THRU 8200-EXIT.
7250-EXIT. EXIT.
7300-TOR.
IF KLGNS < 1 AND ROMULONS < 1
DISPLAY "THERE ARE 0 ENEMY VESSELS IN THIS QUADRANT, "
- NAME-X
GO TO 7300-EXIT.
PERFORM 8400-GENERATE THRU 8400-EXIT.
COMPUTE VAR2 = 250000 / (SHIELD-CNT + 100).
PERFORM 8150-TEST-AGN THRU 8150-EXIT.
PERFORM 7220-COMPUTE-DIST THRU 7220-EXIT.
IF KLGNS > 2
COMPUTE VAR2 = VAR2 * (KLGNS + 1) / 2.
COMPUTE VAR3 = .75 * VAR2.
IF ROMULONS > 0 AND TORPS > 0
DISPLAY "*ROMULONS PRESENT IN QUADRANT*"
DISPLAY "DO YOU WANT TO FIRE ON THEM? "
ACCEPT LST-REPLY
IF YES-LST
PERFORM 7350-ROMULON-CK THRU 7350-EXIT
GO TO 7300-EXIT.
IF TORPS > 0
IF KLGNS > 0
IF SHIELD-CNT < 475 AND NO-WAY
DISPLAY "*ENTERPRISE DESTROYED*"
DISPLAY "LOW SHIELDS AT TIME OF ENEMY ATTACK "
MOVE 1 TO INDICATE-X
PERFORM 8200-CK-DONE THRU 8200-EXIT
ELSE
IF NO-WAY AND DIST-X > 4
COMPUTE VAR2 = VAR2 / (DIST-X / 10)
DISPLAY "TORPEDO MISSED "
PERFORM 4500-DISP-HIT THRU 4500-EXIT
ADD VAR2 TO DAMAGE-CNT
SUBTRACT 1 FROM TORPS
SUBTRACT VAR3 FROM SHIELD-CNT
PERFORM 8120-DAM-COM THRU 8120-EXIT
ELSE
DISPLAY "*KLINGON DESTROYED*"
SUBTRACT VAR3 FROM DAMAGE-CNT
PERFORM 7201-REPLACE THRU 7201-EXIT
VARYING REP-CTR FROM 1 BY 1 UNTIL REP-CTR
- > RX
INSPECT MINI-TABLE REPLACING FIRST "K" BY " "
INSPECT MINI-TABLE REPLACING ALL "X" BY "K"
SUBTRACT 1 FROM TORPS
SUBTRACT 1 FROM KLGNS
SUBTRACT 1 FROM KLINGONS
PERFORM 5400-TRANS-BACK THRU 5400-EXIT
IF KLGNS > 0
PERFORM 4500-DISP-HIT THRU 4500-EXIT
ADD VAR2 TO DAMAGE-CNT
SUBTRACT VAR3 FROM SHIELD-CNT
PERFORM 8120-DAM-COM THRU 8120-EXIT
ELSE
PERFORM 8120-DAM-COM THRU 8120-EXIT
ELSE
DISPLAY "THERE ARE 0 KLINGON VESSELS IN THIS
- " QUADRANT, " NAME-X
ELSE
DISPLAY "0 TORPEDOES REMAINING, " NAME-X.
PERFORM 8300-CK-FUEL-DAMAGE THRU 8300-EXIT.
PERFORM 8200-CK-DONE THRU 8200-EXIT.
7300-EXIT. EXIT.
7350-ROMULON-CK.
IF ROMULONS > 1 AND NO-WAY
DISPLAY "*ENTERPRISE FIRING ON ROMULONS*"
DISPLAY "*ROMULONS RETURNING FIRE*"
DISPLAY "SIMULTANEOUS HITS FROM " ROMULONS " ROMULONS "
DISPLAY "*ENTERPRISE DESTROYED*"
MOVE 1 TO INDICATE-X
PERFORM 8200-CK-DONE THRU 8200-EXIT
ELSE
DISPLAY "*ENTERPRISE FIRING ON ROMULONS*"
SUBTRACT 1 FROM TORPS
IF NO-WAY AND DIST-R > 4
DISPLAY "TORPEDO MISSED "
DISPLAY "*ROMULONS RETURNING FIRE*"
PERFORM 8400-GENERATE THRU 8400-EXIT
IF NO-WAY AND SHIELD-CNT < 4000
DISPLAY "*ENTERPRISE DESTROYED BY ROMULON
- " TORPEDO*"
MOVE 1 TO INDICATE-X
PERFORM 8200-CK-DONE THRU 8200-EXIT
ELSE
COMPUTE VAR2 = 3 * VAR2 / (DIST-R / 10)
PERFORM 4500-DISP-HIT THRU 4500-EXIT
ADD VAR2 TO DAMAGE-CNT
COMPUTE VAR3 = VAR2 / 2
SUBTRACT VAR3 FROM SHIELD-CNT
ELSE
DISPLAY "*ROMULON DESTROYED*"
PERFORM 7202-REPLACE THRU 7202-EXIT
VARYING REP-CTR FROM 1 BY 1 UNTIL REP-CTR > QX
INSPECT MINI-TABLE REPLACING FIRST "R" BY " "
INSPECT MINI-TABLE REPLACING ALL "X" BY "R"
SUBTRACT 1 FROM ROMULONS
PERFORM 5400-TRANS-BACK THRU 5400-EXIT.
PERFORM 8300-CK-FUEL-DAMAGE THRU 8300-EXIT.
PERFORM 8200-CK-DONE THRU 8200-EXIT.
7350-EXIT. EXIT.
7400-STA.
COMPUTE VAR3 = (DAMAGE-CNT / 60).
MOVE VAR3 TO VAR6.
MOVE FUEL-COUNT TO FUEL-CO.
MOVE SHIELD-CNT TO SHIELD-CO.
DISPLAY " ".
DISPLAY "FUEL UNITS DAMAGE ".
DISPLAY "REMAINING LEVEL ".
DISPLAY " ".
DISPLAY " " FUEL-CO " " VAR6 "%".
DISPLAY " ".
DISPLAY "===================".
DISPLAY " ".
DISPLAY " PHOTON SHIELD ".
DISPLAY "TORPEDOES LEVEL ".
DISPLAY " ".
DISPLAY " " TORPS " " SHIELD-CO.
DISPLAY " ".
PERFORM 8100-DMG-COM THRU 8100-EXIT.
PERFORM 8300-CK-FUEL-DAMAGE THRU 8300-EXIT.
PERFORM 8200-CK-DONE THRU 8200-EXIT.
7400-EXIT. EXIT.
7500-DEF.
ADD SHIELD-CNT TO FUEL-COUNT.
DISPLAY "HOW MANY UNITS TO SHIELDS (0 - 9999)? ".
PERFORM 7520-ASC THRU 7520-EXIT.
IF SHIELD-CNT < FUEL-COUNT
SUBTRACT SHIELD-CNT FROM FUEL-COUNT
ELSE
MOVE FUEL-COUNT TO FUEL-CO
DISPLAY "MAXIMUM AMOUNT TO SHIELDS: " FUEL-CO
DISPLAY "HOW MANY UNITS TO SHIELDS? "
PERFORM 7520-ASC THRU 7520-EXIT
SUBTRACT SHIELD-CNT FROM FUEL-COUNT.
MOVE SHIELD-CNT TO SHIELD-CO.
DISPLAY "SHIELDS AT " SHIELD-CO " PER YOUR COMMAND ".
7500-EXIT. EXIT.
7520-ASC.
ACCEPT SHIELD-CNT-AN.
MOVE 0 TO SBL.
INSPECT SHIELD-CNT-AN TALLYING SBL FOR ALL " ".
INSPECT SHIELD-CNT-AN REPLACING ALL " " BY ZEROS.
IF SHIELD-CNT-AN NOT NUMERIC
MOVE 0 TO SBL
DISPLAY "INVALID - ENTRY MUST BE NUMERIC "
DISPLAY "HOW MANY UNITS TO SHIELDS? "
ACCEPT SHIELD-CNT-AN
INSPECT SHIELD-CNT-AN TALLYING SBL FOR ALL " "
INSPECT SHIELD-CNT-AN REPLACING ALL " " BY ZEROS
IF SHIELD-CNT-AN NOT NUMERIC
MOVE 0 TO SHIELD-CNT
GO TO 7520-EXIT.
MOVE SHIELD-CNT-AN TO SHIELD-CNT.
IF SBL > 0
COMPUTE SHIELD-CNT = SHIELD-CNT / (10 ** SBL).
7520-EXIT. EXIT.
7600-DOC.
PERFORM 8400-GENERATE THRU 8400-EXIT.
IF BASE-CNT > 0
PERFORM 7220-COMPUTE-DIST THRU 7220-EXIT
IF DIST-B < 7
IF NO-WAY
DISPLAY "*UNSUCCESSFUL DOCKING ATTEMPT* "
DISPLAY "STAR BASE REPORTS ALL BAYS IN USE "
PERFORM 8100-DMG-COM THRU 8100-EXIT
ELSE
MOVE 5 TO TORPS
MOVE 25000 TO FUEL-COUNT
MOVE 0 TO DAMAGE-CNT
MOVE 0 TO SHIELD-CNT
DISPLAY "SHIELDS DROPPED TO DOCK AT STAR BASE "
DISPLAY "*DOCK SUCCESSFUL* "
ELSE
DISPLAY "THE NEAREST STAR BASE IS " DIST-B " PARSECS"
DISPLAY "YOU MUST MANEUVER TO WITHIN 6 PARSECS TO
- "DOCK "
ELSE
DISPLAY "THERE ARE 0 STAR BASES IN THIS QUADRANT, "
- NAME-X.
PERFORM 8300-CK-FUEL-DAMAGE THRU 8300-EXIT.
PERFORM 8200-CK-DONE THRU 8200-EXIT.
7600-EXIT. EXIT.
7650-TRANS-STAR.
IF Q1 = 1
MOVE 2 TO Q9
ELSE
IF Q1 = 9
MOVE 8 TO Q9
ELSE
MOVE Q1 TO Q9.
IF Q2 = 1
MOVE 2 TO R9
ELSE
IF Q2 = 9
MOVE 8 TO R9
ELSE
MOVE Q2 TO R9.
COMPUTE W = (Q9 - 2) * 14.
COMPUTE Z = (R9 - 2) * 14.
PERFORM 7670-STRANS THRU 7670-EXIT
VARYING RCTR FROM 1 BY 1 UNTIL RCTR > 42
AFTER KCTR FROM 1 BY 1 UNTIL KCTR > 42.
7650-EXIT. EXIT.
7670-STRANS.
COMPUTE A = Z + RCTR.
COMPUTE B = W + KCTR.
MOVE MACOL (A , B) TO KOLUMN (RCTR , KCTR).
7670-EXIT. EXIT.
7700-LRS.
PERFORM 7650-TRANS-STAR THRU 7650-EXIT.
MOVE ZEROS TO SCAN-KEEP.
MOVE 0 TO SCAN-CTR.
IF Q1 = 1
MOVE 1 TO QT1
MOVE 3 TO QT3
ELSE
IF Q1 = 9
MOVE 7 TO QT1
MOVE 9 TO QT3
ELSE
COMPUTE QT1 = Q1 - 1
COMPUTE QT3 = Q1 + 1.
IF Q2 = 1
MOVE 1 TO QT2
MOVE 3 TO QT4
ELSE
IF Q2 = 9
MOVE 7 TO QT2
MOVE 9 TO QT4
ELSE
COMPUTE QT2 = Q2 - 1
COMPUTE QT4 = Q2 + 1.
PERFORM 7730-TRADE-TBL THRU 7730-EXIT
VARYING TR2 FROM 0 BY 1 UNTIL TR2 > 2
AFTER TR1 FROM 0 BY 1 UNTIL TR1 > 2.
DISPLAY " ".
DISPLAY "=========================".
DISPLAY "= = = =".
DISPLAY "= " CV (1) "," CV (2) " = " CV (3) "," CV (4) " = "
- CV (5) "," CV (6) " = ".
DISPLAY "= = = =".
DISPLAY "=========================".
DISPLAY "= = = =".
DISPLAY "= " CV (7) "," CV (8) " = " CV (9) "," CV (10) " = "
CV (11) "," CV (12) " =".
DISPLAY "= = = =".
DISPLAY "=========================".
DISPLAY "= = = =".
DISPLAY "= " CV (13) "," CV (14) " = " CV (15) "," CV (16)
- " = " CV (17) "," CV (18) " =".
DISPLAY "= = = =".
DISPLAY "=========================".
DISPLAY "KEY: ".
DISPLAY "QUADRANTS " QT1 "," QT2 " THRU " QT3 "," QT4.
DISPLAY "FORMAT - KLINGONS,STAR BASES ".
IF Q1 = 1 OR Q1 = 9 OR Q2 = 1 OR Q2 = 9
DISPLAY "*ENTERPRISE ON GALACTIC BOUNDARY*".
DISPLAY "ENTERPRISE IN QUADRANT " Q1 "," Q2.
DISPLAY " ".
PERFORM 8100-DMG-COM THRU 8100-EXIT.
PERFORM 8300-CK-FUEL-DAMAGE THRU 8300-EXIT.
PERFORM 8200-CK-DONE THRU 8200-EXIT.
7700-EXIT. EXIT.
7730-TRADE-TBL.
COMPUTE QT = (TR1 * 14).
COMPUTE RT = (TR2 * 14).
PERFORM 7750-TRADE-ACT THRU 7750-EXIT
VARYING KTCTR FROM 1 BY 1 UNTIL KTCTR > 14
AFTER RTCTR FROM 1 BY 1 UNTIL RTCTR > 14.
PERFORM 7770-INSPECT-SCAN THRU 7770-EXIT.
7730-EXIT. EXIT.
7750-TRADE-ACT.
COMPUTE QX = QT + KTCTR.
COMPUTE RX = RT + RTCTR.
MOVE KOLUMN (RX , QX) TO SCAN-COL (RTCTR , KTCTR).
7750-EXIT. EXIT.
7770-INSPECT-SCAN.
ADD 1 TO SCAN-CTR.
INSPECT SCAN-TABLE TALLYING CV (SCAN-CTR) FOR ALL "K".
ADD 1 TO SCAN-CTR.
INSPECT SCAN-TABLE TALLYING CV (SCAN-CTR) FOR ALL "B".
7770-EXIT. EXIT.
7800-INT.
IF KLINGONS > 0
MOVE 1 TO CX
MOVE 1 TO DX
PERFORM 7850-SEARCH THRU 7850-EXIT
UNTIL MACOL (CX , DX) = "K" OR DX > 126
COMPUTE CX-1 = (DX - 1) / 14 + 1
COMPUTE DX-1 = (CX - 1) / 14 + 1
DISPLAY " "
DISPLAY "LATEST INTELLIGENCE GATHERING REPORTS "
DISPLAY "INDICATE 1 OR MORE KLINGON VESSELS "
DISPLAY "IN THE VICINITY OF QUADRANT " CX-1 "," DX-1
DISPLAY " "
DISPLAY "ENTERPRISE IN QUADRANT " Q1 "," Q2
DISPLAY " ".
7800-EXIT. EXIT.
7850-SEARCH.
ADD 1 TO CX.
IF CX > 126
ADD 1 TO DX
MOVE 1 TO CX.
7850-EXIT. EXIT.
8000-BOMB.
IF MACOL (MRCTR , MKCTR) = "K"
DISPLAY "*ENTERPRISE DESTROYED IN COLLISION WITH
- " KLINGON*"
ELSE
IF MACOL (MRCTR , MKCTR) = "R"
DISPLAY "*ENTERPRISE DESTROYED IN COLLISION WITH
- " ROMULON*"
ELSE
DISPLAY "*ENTERPRISE DESTROYED IN COLLISION WITH STAR
- " BASE*".
MOVE 1 TO INDICATE-X.
PERFORM 8200-CK-DONE THRU 8200-EXIT.
8000-EXIT. EXIT.
****************************************************
* 8100-DMG-COM AND 8120-DAM-COM CALCULATE AND DIS- *
* PLAY HITS ON THE ENTERPRISE FROM ENEMY VESSELS *
* IN QUADRANT. -- CALLED FOLLOWING POSSIBLE CON- *
* TACT WITH ENEMY VESSELS. *
****************************************************
8100-DMG-COM.
IF KLGNS > 0
COMPUTE VAR2 = (K-OR - KLINGONS) * KLGNS * FUEL-COUNT /
- (SHIELD-CNT + 21)
PERFORM 8150-TEST-AGN THRU 8150-EXIT
COMPUTE VAR3 = .75 * VAR2
DISPLAY "*ENTERPRISE ENCOUNTERING KLINGON FIRE*"
PERFORM 4500-DISP-HIT THRU 4500-EXIT
ADD VAR2 TO DAMAGE-CNT
SUBTRACT VAR3 FROM SHIELD-CNT.
8100-EXIT. EXIT.
8120-DAM-COM.
IF ROMULONS > 0
COMPUTE VAR2 = ROMULONS * FUEL-COUNT / (SHIELD-CNT + 7)
PERFORM 8160-TEST-AGN THRU 8160-EXIT
COMPUTE VAR3 = .75 * VAR2
DISPLAY "*ENTERPRISE ENCOUNTERING ROMULON FIRE*"
PERFORM 4500-DISP-HIT THRU 4500-EXIT
ADD VAR2 TO DAMAGE-CNT
SUBTRACT VAR3 FROM SHIELD-CNT.
8120-EXIT. EXIT.
8150-TEST-AGN.
IF VAR2 < 325 AND KLGNS > 0
ADD 177 TO VAR2
COMPUTE VAR2 = (KLGNS * VAR2 / 2.7) + (VAR2 * DAMAGE-CNT
- / 980).
8150-EXIT. EXIT.
8160-TEST-AGN.
IF VAR2 < 525 AND ROMULONS > 0
ADD 254 TO VAR2
COMPUTE VAR2 = (ROMULONS * VAR2 / 4.7) + (VAR2 *
- DAMAGE-CNT / 365).
8160-EXIT. EXIT.
8200-CK-DONE.
IF BYE-BYE
GO TO 2000-EXIT.
8200-EXIT. EXIT.
*************************************************
* 8300-CK-FUEL-DAMAGE CHECKS AND NOTIFIES THE *
* USER OF LOW SHIELDS, LOW FUEL RESERVES, OR *
* HIGH DAMAGE TO THE SHIP, IN ORDER THAT HE MAY *
* ATTEMPT TO DOCK BEFORE THE ENTERPRISE IS *
* DISABLED. -- CALLED FOLLOWING POSSIBLE *
* CONTACT WITH ENEMY VESSELS. *
*************************************************
8300-CK-FUEL-DAMAGE.
IF FUEL-COUNT < 4500 AND FUEL-COUNT > 0
DISPLAY "LT. SCOTT REPORTS FUEL IS RUNNING LOW, " NAME-X
ELSE
IF FUEL-COUNT NOT > 0
DISPLAY "FUEL RESERVES DEPLETED "
DISPLAY "THE ENTERPRISE IS DRIFTING IN SPACE "
PERFORM 8350-CK-SHIFT THRU 8350-EXIT.
IF DAMAGE-CNT > 6000
DISPLAY "ENTERPRISE STRANDED BECAUSE OF HEAVY DAMAGE "
MOVE 1 TO INDICATE-X
PERFORM 8200-CK-DONE THRU 8200-EXIT.
IF DAMAGE-CNT > 4500
DISPLAY "DAMAGE CONTROL REPORTS HEAVY DAMAGE TO ENTERPRIS
- "E, " NAME-X.
IF SHIELD-CNT < 800 AND (KLGNS > 0 OR ROMULONS > 0)
DISPLAY "LT. SULU REPORTS SHIELDS DANGEROUSLY LOW, " NAME
- -X.
8300-EXIT. EXIT.
8340-CK-FL.
IF FUEL-COUNT NOT > 180
DISPLAY "*INSUFFICIENT FUEL TO CONTINUE*"
PERFORM 8350-CK-SHIFT THRU 8350-EXIT
GO TO 2000-EXIT.
8340-EXIT. EXIT.
8350-CK-SHIFT.
IF SHIELD-CNT > 200
DISPLAY "LT. SULU ADVISES YOU LOWER SHIELDS "
DISPLAY "TO INCREASE FUEL SUPPLY, " NAME-X
ELSE
MOVE 1 TO INDICATE-X
PERFORM 8200-CK-DONE THRU 8200-EXIT.
8350-EXIT. EXIT.
8400-GENERATE.
IF NX > 24
MOVE 0 TO NX.
ADD 1 TO NX.
* NOTE. USED TO BE IF CHAR (NX) NUMERIC
IF NX EQUAL NX
MOVE 1 TO GENRTE-RESULT
ELSE
MOVE 0 TO INDICATE-Y
MOVE 0 TO GENRTE-RESULT
IF CHAR (NX) = "F"
MOVE 1 TO INDICATE-Y.
8400-EXIT. EXIT.
8500-FINISH-GAME.
DISPLAY " ".
IF BYE-BYE
IF S-DATE > DS-DATE
MOVE KLINGONS TO VAE1
MOVE WS-DATE TO DS-DATE
DISPLAY "IT IS NOW STAR DATE " S-DATE
DISPLAY "STAR DATE " DS-DATE " STAR FLEET HQ"
DISPLAY "WAS DESTROYED BY " VAE1 " KLINGON VESSELS"
DISPLAY NAME-X " COURT MARTIALED"
ELSE
DISPLAY NAME-X " COURT MARTIALED"
ELSE
DISPLAY "CONGRATULATIONS ON A JOB WELL DONE. "
DISPLAY "THE FEDERATION IS PROUD OF YOU, " NAME-X.
DISPLAY " ".
8500-EXIT. EXIT.
9000-END-OF-JOB-SECTION SECTION.
[continued in next message]
--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)