Digital encoding of APL symbols

From Wikipedia, the free encyclopedia
  (Redirected from )

The programming language APL uses a number of symbols, rather than words from natural language, to identify operations, similarly to mathematical symbols. Prior to the wide adoption of Unicode, a number of special-purpose EBCDIC and non-EBCDIC code pages were used to represent the symbols required for writing APL.

Character sets[]

Due to its origins on IBM Selectric-based teleprinters, APL symbols have traditionally been represented on the wire using a unique, non-standard character set. In the 1960s and 1970s, few terminal devices existed which could reproduce them, the most popular ones being the IBM 2741 and IBM 1050 fitted with a specific APL print head. Over time, with the universal use of high-quality graphic display, printing devices and Unicode support, the APL character font problem has largely been eliminated.

Character repertoire[]

IBM assigns the following character IDs (GCGIDs) to APL syntax, which are used in the definitions of its code pages.[1][2][3]

"SL" (APL functional symbol) series GCGIDs
GCGID[2] IBM name[1][3] Unicode Notes and other mappings
SL010000 Up Stile (APL) U+2308 LEFT CEILING
SL020000 Down Stile (APL) U+230A LEFT FLOOR
SL030000 Del (APL) U+2207 NABLA
SL040000 Del Tilde (APL) U+236B APL FUNCTIONAL SYMBOL DEL TILDE
SL050000 Del Stile (APL) U+2352 APL FUNCTIONAL SYMBOL DEL STILE
SL060000 Delta (APL) U+2206 INCREMENT
SL070000 Delta Stile (APL) U+234B APL FUNCTIONAL SYMBOL DELTA STILE
SL080000 Circle (APL) U+25CB WHITE CIRCLE[4][5][6][7] This is SM750000 in a non-APL context, for example, in the C0 replacement graphics from code page 437,[8] which code pages 907, 909 and 910 inherit some or all of, retaining SM750000 in the C0 area and also including SL080000 outside of it.[9][10][11] Both map to U+25CB when APL is represented using Unicode characters, although SL080000 can be mapped to U+F890 in IBM's private use area scheme.[12] Compare SL590000 through SL620000 below.
SL090000 Circle Stile (APL) U+233D APL FUNCTIONAL SYMBOL CIRCLE STILE
SL100000 Circle Slope (APL) U+2349 APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH
SL110000 Circle Star (APL) U+235F APL FUNCTIONAL SYMBOL CIRCLE STAR
SL120000 Circle Bar U+2296 CIRCLED MINUS
SL130000 Quad Quote (APL) U+235E APL FUNCTIONAL SYMBOL QUOTE QUAD
SL140000 Quad Divide (APL) U+2339 APL FUNCTIONAL SYMBOL QUAD DIVIDE
SL150000 Slash Bar (APL) U+233F APL FUNCTIONAL SYMBOL SLASH BAR
SL160000 Slope Bar (APL) U+2340 APL FUNCTIONAL SYMBOL BACKSLASH BAR
SL170000 Up Caret Tilde (APL) U+2372 APL FUNCTIONAL SYMBOL UP CARET TILDE
SL180000 Down Caret Tilde (APL) U+2371 APL FUNCTIONAL SYMBOL DOWN CARET TILDE
SL190000 Down Tack Jot (APL)[a] U+234E APL FUNCTIONAL SYMBOL DOWN TACK JOT[a]
SL200000 Up Tack Jot (APL)[a] U+2355 APL FUNCTIONAL SYMBOL UP TACK JOT[a]
SL210000 Up Shoe Null (APL) U+235D APL FUNCTIONAL SYMBOL UP SHOE JOT
SL220000 Up Tack (APL)[a] U+22A4 DOWN TACK[a]
SL230000 Down Tack (APL)[a] U+22A5 UP TACK[a]
SL240000 Down Tack Up Tack (APL) U+2336 APL FUNCTIONAL SYMBOL I-BEAM
SL250000 Jot (APL) U+2218 RING OPERATOR
SL260000 Left Bracket Right Bracket (APL) U+2337 APL FUNCTIONAL SYMBOL SQUISH QUAD
SL270000 Quad Jot (APL) U+233B APL FUNCTIONAL SYMBOL QUAD JOT
SL280000 Quad Slope (APL) U+2342 APL FUNCTIONAL SYMBOL QUAD BACKSLASH
SL290000 Ampersand Underbar[3] Not used in any documented code page. Can be represented in Unicode with the sequence U+0026+U0332
SL300000 Equal Underbar (APL) U+2261 IDENTICAL TO
SL310000 OUT Symbol (APL)[3] Not used in any documented code page. Reference glyph resembles oblique underlined forms of the letters O, U and T overstruck in the same character position.
SL320000 Diaeresis Dot (APL) U+2235 BECAUSE
SL330000 Delta Underbar (APL) U+2359 APL FUNCTIONAL SYMBOL DELTA UNDERBAR
SL340000 Left Tack (APL)[a] U+22A2 RIGHT TACK[a]
SL350000 Right Tack (APL)[a] U+22A3 LEFT TACK[a]
SL360000 Quad (APL) U+2395 APL FUNCTIONAL SYMBOL QUAD[4][5] U+25AF WHITE VERTICAL RECTANGLE[3]
SL370000 Less Greater (APL) U+22C4 DIAMOND OPERATOR[4][5] U+25CA LOZENGE,[3] U+25C6 BLACK DIAMOND[6][13]
SL380000 Stile (APL) U+2223 DIVIDES[4][5] U+2502 BOX DRAWINGS LIGHT VERTICAL,[6][13] U+007C | VERTICAL LINE[7]
SL400000 Up Shoe (APL) U+2229 INTERSECTION[4][5][7] U+22C2 N-ARY INTERSECTION[13][6]
SL410000 Down Shoe (APL) U+222A UNION[4][5][7] U+22C3 N-ARY UNION[13][6]
SL420000 Left Shoe (APL) U+2282 SUBSET OF
SL430000 Right Shoe (APL) U+2283 SUPERSET OF
SL440000 Underbar (APL) U+005F _ LOW LINE
SL450000 Diaeresis (APL) U+00A8 ¨ DIAERESIS
SL460000 Tilde (APL) U+223C TILDE OPERATOR[4][5] U+F88F in IBM's private use area scheme.[12] Also mapped to U+007E ~ TILDE,[13][6][7] although SD190000 (U+007E in a non-APL context) co-occurs at 0xA1 (while SL460000 is at 0x80) in code page 213.[14]
SL480000 Circle Plus U+2295 CIRCLED PLUS
SL490000 Circle x U+2297 CIRCLED TIMES
SL500000 Down Caret (APL) U+2228 LOGICAL OR[13][6][4][5][3][7]
SL510000 Up Caret (APL) U+2227 LOGICAL AND[4][5][7] U+22C0 N-ARY LOGICAL AND[13][6]
SL520000 Less (APL) U+003C < LESS-THAN SIGN
SL530000 Greater (APL) U+003E > GREATER-THAN SIGN
SL540000 Divide (APL) U+00F7 ÷ DIVISION SIGN
SL550000 Times (APL) U+00D7 × MULTIPLICATION SIGN
SL560000 Not Greater (APL) U+2264 LESS-THAN OR EQUAL TO
SL570000 Not Less (APL) U+2265 GREATER-THAN OR EQUAL TO
SL580000 Quote Dot (APL) U+0021 ! EXCLAMATION MARK[13][6][5][7] U+F88E in IBM's private use area scheme.[12] SP020000 (U+0021 ! EXCLAMATION MARK in a non-APL context) co-occurs at 0x5A in code page 293 (SL580000 is at 0xDB in code pages 293 and 310).[14] Tachyonsoft lists U+01C3 ǃ LATIN LETTER RETROFLEX CLICK for SL580000.[4]
SL590000 Left Arrow (APL) U+2190 LEFTWARDS ARROW[4][5][6] These arrows are SM300000, SM310000, SM320000 and SM330000 respectively in a non-APL context, for example, in the C0 replacement graphics from code page 437,[8] which code pages 907, 909 and 910 inherit some or all of. Their APL GCGIDs can be mapped to U+F88D, U+F88C, U+F88B and U+F88A respectively in IBM's private use area scheme.[12]

