REM > Territories:Utilities.CharsTable ONERRORONERROROFF:ERROR0,REPORT$+" ("+STR$ERL+"/&"+STR$~ERR+")":END DIM lower% 255, upper% 255, control% 255, plain% 255, value% 255, properties% 32 * 11 PROCTB_Init ONERRORONERROROFF:PROCTB_Quit:ERROR0,REPORT$+" ("+STR$ERL+"/&"+STR$~ERR+")":END INPUT "Character set: "c$ f% = OPENIN("Territories:Tables." + c$ + ".!Chars") IF f% = 0 THEN ERROR 1, "Could not open file Territories:Tables." + c$ + ".!Chars‘" ONERRORONERROROFF:CLOSE#f%:PROCTB_Quit:ERROR0,REPORT$+" ("+STR$ERL+"/&"+STR$~ERR+")":END PROCTB_File("Territories:Tables." + c$ + ".!Chars") FOR b% = 0 TO 32 * 11 STEP 4 properties%!b% = 0 NEXT l% = 0 err% = FALSE REPEAT l$ = GET$#f% l% += 1 UNTIL LEFT$(l$, 1) <> "#" FOR c% = 0 TO 255 IF FNchar(FNcut(l$)) <> c% THEN PROCTB_Throwback(l%, 1, "Wrong or missing character, should be "+STR$c%): err% = TRUE lower%?c% = FNchar(FNcut(l$)) upper%?c% = FNchar(FNcut(l$)) control%?c% = FNchar(FNcut(l$)) plain%?c% = FNchar(FNcut(l$)) value%?c% = FNchar(FNcut(l$)) IF LENl$ <> 11 THEN PROCTB_Throwback(l%, 1, "Properties wrong or missing"): err% = TRUE FOR p% = 0 TO 10 IF LEFT$(l$, 1) = "1" THEN properties%?(32 * p% + (c% DIV 8)) = properties%?(32 * p% + (c% DIV 8)) OR (1 << (c% MOD 8)) l$ = MID$(l$, 2) NEXT IF EOF#f% AND c% <> 255 THEN PROCTB_Throwback(l%, 1, "Unexpected end of file"): err% = TRUE: GOTO 520 l$ = GET$#f% l% += 1 NEXT CLOSE#f% PROCTB_Quit IF err% THEN PRINT"Failed due to errors": END ONERRORONERROROFF:ERROR0,REPORT$+" ("+STR$ERL+"/&"+STR$~ERR+")":END SYS"OS_File", 10, "Territories:Tables." + c$ + ".LowerCase", &FFD,, lower%, lower% + 256 SYS"OS_File", 10, "Territories:Tables." + c$ + ".UpperCase", &FFD,, upper%, upper% + 256 SYS"OS_File", 10, "Territories:Tables." + c$ + ".Control", &FFD,, control%, control% + 256 SYS"OS_File", 10, "Territories:Tables." + c$ + ".Plain", &FFD,, plain%, plain% + 256 SYS"OS_File", 10, "Territories:Tables." + c$ + ".Value", &FFD,, value%, value% + 256 SYS"OS_File", 10, "Territories:Tables." + c$ + ".Property", &FFD,, properties%, properties% + 32 * 11 END REM ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜ DEF FNcut(RETURN o$) LOCAL p$ p$ = LEFT$(o$, INSTR(o$, CHR$9) - 1) o$ = MID$(o$, INSTR(o$, CHR$9) + 1) =p$ DEF FNchar(c$) IF LENc$ = 1 THEN =ASCc$ IF LEFT$(c$, 1) = "." THEN =VAL(MID$(c$, 2)) PROCTB_Throwback(l%, 1, "Character " + c$ + "‘ not understood") err% = TRUE =0 REM ˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜˜ DEF PROCTB_Init TB_Started% = FALSE SYS"XOS_CLI", "RMEnsure DDEUtils 0.00 RMLoad System:Modules.DDEUtils" SYS"XOS_SWINumberFromString",, "DDEUtils_ThrowbackStart" TO ;f% IF f% AND 1 THEN TB_DDE% = FALSE ELSE TB_DDE% = TRUE ENDPROC DEF PROCTB_File(File$) TB_File$ = File$ ENDPROC DEF PROCTB_Throwback(Line%, Severity%, Message$) IF TB_DDE% THEN IF NOT TB_Started% THEN SYS"DDEUtils_ThrowbackStart" TB_Started% = TRUE ENDIF SYS"DDEUtils_ThrowbackSend", 1,, TB_File$, Line%, Severity%, Message$ ELSE IF NOT TB_Started% THEN PRINT "Errors in file " + TB_File$ + "‘:" TB_Started% = TRUE ENDIF PRINT "Line " + STR$Line% + ": "; IF Severity% = 0 THEN PRINT "Warning: "; ELSE PRINT "Error: "; PRINT Message$ ENDIF ENDPROC DEF PROCTB_Quit IF TB_DDE% AND TB_Started% THEN SYS"DDEUtils_ThrowbackEnd" ENDPROC