proc damm(*char str) bool: [10][10]byte dammtbl = ( (0,3,1,7,5,9,8,6,4,2), (7,0,9,2,1,5,4,8,6,3), (4,2,0,6,8,7,1,3,5,9), (1,7,5,0,9,8,3,4,2,6), (6,1,2,3,0,4,5,9,7,8), (3,6,7,4,2,0,9,5,8,1), (5,8,6,9,7,2,0,1,3,4), (8,9,4,5,3,6,2,0,1,7), (9,4,3,8,6,1,7,2,0,5), (2,5,8,1,4,3,6,7,9,0) ); byte interim; char c; channel input text ch; interim := 0; open(ch, str); while read(ch; c) do interim := dammtbl[interim][c-'0'] od; close(ch); interim = 0 corp proc check(*char str) void: writeln(str, ": ", if damm(str) then "pass" else "fail" fi) corp proc main() void: check("5724"); check("5727"); check("112946"); check("112949"); corp