BEGIN MODE SSMODES = UNION(SHORT SHORT BITS, SHORT SHORT BYTES, #SHORT SHORT CHAR,# SHORT SHORT INT, SHORT SHORT REAL, SHORT SHORT COMPL); MODE SMODES = UNION(SHORT BITS, SHORT BYTES, #SHORT CHAR,# SHORT INT, SHORT REAL, SHORT COMPL); MODE NMODES = UNION(BITS, BYTES, CHAR, INT, REAL, COMPL); MODE LMODES = UNION(LONG BITS, LONG BYTES, #LONG CHAR,# LONG INT, LONG REAL, LONG COMPL); MODE LLMODES = UNION(LONG LONG BITS, LONG LONG BYTES, #LONG LONG CHAR,# LONG LONG INT, LONG LONG REAL, LONG LONG COMPL); MODE XMODES = UNION(BOOL, SEMA, STRING, VOID, CHANNEL, FILE, FORMAT); MODE MODES = UNION(SSMODES, SMODES, NMODES, LLMODES, LMODES, XMODES); OP REPRTYPEOF = (MODES val)STRING: CASE val IN (VOID):"VOID", (INT):"INT",(SHORT INT):"SHORT INT",(SHORT SHORT INT):"SHORT SHORT INT", (LONG INT):"LONG INT",(LONG LONG INT):"LONG LONG INT", (REAL):"REAL",(SHORT REAL):"SHORT REAL",(SHORT SHORT REAL):"SHORT SHORT REAL", (LONG REAL):"LONG REAL",(LONG LONG REAL):"LONG LONG REAL", (COMPL):"COMPL",(SHORT COMPL):"SHORT COMPL",(SHORT SHORT COMPL):"SHORT SHORT COMPL", (LONG COMPL):"LONG COMPL",(LONG LONG COMPL):"LONG LONG COMPL", (BITS):"BITS",(SHORT BITS):"SHORT BITS",(SHORT SHORT BITS):"SHORT SHORT BITS", (LONG BITS):"LONG BITS",(LONG LONG BITS):"LONG LONG BITS", (BYTES):"BYTES",(SHORT BYTES):"SHORT BYTES",(SHORT SHORT BYTES):"SHORT SHORT BYTES", (LONG BYTES):"LONG BYTES",(LONG LONG BYTES):"LONG LONG BYTES", (CHAR):"CHAR",#(SHORT CHAR):"SHORT CHAR",(SHORT SHORT CHAR):"SHORT SHORT CHAR", (LONG CHAR):"LONG CHAR",(LONG LONG CHAR):"LONG LONG CHAR",# (BOOL):"BOOL", (STRING):"STRING", (SEMA):"SEMA", (CHANNEL):"CHANNEL", (FILE):"FILE", (FORMAT):"FORMAT" OUT "ARRAY, PROC or STRUCT" ESAC; []MODES x = (EMPTY, 1, 2.0, 3I4, SHORT SHORT 5, SHORT 6, LONG 7, LONG LONG 8, 8r666, bytes pack("abc"), TRUE, "xyz", LEVEL 1, stand in channel, stand in, $ddd$); STRING sep := ""; print(("Array member types: ")); FOR i TO UPB x DO print((sep,REPRTYPEOF x[i])); sep := ", " OD END