39 lines
1.3 KiB
Plaintext
39 lines
1.3 KiB
Plaintext
NORMAL MODE IS INTEGER
|
|
|
|
R VERIFY DAMM CHECKSUM OF NUMBER
|
|
INTERNAL FUNCTION(CKNUM)
|
|
VECTOR VALUES DAMMIT =
|
|
0 0,3,1,7,5,9,8,6,4,2
|
|
1 , 7,0,9,2,1,5,4,8,6,3
|
|
2 , 4,2,0,6,8,7,1,3,5,9
|
|
3 , 1,7,5,0,9,8,3,4,2,6
|
|
4 , 6,1,2,3,0,4,5,9,7,8
|
|
5 , 3,6,7,4,2,0,9,5,8,1
|
|
6 , 5,8,6,9,7,2,0,1,3,4
|
|
7 , 8,9,4,5,3,6,2,0,1,7
|
|
8 , 9,4,3,8,6,1,7,2,0,5
|
|
9 , 2,5,8,1,4,3,6,7,9,0
|
|
DIMENSION DAMDGT(10)
|
|
ENTRY TO DAMM.
|
|
TMP=CKNUM
|
|
THROUGH GETDGT, FOR NDGT=0, 1, TMP.E.0
|
|
DAMDGT(NDGT) = TMP-TMP/10*10
|
|
GETDGT TMP = TMP/10
|
|
INTRM = 0
|
|
THROUGH CKDGT, FOR NDGT=NDGT, -1, NDGT.L.0
|
|
CKDGT INTRM = DAMMIT(INTRM*10 + DAMDGT(NDGT))
|
|
FUNCTION RETURN INTRM.E.0
|
|
END OF FUNCTION
|
|
|
|
R TEST SOME NUMBERS
|
|
THROUGH TEST, FOR VALUES OF N = 5724,5727,112946,112949
|
|
WHENEVER DAMM.(N)
|
|
PRINT FORMAT VALID,N
|
|
OTHERWISE
|
|
PRINT FORMAT INVAL,N
|
|
TEST END OF CONDITIONAL
|
|
|
|
VECTOR VALUES VALID = $I9,S1,5HVALID*$
|
|
VECTOR VALUES INVAL = $I9,S1,7HINVALID*$
|
|
END OF PROGRAM
|