Data update
This commit is contained in:
parent
4bb20c9b71
commit
cbaf4c4b64
12390 changed files with 318560 additions and 27248 deletions
197
Task/Damm-algorithm/COBOL/damm-algorithm.cob
Normal file
197
Task/Damm-algorithm/COBOL/damm-algorithm.cob
Normal file
|
|
@ -0,0 +1,197 @@
|
|||
IDENTIFICATION DIVISION.
|
||||
PROGRAM-ID. DAMM-ALGORITHM.
|
||||
|
||||
DATA DIVISION.
|
||||
WORKING-STORAGE SECTION.
|
||||
|
||||
*> Damm quasi-group table (10x10)
|
||||
01 DAMM-TABLE.
|
||||
05 ROW-0.
|
||||
10 FILLER PIC 9 VALUE 0.
|
||||
10 FILLER PIC 9 VALUE 3.
|
||||
10 FILLER PIC 9 VALUE 1.
|
||||
10 FILLER PIC 9 VALUE 7.
|
||||
10 FILLER PIC 9 VALUE 5.
|
||||
10 FILLER PIC 9 VALUE 9.
|
||||
10 FILLER PIC 9 VALUE 8.
|
||||
10 FILLER PIC 9 VALUE 6.
|
||||
10 FILLER PIC 9 VALUE 4.
|
||||
10 FILLER PIC 9 VALUE 2.
|
||||
05 ROW-1.
|
||||
10 FILLER PIC 9 VALUE 7.
|
||||
10 FILLER PIC 9 VALUE 0.
|
||||
10 FILLER PIC 9 VALUE 9.
|
||||
10 FILLER PIC 9 VALUE 2.
|
||||
10 FILLER PIC 9 VALUE 1.
|
||||
10 FILLER PIC 9 VALUE 5.
|
||||
10 FILLER PIC 9 VALUE 4.
|
||||
10 FILLER PIC 9 VALUE 8.
|
||||
10 FILLER PIC 9 VALUE 6.
|
||||
10 FILLER PIC 9 VALUE 3.
|
||||
05 ROW-2.
|
||||
10 FILLER PIC 9 VALUE 4.
|
||||
10 FILLER PIC 9 VALUE 2.
|
||||
10 FILLER PIC 9 VALUE 0.
|
||||
10 FILLER PIC 9 VALUE 6.
|
||||
10 FILLER PIC 9 VALUE 8.
|
||||
10 FILLER PIC 9 VALUE 7.
|
||||
10 FILLER PIC 9 VALUE 1.
|
||||
10 FILLER PIC 9 VALUE 3.
|
||||
10 FILLER PIC 9 VALUE 5.
|
||||
10 FILLER PIC 9 VALUE 9.
|
||||
05 ROW-3.
|
||||
10 FILLER PIC 9 VALUE 1.
|
||||
10 FILLER PIC 9 VALUE 7.
|
||||
10 FILLER PIC 9 VALUE 5.
|
||||
10 FILLER PIC 9 VALUE 0.
|
||||
10 FILLER PIC 9 VALUE 9.
|
||||
10 FILLER PIC 9 VALUE 8.
|
||||
10 FILLER PIC 9 VALUE 3.
|
||||
10 FILLER PIC 9 VALUE 4.
|
||||
10 FILLER PIC 9 VALUE 2.
|
||||
10 FILLER PIC 9 VALUE 6.
|
||||
05 ROW-4.
|
||||
10 FILLER PIC 9 VALUE 6.
|
||||
10 FILLER PIC 9 VALUE 1.
|
||||
10 FILLER PIC 9 VALUE 2.
|
||||
10 FILLER PIC 9 VALUE 3.
|
||||
10 FILLER PIC 9 VALUE 0.
|
||||
10 FILLER PIC 9 VALUE 4.
|
||||
10 FILLER PIC 9 VALUE 5.
|
||||
10 FILLER PIC 9 VALUE 9.
|
||||
10 FILLER PIC 9 VALUE 7.
|
||||
10 FILLER PIC 9 VALUE 8.
|
||||
05 ROW-5.
|
||||
10 FILLER PIC 9 VALUE 3.
|
||||
10 FILLER PIC 9 VALUE 6.
|
||||
10 FILLER PIC 9 VALUE 7.
|
||||
10 FILLER PIC 9 VALUE 4.
|
||||
10 FILLER PIC 9 VALUE 2.
|
||||
10 FILLER PIC 9 VALUE 0.
|
||||
10 FILLER PIC 9 VALUE 9.
|
||||
10 FILLER PIC 9 VALUE 5.
|
||||
10 FILLER PIC 9 VALUE 8.
|
||||
10 FILLER PIC 9 VALUE 1.
|
||||
05 ROW-6.
|
||||
10 FILLER PIC 9 VALUE 5.
|
||||
10 FILLER PIC 9 VALUE 8.
|
||||
10 FILLER PIC 9 VALUE 6.
|
||||
10 FILLER PIC 9 VALUE 9.
|
||||
10 FILLER PIC 9 VALUE 7.
|
||||
10 FILLER PIC 9 VALUE 2.
|
||||
10 FILLER PIC 9 VALUE 0.
|
||||
10 FILLER PIC 9 VALUE 1.
|
||||
10 FILLER PIC 9 VALUE 3.
|
||||
10 FILLER PIC 9 VALUE 4.
|
||||
05 ROW-7.
|
||||
10 FILLER PIC 9 VALUE 8.
|
||||
10 FILLER PIC 9 VALUE 9.
|
||||
10 FILLER PIC 9 VALUE 4.
|
||||
10 FILLER PIC 9 VALUE 5.
|
||||
10 FILLER PIC 9 VALUE 3.
|
||||
10 FILLER PIC 9 VALUE 6.
|
||||
10 FILLER PIC 9 VALUE 2.
|
||||
10 FILLER PIC 9 VALUE 0.
|
||||
10 FILLER PIC 9 VALUE 1.
|
||||
10 FILLER PIC 9 VALUE 7.
|
||||
05 ROW-8.
|
||||
10 FILLER PIC 9 VALUE 9.
|
||||
10 FILLER PIC 9 VALUE 4.
|
||||
10 FILLER PIC 9 VALUE 3.
|
||||
10 FILLER PIC 9 VALUE 8.
|
||||
10 FILLER PIC 9 VALUE 6.
|
||||
10 FILLER PIC 9 VALUE 1.
|
||||
10 FILLER PIC 9 VALUE 7.
|
||||
10 FILLER PIC 9 VALUE 2.
|
||||
10 FILLER PIC 9 VALUE 0.
|
||||
10 FILLER PIC 9 VALUE 5.
|
||||
05 ROW-9.
|
||||
10 FILLER PIC 9 VALUE 2.
|
||||
10 FILLER PIC 9 VALUE 5.
|
||||
10 FILLER PIC 9 VALUE 8.
|
||||
10 FILLER PIC 9 VALUE 1.
|
||||
10 FILLER PIC 9 VALUE 4.
|
||||
10 FILLER PIC 9 VALUE 3.
|
||||
10 FILLER PIC 9 VALUE 6.
|
||||
10 FILLER PIC 9 VALUE 7.
|
||||
10 FILLER PIC 9 VALUE 9.
|
||||
10 FILLER PIC 9 VALUE 0.
|
||||
|
||||
*> Redefine table as a 2D array for indexed access
|
||||
01 DAMM-TABLE-R REDEFINES DAMM-TABLE.
|
||||
05 DAMM-ROW OCCURS 10 TIMES.
|
||||
10 DAMM-CELL OCCURS 10 TIMES PIC 9.
|
||||
|
||||
*> Test numbers
|
||||
01 TEST-NUMBERS.
|
||||
05 TEST-NUM PIC 9(6) VALUE 005724.
|
||||
05 TEST-NUM PIC 9(6) VALUE 005727.
|
||||
05 TEST-NUM PIC 9(6) VALUE 112946.
|
||||
05 TEST-NUM PIC 9(6) VALUE 112949.
|
||||
|
||||
01 TEST-NUMBERS-R REDEFINES TEST-NUMBERS.
|
||||
05 TEST-ENTRY OCCURS 4 TIMES PIC 9(6).
|
||||
|
||||
*> Working variables
|
||||
01 WS-NUMBER-STR PIC X(6).
|
||||
01 WS-INTERIM PIC 9 VALUE 0.
|
||||
01 WS-DIGIT PIC 9.
|
||||
01 WS-ROW-IDX PIC 99.
|
||||
01 WS-COL-IDX PIC 99.
|
||||
01 WS-CHAR-POS PIC 9.
|
||||
01 WS-STR-LEN PIC 9.
|
||||
01 WS-LOOP-IDX PIC 9.
|
||||
01 WS-NUM-IDX PIC 9.
|
||||
01 WS-IS-VALID PIC X VALUE 'N'.
|
||||
01 WS-DISPLAY-NUM PIC Z(5)9.
|
||||
|
||||
PROCEDURE DIVISION.
|
||||
|
||||
MAIN-PARA.
|
||||
PERFORM VARYING WS-NUM-IDX FROM 1 BY 1
|
||||
UNTIL WS-NUM-IDX > 4
|
||||
|
||||
MOVE TEST-ENTRY(WS-NUM-IDX) TO WS-DISPLAY-NUM
|
||||
MOVE TEST-ENTRY(WS-NUM-IDX) TO WS-NUMBER-STR
|
||||
|
||||
*> Strip leading zeros to get actual digit string
|
||||
MOVE FUNCTION TRIM(WS-NUMBER-STR LEADING)
|
||||
TO WS-NUMBER-STR
|
||||
MOVE FUNCTION LENGTH(
|
||||
FUNCTION TRIM(WS-NUMBER-STR TRAILING))
|
||||
TO WS-STR-LEN
|
||||
|
||||
PERFORM DAMM-CHECK
|
||||
|
||||
IF WS-IS-VALID = 'Y'
|
||||
DISPLAY WS-DISPLAY-NUM " is valid"
|
||||
ELSE
|
||||
DISPLAY WS-DISPLAY-NUM " is invalid"
|
||||
END-IF
|
||||
|
||||
END-PERFORM
|
||||
|
||||
STOP RUN.
|
||||
|
||||
DAMM-CHECK.
|
||||
MOVE 0 TO WS-INTERIM
|
||||
|
||||
PERFORM VARYING WS-CHAR-POS FROM 1 BY 1
|
||||
UNTIL WS-CHAR-POS > WS-STR-LEN
|
||||
|
||||
MOVE WS-NUMBER-STR(WS-CHAR-POS:1) TO WS-DIGIT
|
||||
|
||||
*> Table is 1-indexed in COBOL, so add 1 to row/col
|
||||
COMPUTE WS-ROW-IDX = WS-INTERIM + 1
|
||||
COMPUTE WS-COL-IDX = WS-DIGIT + 1
|
||||
|
||||
MOVE DAMM-CELL(WS-ROW-IDX, WS-COL-IDX)
|
||||
TO WS-INTERIM
|
||||
|
||||
END-PERFORM
|
||||
|
||||
IF WS-INTERIM = 0
|
||||
MOVE 'Y' TO WS-IS-VALID
|
||||
ELSE
|
||||
MOVE 'N' TO WS-IS-VALID
|
||||
END-IF.
|
||||
Loading…
Add table
Add a link
Reference in a new issue