Code pages 907 and 910 keep the non-APL GCGIDs for the C0 replacements but use the APL GCGIDs where the arrows appear outside of the C0 area, while code page 909 uses the APL GCGIDs multiple times, both for the C0 replacements and for between one and two occurrences of each of these arrows outside of the C0 area.[9][10][11]

Compare SL080000 above. Duplicating C0 replacement graphics outside of the C0 area is not an uncommon practice in DOS code pages: compare, for example, the pilcrow and section sign in code page 850.

SL600000 Right Arrow (APL) U+2192 RIGHTWARDS ARROW[4][5][6]
SL610000 Up Arrow (APL) U+2191 UPWARDS ARROW[4][5][6][7]
SL620000 Down Arrow (APL) U+2193 DOWNWARDS ARROW[4][5][6][7]
SL630000 Overbar (APL) U+203E OVERLINE
SL640000 Slope (APL) U+005C \ REVERSE SOLIDUS[13][6][5][7] U+F889 in IBM's private use area scheme.[12] Also mapped to U+2216 SET MINUS.[4] SM070000 (U+005C \ REVERSE SOLIDUS in a non-APL context) co-occurs at 0x5A (while SL640000 is at 0xB7) in code page 293.[14]
SL650000 Star (APL) U+22C6 STAR OPERATOR[5] U+002A * ASTERISK[15][7]
SL660000 Quote (APL) U+0027 ' APOSTROPHE
SL670000 Left Parenthesis (APL) U+0028 ( LEFT PARENTHESIS
SL680000 Right Parenthesis (APL) U+0029 ) RIGHT PARENTHESIS
SL690000 Bar (APL) U+002D - HYPHEN-MINUS[15][5][6][7] U+2212 MINUS SIGN
SL700000 Query (APL) U+003F ? QUESTION MARK U+F888 in IBM's private use area scheme.[12]
SL710000 Alpha (APL) U+237A APL FUNCTIONAL SYMBOL ALPHA[4][5] U+03B1 α GREEK SMALL LETTER ALPHA[13][6]
SL720000 Epsilon (APL) U+220A SMALL ELEMENT OF[5][3][7] U+03B5 ε GREEK SMALL LETTER EPSILON,[13][6] U+2208 ELEMENT OF[4]
SL730000 Iota (APL) U+2373 APL FUNCTIONAL SYMBOL IOTA[4][5] U+03B9 ι GREEK SMALL LETTER IOTA[13][6]
SL740000 Rho (APL) U+2374 APL FUNCTIONAL SYMBOL RHO[4][5] U+03C1 ρ GREEK SMALL LETTER RHO[13][6]
SL750000 Omega (APL) U+2375 APL FUNCTIONAL SYMBOL OMEGA[4][5] U+03C9 ω GREEK SMALL LETTER OMEGA[13][6]
SL760000 Slash (APL) U+002F / SOLIDUS
SL770000 Left Bracket (APL) U+005B [ LEFT SQUARE BRACKET
SL780000 Right Bracket (APL) U+005D ] RIGHT SQUARE BRACKET
SL790000 Plus (APL) U+002B + PLUS SIGN
SL800000 Semicolon (APL) U+003B ; SEMICOLON
SL810000 Equal (APL) U+003D = EQUALS SIGN
SL820000 Not Equal (APL) U+2260 NOT EQUAL TO
SL830000 Colon (APL) U+003A : COLON[6][5] Form with fullwidth attribute set (SL830080) is used for 0xA1C3 (i.e. U+2236 RATIO) in EUC-CN.[16]
SL840000 Dot (APL) U+002E . FULL STOP
SL850000 Comma (APL) U+002C , COMMA
SL860000 Iota Underbar (APL) U+2378 APL FUNCTIONAL SYMBOL IOTA UNDERBAR
SL870000 Epsilon Underbar (APL) U+2377 APL FUNCTIONAL SYMBOL EPSILON UNDERBAR

EBCDIC code pages[]

Code page 293[]

Code page 293 (CCSID 293),[17] called "APL (USA)", is an EBCDIC code page which includes APL symbols, in addition to preserving the basic Latin letters and Western Arabic numerals at their usual EBCDIC locations.[14][15]

Code page 293[18][14][15]
0 1 2 3 4 5 6 7 8 9 A B C D E F
0x NUL SOH STX ETX SEL  HT  RNL DEL  GE  SPS RPT  VT   FF   CR   SO   SI  
1x DLE DC1 DC2 DC3 RES/
ENP
 NL    BS  POC CAN  EM  UBS CU1  IFS  IGS  IRS IUS/
ITB
2x  DS  SOS  FS  WUS BYP/
INP
 LF  ETB ESC  SA  SFE  SM/
SW
CSP MFA ENQ ACK BEL
3x SYN   IR   PP  TRN NBS EOT SBS   IT  RFF CU3 DC4 NAK SUB
4x  SP 
WIKI