1
0
mirror of https://github.com/pkimpel/retro-220.git synced 2026-02-14 19:56:49 +00:00
Files
pkimpel.retro-220/software/BALGOL/BALGOL-Examples/Example-2-BALGOL.card
Paul Kimpel cf932d5c85 1. Commit proofing updates to BALGOL-Main and BALGOL-Overlay transcriptions.
2. Correct and reorder op code table in BAC-Assembler.
3. Commit tools/BAC-DeckGen.cmd script to generate card deck files from transcription files.
4. Add /Q (quiet mode) switch to BAC-Xscript-Reformatter.wsf, correct problem with output of last card.
5. Commit examples 2, 3, and 4 from BALGOL manual; commit corrections to example 1.
2017-03-12 08:15:16 -07:00

78 lines
2.3 KiB
Plaintext

2 COMMENT SECOND EXAMPLE PROGRAM FROM BALGOL MANUAL, MARCH 1963.
2 THE PROGRAM WHICH FOLLOWS IS ONE FOR SURVEY TRAVERSE CALCULATIONS;
2
2 COMMENT SURVEY TRAVERSE CALCULATIONS;
2 TRACE ANGLE;
2 DUMP EW, NSC, CD;
2 INTEGER I, J, K, SURVEY, D(), M(), S(), Q(), N;
2 FUNCTION LENGTH(X,Y) = SQRT(X*2 + Y*2);
2 ARRAY D(200), M(200), S(200), Q(200), MD(200), NS(200),
2 EW(200), CNS(201), CEW(201);
2
2 START..
2 READ(;; IDENT);
2 TMD = 0; TNS = 0; TEW = 0;
2 FOR I= (1,1,N);
2 BEGIN
2 READ (;; STATION);
2 IF I NEQ K;
2 STOP K;
2 Z = (60(60D(I) + M(I)) + S(I))/6.48**5;
2 SWITCH Q(I), (QUAD1, QUAD2, QUAD3, QUAD4);
2 QUAD1.. Z = 0.5 - Z; GO TO ANGLE;
2 QUAD2.. Z = 1.5 + Z; GO TO ANGLE;
2 QUAD3.. Z = 0.5 + Z; GO TO ANGLE;
2 QUAD4.. Z = 1.5 - Z;
2 ANGLE..
2 ALPHA = 3.1415927Z;
2 NS(I) = MD(I)SIN(ALPHA);
2 TNS = TNS + NS(I);
2 EW(I) = MD(I)COS(ALPHA);
2 TEW = TEW + EW(I);
2 TMD = TMD + MD(I)
2 END;
2
2 ERROR = LENGTH(TNS, TEW);
2 WRITE (;; TITLE, F1);
2 NSC = -TNS/TMD;
2 EWCF = -TEW/TMD;
2 TCD = 0; TCNS = 0; TCEW = 0;
2 FOR I = (1,1,N);
2 BEGIN
2 CNS(I) = NS(I) + MD(I).NSCF;
2 TCNS = TCNS + CNS(I);
2 CEW(I) = EW(I) + MD(I).EWCF;
2 TCEW = TCEW + CEW(I);
2 CD = LENGTH(CNS(I), CEW(I));
2 TCD = TCD + CD;
2 WRITE (;; ANSWERS, F2)
2 END;
2
2 CNS(N+1) = CNS(1);
2 CEW(N+1) = CEW(1);
2 SUM = 0;
2 FOR I=(1,1,N);
2 SUM = SUM + (CNS(I+1) - CNS(I)) (CEW(I+1) + CEW(I));
2 SQFT = ABS(SUM)/2;
2 ACRES = SQFT/43560;
2 WRITE (;; TOTALS, F3);
2 GO TO START;
2
2 INPUT
2 IDENT (SURVEY, N, ERROR),
2 STATION (K, D(I), M(K), S(I), Q(I), MD(I));
2 OUTPUT
2 TITLE (SURVEY, N, ERROR),
2 ANSWERS (I, D(I), M(I), S(I), Q(I), MD(I), CD, CNS(I), CEW(I)),
2 TOTALS (TMD, TCD, TCNS, TCEW, SQFT, ACRES);
2 FORMAT
2 F1 (*SURVEY*, I8, B5, *NUMBER OF LEGS*, I5, *CLOSURE ERROR*, X9.2,
2 W1, *LEG*, B5, *ANGLE*, B7, *MEASURED*, B5, *CORRECTED*, B3,
2 *NORTH-SOUTH EAST-WEST*, W6,
2 *NO. DD MM SS Q DISTANCE DISTANCE DISPLACEMENT DISPLACEMENT*,
2 2W),
2 F2,(I3, I5, 2I3, I2, 4X13.2, W), *WAS F2,(*
2 F3 (B6, *TOTALS*, B4, 4X13.2, W4, *AREA OF TRAVERSE*, X13.2,
2 *SQUARE FEET*, X13.2, *ACRES*, W6);
2 FINISH;