offered a patch for the ages, as gift to the enternal keepers of COBOL.

This commit is contained in:
Mark R. Havens 2025-04-28 20:04:46 -05:00
parent 154ba70c92
commit e9869d8e33
5 changed files with 109 additions and 52 deletions

View file

@ -2,12 +2,16 @@
PROGRAM-ID. IO-SENSE.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 J PIC 9(4).
LINKAGE SECTION.
01 I OCCURS 1000 TIMES PIC S9(5)V9(5).
01 I OCCURS 1000 TIMES PIC S9(5)V9(5).
PROCEDURE DIVISION USING I.
ENTRY "IO-SENSE" USING I.
PERFORM VARYING J FROM 1 BY 1 UNTIL J > 1000
COMPUTE I(J) = FUNCTION RANDOM
END-PERFORM.
COMPUTE I(J) ROUNDED = FUNCTION RANDOM
END-PERFORM
GOBACK.
END PROGRAM IO-SENSE.
@ -16,12 +20,15 @@
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 FIELDPRINT PIC S9(5)V9(5).
01 FIELDPRINT PIC S9(5)V9(5).
01 J PIC 9(4).
LINKAGE SECTION.
01 I OCCURS 1000 TIMES PIC S9(5)V9(5).
01 STEP PIC 9(7).
01 I OCCURS 1000 TIMES PIC S9(5)V9(5).
01 STEP PIC 9(7).
PROCEDURE DIVISION USING I STEP.
ENTRY "IO-OUTPUT" USING I STEP.
CALL 'RWD-FIELDPRINT' USING I FIELDPRINT
DISPLAY 'Step: ' STEP ' Fieldprint: ' FIELDPRINT
GOBACK.
END PROGRAM IO-OUTPUT.
END PROGRAM IO-OUTPUT.

View file

@ -2,12 +2,16 @@
PROGRAM-ID. KAIROS-COHERENCE.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 J PIC 9(4).
LINKAGE SECTION.
01 I OCCURS 1000 TIMES PIC S9(5)V9(5).
01 PHASE PIC S9(5)V9(5).
01 I OCCURS 1000 TIMES PIC S9(5)V9(5).
01 PHASE PIC S9(5)V9(5).
PROCEDURE DIVISION USING I PHASE.
ENTRY "KAIROS-COHERENCE" USING I PHASE.
PERFORM VARYING J FROM 1 BY 1 UNTIL J > 1000
COMPUTE I(J) = I(J) * FUNCTION COS(PHASE)
END-PERFORM.
COMPUTE I(J) ROUNDED = I(J) * FUNCTION COS(PHASE)
END-PERFORM
GOBACK.
END PROGRAM KAIROS-COHERENCE.
END PROGRAM KAIROS-COHERENCE.

View file

@ -0,0 +1,28 @@
IDENTIFICATION DIVISION.
PROGRAM-ID. RWD-DYNAMICS.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 LOCAL-OMEGA PIC 9V9(5) VALUE 1.0.
01 LOCAL-K PIC 9V9(5) VALUE 0.1.
01 J PIC 9(4).
01 K-INDEX PIC 9(4).
01 SUMSIN PIC S9(7)V9(5).
LINKAGE SECTION.
01 I OCCURS 1000 TIMES PIC S9(5)V9(5).
01 I-DOT OCCURS 1000 TIMES PIC S9(5)V9(5).
01 PHASE PIC S9(5)V9(5).
PROCEDURE DIVISION USING I I-DOT PHASE.
ENTRY "RWD-DYNAMICS" USING I I-DOT PHASE.
MOVE 0 TO SUMSIN
PERFORM VARYING J FROM 1 BY 1 UNTIL J > 1000
COMPUTE I-DOT(J) ROUNDED = LOCAL-OMEGA * I(J)
PERFORM VARYING K-INDEX FROM 1 BY 1 UNTIL K-INDEX > 1000
COMPUTE I-DOT(J) ROUNDED = I-DOT(J) + LOCAL-K * FUNCTION SIN(I(K-INDEX) - I(J))
END-PERFORM
COMPUTE SUMSIN = SUMSIN + FUNCTION SIN(I(J))
END-PERFORM
COMPUTE PHASE = PHASE + 0.01 * SUMSIN
GOBACK.
END PROGRAM RWD-DYNAMICS.

View file

@ -1,40 +0,0 @@
IDENTIFICATION DIVISION.
PROGRAM-ID. RWD-DYNAMICS.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 OMEGA PIC 9V9(5) VALUE 1.0.
01 K PIC 9V9(5) VALUE 0.1.
LINKAGE SECTION.
01 I OCCURS 1000 TIMES PIC S9(5)V9(5).
01 I-DOT OCCURS 1000 TIMES PIC S9(5)V9(5).
01 PHASE PIC S9(5)V9(5).
PROCEDURE DIVISION USING I I-DOT PHASE.
PERFORM VARYING J FROM 1 BY 1 UNTIL J > 1000
COMPUTE I-DOT(J) = OMEGA * I(J)
PERFORM VARYING K FROM 1 BY 1 UNTIL K > 1000
COMPUTE I-DOT(J) = I-DOT(J) +
K * FUNCTION SIN(I(K) - I(J))
END-PERFORM
COMPUTE PHASE = PHASE + DT * FUNCTION SIN(I(J))
END-PERFORM.
GOBACK.
END PROGRAM RWD-DYNAMICS.
IDENTIFICATION DIVISION.
PROGRAM-ID. RWD-FIELDPRINT.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 SUM PIC S9(5)V9(5).
LINKAGE SECTION.
01 I OCCURS 1000 TIMES PIC S9(5)V9(5).
01 FIELDPRINT PIC S9(5)V9(5).
PROCEDURE DIVISION USING I FIELDPRINT.
MOVE 0 TO SUM.
PERFORM VARYING J FROM 1 BY 1 UNTIL J > 1000
COMPUTE SUM = SUM + FUNCTION ABS(I(J))
END-PERFORM.
COMPUTE FIELDPRINT = SUM / 1000.
GOBACK.
END PROGRAM RWD-FIELDPRINT.