Locale:...:IBM420(3)
π Locale::...::IBM420(3) β User Contributed Perl Documentation
okay so bestie, before we even start: this is the Locale:...:IBM420(3) page, and it's filed under User Contributed Perl Documentation. Cute, right? Now let's get into it β¨
π NAME π
Locale::RecodeData::IBM420 β conversion routines for IBM420. that's it, that's the whole vibe. it does one thing and it does it slayfully π
β¨ SYNOPSIS β¨
This module is internal to libintl. Do not use directly!
ngl this is the shortest synopsis I've ever seen and it's literally just a warning π like β this module is internal to libintl, okay? Do not use it directly. fr fr. it's giving "backstage pass only", not "main character energy". respect the velvet rope π«Ά
πΈ DESCRIPTION πΈ
So. This module is generated β like, nobody sat down and hand-wrote these vibes, a machine made it β and it contains the conversion tables and routines for IBM420.
that's the whole description. tables + routines, IBM420 flavoured. iconic, lowkey π¦
π COMMENTS π
Bestie, the following comments have been extracted from the original charmap β so these are the receipts, exactly as they came π
version: 1.0
source: IBM NLS RM Vol2 SE09-8002-01, March 1990
IBM NLS RM p 11-11
alias CP420
alias EBCDIC-CP-AR1
So we got version: 1.0, and the source is IBM NLS RM Vol2 SE09-8002-01, March 1990, plus IBM NLS RM p 11-11. The aliases are CP420 and EBCDIC-CP-AR1 π
β οΈ okay important vibe check: please note that aliases listed above are not necessarily valid! like, do not just assume CP420 will work everywhere just because it's written there. the manpage said it, I'm just passing the message along π
π₯ CHARACTER TABLE π₯
Okay so here's the fun part β the following table is sorted in the same order as the original charmap. All character codes are in hexadecimal. And please read 'ISO-10646' as 'ISO-10646-UCS4' β that's the rule, iykyk β
(the table itself is coming at you in the next part, bestie β stay with me π)
okay bestie, buckle up, because this next bit is the actual receipts β every single byte of the IBM420 charset mapped to its ISO-10646 code point. it's long. it's giving phonebook. but every row is real and you're gonna need all of them, so we're doing this together πͺ
the three columns are: Local byte position, ISO-10646 code point, and the Description. let's go, control-character era first:
Local | ISO-10646 | Description
-------+-----------+-------------------------------------------------
00 | 00000000 | NULL (NUL)
01 | 00000001 | START OF HEADING (SOH)
02 | 00000002 | START OF TEXT (STX)
03 | 00000003 | END OF TEXT (ETX)
04 | 0000009C | STRING TERMINATOR (ST)
05 | 00000009 | CHARACTER TABULATION (HT)
06 | 00000086 | START OF SELECTED AREA (SSA)
07 | 0000007F | DELETE (DEL)
08 | 00000097 | END OF GUARDED AREA (EPA)
09 | 0000008D | REVERSE LINE FEED (RI)
0A | 0000008E | SINGLE-SHIFT TWO (SS2)
0B | 0000000B | LINE TABULATION (VT)
0C | 0000000C | FORM FEED (FF)
0D | 0000000D | CARRIAGE RETURN (CR)
0E | 0000000E | SHIFT OUT (SO)
0F | 0000000F | SHIFT IN (SI)
10 | 00000010 | DATALINK ESCAPE (DLE)
11 | 00000011 | DEVICE CONTROL ONE (DC1)
12 | 00000012 | DEVICE CONTROL TWO (DC2)
13 | 00000013 | DEVICE CONTROL THREE (DC3)
14 | 0000009D | OPERATING SYSTEM COMMAND (OSC)
15 | 00000085 | NEXT LINE (NEL)
16 | 00000008 | BACKSPACE (BS)
17 | 00000087 | END OF SELECTED AREA (ESA)
18 | 00000018 | CANCEL (CAN)
19 | 00000019 | END OF MEDIUM (EM)
1A | 00000092 | PRIVATE USE TWO (PU2)
1B | 0000008F | SINGLE-SHIFT THREE (SS3)
1C | 0000001C | FILE SEPARATOR (IS4)
1D | 0000001D | GROUP SEPARATOR (IS3)
1E | 0000001E | RECORD SEPARATOR (IS2)
1F | 0000001F | UNIT SEPARATOR (IS1)
20 | 00000080 | PADDING CHARACTER (PAD)
21 | 00000081 | HIGH OCTET PRESET (HOP)
22 | 00000082 | BREAK PERMITTED HERE (BPH)
23 | 00000083 | NO BREAK HERE (NBH)
24 | 00000084 | INDEX (IND)
25 | 0000000A | LINE FEED (LF)
26 | 00000017 | END OF TRANSMISSION BLOCK (ETB)
27 | 0000001B | ESCAPE (ESC)
28 | 00000088 | CHARACTER TABULATION SET (HTS)
29 | 00000089 | CHARACTER TABULATION WITH JUSTIFICATION (HTJ)
2A | 0000008A | LINE TABULATION SET (VTS)
2B | 0000008B | PARTIAL LINE FORWARD (PLD)
2C | 0000008C | PARTIAL LINE BACKWARD (PLU)
2D | 00000005 | ENQUIRY (ENQ)
2E | 00000006 | ACKNOWLEDGE (ACK)
2F | 00000007 | BELL (BEL)
30 | 00000090 | DEVICE CONTROL STRING (DCS)
31 | 00000091 | PRIVATE USE ONE (PU1)
32 | 00000016 | SYNCHRONOUS IDLE (SYN)
33 | 00000093 | SET TRANSMIT STATE (STS)
34 | 00000094 | CANCEL CHARACTER (CCH)
35 | 00000095 | MESSAGE WAITING (MW)
36 | 00000096 | START OF GUARDED AREA (SPA)
37 | 00000004 | END OF TRANSMISSION (EOT)
38 | 00000098 | START OF STRING (SOS)
39 | 00000099 | SINGLE GRAPHIC CHARACTER INTRODUCER (SGCI)
3A | 0000009A | SINGLE CHARACTER INTRODUCER (SCI)
3B | 0000009B | CONTROL SEQUENCE INTRODUCER (CSI)
3C | 00000014 | DEVICE CONTROL FOUR (DC4)
3D | 00000015 | NEGATIVE ACKNOWLEDGE (NAK)
3E | 0000009E | PRIVACY MESSAGE (PM)
3F | 0000001A | SUBSTITUTE (SUB)
not the ISO-10646 column being completely out of order for the control range π like 0A is 0000008E and 25 is 0000000A?? the vibes are chaos but the mapping is the mapping, don't come for me.
next chunk β space, punctuation, and the Arabic letters start pulling up πΈ
40 | 00000020 | SPACE
41 | 000000A0 | NO-BREAK SPACE
42 | 00000651 | ARABIC SHADDA
43 | 0000FE7D | ARABIC SHADDA MEDIAL FORM
44 | 00000640 | ARABIC TATWEEL
46 | 00000621 | ARABIC LETTER HAMZA
47 | 00000622 | ARABIC LETTER ALEF WITH MADDA ABOVE
48 | 0000FE82 | ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM
49 | 00000623 | ARABIC LETTER ALEF WITH HAMZA ABOVE
4A | 000000A2 | CENT SIGN
4B | 0000002E | FULL STOP
4C | 0000003C | LESS-THAN SIGN
4D | 00000028 | LEFT PARENTHESIS
4E | 0000002B | PLUS SIGN
4F | 0000007C | VERTICAL LINE
50 | 00000026 | AMPERSAND
51 | 0000FE84 | ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM
52 | 00000624 | ARABIC LETTER WAW WITH HAMZA ABOVE
55 | 00000626 | ARABIC LETTER YEH WITH HAMZA ABOVE
56 | 00000627 | ARABIC LETTER ALEF
57 | 0000FE8E | ARABIC LETTER ALEF FINAL FORM
58 | 00000628 | ARABIC LETTER BEH
59 | 0000FE91 | ARABIC LETTER BEH INITIAL FORM
5A | 00000021 | EXCLAMATION MARK
5B | 00000024 | DOLLAR SIGN
5C | 0000002A | ASTERISK
5D | 00000029 | RIGHT PARENTHESIS
5E | 0000003B | SEMICOLON
5F | 000000AC | NOT SIGN
60 | 0000002D | HYPHEN-MINUS
61 | 0000002F | SOLIDUS
62 | 00000629 | ARABIC LETTER TEH MARBUTA
63 | 0000062A | ARABIC LETTER TEH
64 | 0000FE97 | ARABIC LETTER TEH INITIAL FORM
65 | 0000062B | ARABIC LETTER THEH
66 | 0000FE9B | ARABIC LETTER THEH INITIAL FORM
67 | 0000062C | ARABIC LETTER JEEM
68 | 0000FE9F | ARABIC LETTER JEEM INITIAL FORM
69 | 0000062D | ARABIC LETTER HAH
6A | 000000A6 | BROKEN BAR
6B | 0000002C | COMMA
6C | 00000025 | PERCENT SIGN
6D | 0000005F | LOW LINE
6E | 0000003E | GREATER-THAN SIGN
6F | 0000003F | QUESTION MARK
70 | 0000FEA3 | ARABIC LETTER HAH INITIAL FORM
71 | 0000062E | ARABIC LETTER KHAH
72 | 0000FEA7 | ARABIC LETTER KHAH INITIAL FORM
73 | 0000062F | ARABIC LETTER DAL
74 | 00000630 | ARABIC LETTER THAL
75 | 00000631 | ARABIC LETTER REH
76 | 00000632 | ARABIC LETTER ZAIN
77 | 00000633 | ARABIC LETTER SEEN
78 | 0000FEB3 | ARABIC LETTER SEEN INITIAL FORM
79 | 0000060C | ARABIC COMMA
7A | 0000003A | COLON
7B | 00000023 | NUMBER SIGN
7C | 00000040 | COMMERCIAL AT
7D | 00000027 | APOSTROPHE
7E | 0000003D | EQUALS SIGN
7F | 00000022 | QUOTATION MARK
β οΈ heads up:45,53and54are genuinely not in the table β no entry, no row, nada. don't go looking for them and don't invent them π«Ά
okay and now the lowercase latin block shows up inside the Arabic run β which is a lot, but it's what's in the table, no cap:
80 | 00000634 | ARABIC LETTER SHEEN
81 | 00000061 | LATIN SMALL LETTER A
82 | 00000062 | LATIN SMALL LETTER B
83 | 00000063 | LATIN SMALL LETTER C
84 | 00000064 | LATIN SMALL LETTER D
85 | 00000065 | LATIN SMALL LETTER E
86 | 00000066 | LATIN SMALL LETTER F
87 | 00000067 | LATIN SMALL LETTER G
88 | 00000068 | LATIN SMALL LETTER H
89 | 00000069 | LATIN SMALL LETTER I
8A | 0000FEB7 | ARABIC LETTER SHEEN INITIAL FORM
8B | 00000635 | ARABIC LETTER SAD
8C | 0000FEBB | ARABIC LETTER SAD INITIAL FORM
8D | 00000636 | ARABIC LETTER DAD
8E | 0000FEBF | ARABIC LETTER DAD INITIAL FORM
8F | 00000637 | ARABIC LETTER TAH
90 | 00000638 | ARABIC LETTER ZAH
91 | 0000006A | LATIN SMALL LETTER J
92 | 0000006B | LATIN SMALL LETTER K
93 | 0000006C | LATIN SMALL LETTER L
94 | 0000006D | LATIN SMALL LETTER M
95 | 0000006E | LATIN SMALL LETTER N
96 | 0000006F | LATIN SMALL LETTER O
97 | 00000070 | LATIN SMALL LETTER P
98 | 00000071 | LATIN SMALL LETTER Q
99 | 00000072 | LATIN SMALL LETTER R
9A | 00000639 | ARABIC LETTER AIN
9B | 0000FECA | ARABIC LETTER AIN FINAL FORM
9C | 0000FECB | ARABIC LETTER AIN INITIAL FORM
9D | 0000FECC | ARABIC LETTER AIN MEDIAL FORM
9E | 0000063A | ARABIC LETTER GHAIN
9F | 0000FECE | ARABIC LETTER GHAIN FINAL FORM
A0 | 0000FECF | ARABIC LETTER GHAIN INITIAL FORM
A1 | 000000F7 | DIVISION SIGN
A2 | 00000073 | LATIN SMALL LETTER S
A3 | 00000074 | LATIN SMALL LETTER T
A4 | 00000075 | LATIN SMALL LETTER U
A5 | 00000076 | LATIN SMALL LETTER V
A6 | 00000077 | LATIN SMALL LETTER W
A7 | 00000078 | LATIN SMALL LETTER X
A8 | 00000079 | LATIN SMALL LETTER Y
A9 | 0000007A | LATIN SMALL LETTER Z
AA | 0000FED0 | ARABIC LETTER GHAIN MEDIAL FORM
AB | 00000641 | ARABIC LETTER FEH
AC | 0000FED3 | ARABIC LETTER FEH INITIAL FORM
AD | 00000642 | ARABIC LETTER QAF
AE | 0000FED7 | ARABIC LETTER QAF INITIAL FORM
AF | 00000643 | ARABIC LETTER KAF
B0 | 0000FEDB | ARABIC LETTER KAF INITIAL FORM
B1 | 00000644 | ARABIC LETTER LAM
B2 | 0000FEF5 | ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM
B3 | 0000FEF6 | ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM
B4 | 0000FEF7 | ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM
B5 | 0000FEF8 | ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM
B8 | 0000FEFB | ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM
B9 | 0000FEFC | ARABIC LIGATURE LAM WITH ALEF FINAL FORM
BA | 0000FEDF | ARABIC LETTER LAM INITIAL FORM
BB | 00000645 | ARABIC LETTER MEEM
BC | 0000FEE3 | ARABIC LETTER MEEM INITIAL FORM
BD | 00000646 | ARABIC LETTER NOON
BE | 0000FEE7 | ARABIC LETTER NOON INITIAL FORM
BF | 00000647 | ARABIC LETTER HEH
π also missing:B6andB7. the ligatures go straight fromB5toB8. that's not me skipping, that's literally the table.
and the finale β uppercase latin, the arabic-indic digits, and a couple of math signs being their iconic selves β¨:
C0 | 0000061B | ARABIC SEMICOLON
C1 | 00000041 | LATIN CAPITAL LETTER A
C2 | 00000042 | LATIN CAPITAL LETTER B
C3 | 00000043 | LATIN CAPITAL LETTER C
C4 | 00000044 | LATIN CAPITAL LETTER D
C5 | 00000045 | LATIN CAPITAL LETTER E
C6 | 00000046 | LATIN CAPITAL LETTER F
C7 | 00000047 | LATIN CAPITAL LETTER G
C8 | 00000048 | LATIN CAPITAL LETTER H
C9 | 00000049 | LATIN CAPITAL LETTER I
CA | 000000AD | SOFT HYPHEN
CB | 0000FEEB | ARABIC LETTER HEH INITIAL FORM
CD | 0000FEEC | ARABIC LETTER HEH MEDIAL FORM
CF | 00000648 | ARABIC LETTER WAW
D0 | 0000061F | ARABIC QUESTION MARK
D1 | 0000004A | LATIN CAPITAL LETTER J
D2 | 0000004B | LATIN CAPITAL LETTER K
D3 | 0000004C | LATIN CAPITAL LETTER L
D4 | 0000004D | LATIN CAPITAL LETTER M
D5 | 0000004E | LATIN CAPITAL LETTER N
D6 | 0000004F | LATIN CAPITAL LETTER O
D7 | 00000050 | LATIN CAPITAL LETTER P
D8 | 00000051 | LATIN CAPITAL LETTER Q
D9 | 00000052 | LATIN CAPITAL LETTER R
DA | 00000649 | ARABIC LETTER ALEF MAKSURA
DB | 0000FEF0 | ARABIC LETTER ALEF MAKSURA FINAL FORM
DC | 0000064A | ARABIC LETTER YEH
DD | 0000FEF2 | ARABIC LETTER YEH FINAL FORM
DE | 0000FEF3 | ARABIC LETTER YEH INITIAL FORM
DF | 00000660 | ARABIC-INDIC DIGIT ZERO
E0 | 000000D7 | MULTIPLICATION SIGN
E2 | 00000053 | LATIN CAPITAL LETTER S
E3 | 00000054 | LATIN CAPITAL LETTER T
E4 | 00000055 | LATIN CAPITAL LETTER U
E5 | 00000056 | LATIN CAPITAL LETTER V
E6 | 00000057 | LATIN CAPITAL LETTER W
E7 | 00000058 | LATIN CAPITAL LETTER X
E8 | 00000059 | LATIN CAPITAL LETTER Y
E9 | 0000005A | LATIN CAPITAL LETTER Z
EA | 00000661 | ARABIC-INDIC DIGIT ONE
EB | 00000662 | ARABIC-INDIC DIGIT TWO
ED | 00000663 | ARABIC-INDIC DIGIT THREE
EE | 00000664 | ARABIC-INDIC DIGIT FOUR
EF | 00000665 | ARABIC-INDIC DIGIT FIVE
F0 | 00000030 | DIGIT ZERO
F1 | 00000031 | DIGIT ONE
F2 | 00000032 | DIGIT TWO
last set of gaps, since I know you're gonna ask: CC, CE and E1 are also straight-up absent from the table π so the run goes CB β CD, CD β CF, and E0 β E2.
and yes bestie, the table really does stop at F2. that's not me trailing off mid-sentence, that's where it ends. next bit of the page still coming π
F3 | 00000033 | DIGIT THREE
F4 | 00000034 | DIGIT FOUR
F5 | 00000035 | DIGIT FIVE
F6 | 00000036 | DIGIT SIX
F7 | 00000037 | DIGIT SEVEN
F8 | 00000038 | DIGIT EIGHT
F9 | 00000039 | DIGIT NINE
FB | 00000666 | ARABIC-INDIC DIGIT SIX
FC | 00000667 | ARABIC-INDIC DIGIT SEVEN
FD | 00000668 | ARABIC-INDIC DIGIT EIGHT
FE | 00000669 | ARABIC-INDIC DIGIT NINE
FF | 0000009F | APPLICATION PROGRAM COMMAND (APC)
okay so that's the tail end of the table, bestie πΈ β the plain old digits F3βF9 mapping to 00000033β00000039, and then the glow-up: FBβFE are the ARABIC-INDIC DIGITs SIX through NINE mapping to 00000666β00000669, and then the very last byte, FF, closes out the whole thing as APPLICATION PROGRAM COMMAND (APC) at 0000009F. Like, the literal final boss of the table π iconic behaviour, honestly.
π AUTHOR π
Copyright (C) 2002-2017 Guido Flohr <http://www.guido-flohr.net/> (<mailto:guido.flohr@cantanea.com>), all rights reserved. See the source code for details!
ngl the original literally says "See the source code for details!code for details!" β that double-take is in the page, so I'm keeping it fr fr π we don't erase history in this house.
π SEE ALSO π
Locale::RecodeData(3)β the data-side bestieLocale::Recode(3)β the actual recoding main characterperl(1)β mother, obviously π
and that's a wrap on the whole page, bestie ππ«Ά this one's from perl v5.42.0, dated 2025-01-22 β go forth and encode responsibly, mwah πβ¨
π¦ where this page comes from
- opensuse-leap 16.0: perl-libintl-perl 1.350.0-160000.2.2 Β· GPL-3.0-or-later
- opensuse-leap 16.0: perl-libintl-perl 1.350.0-160000.2.2 Β· GPL-3.0-or-later
- opensuse-leap 16.0: perl-libintl-perl 1.350.0-160000.2.2 Β· GPL-3.0-or-later
- opensuse-leap 16.0: perl-libintl-perl 1.350.0-160000.2.2 Β· GPL-3.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms