// Print the ASCII table proc main(args) { var fmt = @"SL,Z2.2,X,A4,2X"; // Copy it because we might modify some chars const ctrl = { { "NUL", "SOH", "STX", "ETX", "EOT", "ENQ", "ACK", "BEL" }, { "BS", "TAB", "LF", "VT", "FF", "CR", "SO", "SI" }, { "DLE", "DC1", "DC2", "DC3", "DC4", "NAK", "SYN", "ETB" }, { "CAN", "EM", "SUB", "ESC", "FS", "GS", "RS", "US" } }; for (var i = 1; i < args.length(); i++) { switch (args[i]) { case "-d" : fmt[3:6] = "I3 "; case "-o" : fmt[3:6] = "O3.3"; case "-x" : fmt[3:6] = "Z2.2"; default : "Usage: ascii [-d] [-o] [-x]\n"; " -d print decimal numbers\n"; " -o print octal numbers\n"; " -x print hex numbers\n"; oadl::halt(); } } var tab = new Array(16,16); for (var i = 0; i < 16; i++) { var ch = 8*i; for (var j = 0; j < 8; j++, ch++) { var col = 2*j; tab[i,col ] = ch; if (i < 4) { tab[i,col+1] = ctrl[i][j]; } else if (ch == 32) { tab[i,col+1] = "SP"; } else if (ch == 127) { tab[i,col+1] = "DEL"; } else { tab[i,col+1] = Char(ch); } } } print(fmt, tab); }