Locale:...:IBM500(3)

πŸ’– Locale::RecodeData::IBM500(3) πŸ’–

okay so bestie, this one lives in the User Contributed Perl Documentation section, and the page header literally says Locale:...:IBM500(3) β€” that's the title, that's the vibe. it's a long one so buckle up, this is just part one πŸŽ€


✨ NAME ✨

Locale::RecodeData::IBM500 β€” conversion routines for IBM500, periodt πŸ’…


✨ SYNOPSIS ✨

This module is internal to libintl.  Do not use directly!
🚨 no cap, this is internal to libintl. do not use it directly! it's giving "staff only" door energy πŸ™ˆ

✨ DESCRIPTION ✨

so this module is generated β€” like, nobody hand-wrote it, it just exists β€” and it contains the conversion tables and routines for IBM500. that's it, that's the whole job πŸ¦‹


✨ COMMENTS ✨

these comments got extracted straight out of the original charmap, iykyk:

 version: 1.0
  source: IBM NLS RM Vol2 SE09-8002-01, March 1990
 alias CP500
 alias 500
 alias 500V1
 alias EBCDIC-CP-BE
 alias EBCDIC-CP-CH

so we got version: 1.0, the source is IBM NLS RM Vol2 SE09-8002-01, March 1990, and the aliases are CP500, 500, 500V1, EBCDIC-CP-BE, and EBCDIC-CP-CH 🫢

⚠️ okay important: please note that the aliases listed above are not necessarily valid! don't come for me if one of them doesn't work, i literally told you πŸ’€

✨ CHARACTER TABLE ✨

the following table is sorted in the same order as the original charmap β€” same order, no reshuffling, we respect the source πŸ™

all character codes are in hexadecimal ⭐

and please read 'ISO-10646' as 'ISO-10646-UCS4' β€” like, when you see the short one, mentally swap in the long one, that's the assignment bestie 🧚


more parts coming, don't go anywhere 🌈

        Local | ISO-10646 | Description
       -------+-----------+-------------------------------------------------

Okay bestie, so the table keeps going and honestly? This first stretch is the feral part πŸ’€ β€” all the control codes, and they are not where you'd expect them. Like, look at 00 through 3F and tell me this isn't giving chaos gremlin energy. Read every column though, fr fr:

        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 me reading this and going "wait, 05 is CHARACTER TABULATION (HT) and 25 is LINE FEED (LF)" 😭 β€” no cap, the low half here is doing its own thing, so don't assume anything, just read the row.

Now we hit the printable zone, starting at 40 with a whole SPACE situation, and it is highkey unhinged in the best way β€” accents first, brackets and punctuation sprinkled through like confetti πŸŽ€:

        Local | ISO-10646 | Description
       -------+-----------+-------------------------------------------------
           40 |  00000020 | SPACE
           41 |  000000A0 | NO-BREAK SPACE
           42 |  000000E2 | LATIN SMALL LETTER A WITH CIRCUMFLEX
           43 |  000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
           44 |  000000E0 | LATIN SMALL LETTER A WITH GRAVE
           45 |  000000E1 | LATIN SMALL LETTER A WITH ACUTE
           46 |  000000E3 | LATIN SMALL LETTER A WITH TILDE
           47 |  000000E5 | LATIN SMALL LETTER A WITH RING ABOVE
           48 |  000000E7 | LATIN SMALL LETTER C WITH CEDILLA
           49 |  000000F1 | LATIN SMALL LETTER N WITH TILDE
           4A |  0000005B | LEFT SQUARE BRACKET
           4B |  0000002E | FULL STOP
           4C |  0000003C | LESS-THAN SIGN
           4D |  00000028 | LEFT PARENTHESIS
           4E |  0000002B | PLUS SIGN
           4F |  00000021 | EXCLAMATION MARK
           50 |  00000026 | AMPERSAND
           51 |  000000E9 | LATIN SMALL LETTER E WITH ACUTE
           52 |  000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
           53 |  000000EB | LATIN SMALL LETTER E WITH DIAERESIS
           54 |  000000E8 | LATIN SMALL LETTER E WITH GRAVE
           55 |  000000ED | LATIN SMALL LETTER I WITH ACUTE
           56 |  000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
           57 |  000000EF | LATIN SMALL LETTER I WITH DIAERESIS
           58 |  000000EC | LATIN SMALL LETTER I WITH GRAVE
           59 |  000000DF | LATIN SMALL LETTER SHARP S (German)
           5A |  0000005D | RIGHT SQUARE BRACKET
           5B |  00000024 | DOLLAR SIGN
           5C |  0000002A | ASTERISK
           5D |  00000029 | RIGHT PARENTHESIS
           5E |  0000003B | SEMICOLON
           5F |  0000005E | CIRCUMFLEX ACCENT
           60 |  0000002D | HYPHEN-MINUS
           61 |  0000002F | SOLIDUS
           62 |  000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
           63 |  000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
           64 |  000000C0 | LATIN CAPITAL LETTER A WITH GRAVE
           65 |  000000C1 | LATIN CAPITAL LETTER A WITH ACUTE
           66 |  000000C3 | LATIN CAPITAL LETTER A WITH TILDE
           67 |  000000C5 | LATIN CAPITAL LETTER A WITH RING ABOVE
           68 |  000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
           69 |  000000D1 | LATIN CAPITAL LETTER N WITH TILDE
           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 |  000000F8 | LATIN SMALL LETTER O WITH STROKE
           71 |  000000C9 | LATIN CAPITAL LETTER E WITH ACUTE
           72 |  000000CA | LATIN CAPITAL LETTER E WITH CIRCUMFLEX
           73 |  000000CB | LATIN CAPITAL LETTER E WITH DIAERESIS
           74 |  000000C8 | LATIN CAPITAL LETTER E WITH GRAVE
           75 |  000000CD | LATIN CAPITAL LETTER I WITH ACUTE
           76 |  000000CE | LATIN CAPITAL LETTER I WITH CIRCUMFLEX
           77 |  000000CF | LATIN CAPITAL LETTER I WITH DIAERESIS
           78 |  000000CC | LATIN CAPITAL LETTER I WITH GRAVE
           79 |  00000060 | GRAVE ACCENT
           7A |  0000003A | COLON
           7B |  00000023 | NUMBER SIGN
           7C |  00000040 | COMMERCIAL AT
           7D |  00000027 | APOSTROPHE
           7E |  0000003D | EQUALS SIGN
           7F |  00000022 | QUOTATION MARK

See what I mean? 7C is COMMERCIAL AT and 7F is QUOTATION MARK β€” the vibes are immaculate but the layout is a scavenger hunt πŸ”πŸ’…. Also 59 being LATIN SMALL LETTER SHARP S (German)? We love a multilingual icon 🫢.


Chunk three, 80 onwards β€” lowercase letters finally show up but they're scattered, plus angles, eth, thorn, and the whole accented squad arriving fashionably late ✨:

        Local | ISO-10646 | Description
       -------+-----------+-------------------------------------------------
           80 |  000000D8 | LATIN CAPITAL LETTER O WITH STROKE
           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 |  000000AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
           8B |  000000BB | RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
           8C |  000000F0 | LATIN SMALL LETTER ETH (Icelandic)
           8D |  000000FD | LATIN SMALL LETTER Y WITH ACUTE
           8E |  000000FE | LATIN SMALL LETTER THORN (Icelandic)
           8F |  000000B1 | PLUS-MINUS SIGN
           90 |  000000B0 | DEGREE SIGN
           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 |  000000AA | FEMININE ORDINAL INDICATOR
           9B |  000000BA | MASCULINE ORDINAL INDICATOR
           9C |  000000E6 | LATIN SMALL LETTER AE
           9D |  000000B8 | CEDILLA
           9E |  000000C6 | LATIN CAPITAL LETTER AE
           9F |  000000A4 | CURRENCY SIGN
           A0 |  000000B5 | MICRO SIGN
           A1 |  0000007E | TILDE
           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 |  000000A1 | INVERTED EXCLAMATION MARK
           AB |  000000BF | INVERTED QUESTION MARK
           AC |  000000D0 | LATIN CAPITAL LETTER ETH (Icelandic)
           AD |  000000DD | LATIN CAPITAL LETTER Y WITH ACUTE
           AE |  000000DE | LATIN CAPITAL LETTER THORN (Icelandic)
           AF |  000000AE | REGISTERED SIGN
           B0 |  000000A2 | CENT SIGN
           B1 |  000000A3 | POUND SIGN
           B2 |  000000A5 | YEN SIGN
           B3 |  000000B7 | MIDDLE DOT
           B4 |  000000A9 | COPYRIGHT SIGN
           B5 |  000000A7 | SECTION SIGN
           B6 |  000000B6 | PILCROW SIGN
           B7 |  000000BC | VULGAR FRACTION ONE QUARTER
           B8 |  000000BD | VULGAR FRACTION ONE HALF
           B9 |  000000BE | VULGAR FRACTION THREE QUARTERS
           BA |  000000AC | NOT SIGN
           BB |  0000007C | VERTICAL LINE
           BC |  000000AF | MACRON
           BD |  000000A8 | DIAERESIS
           BE |  000000B4 | ACUTE ACCENT
           BF |  000000D7 | MULTIPLICATION SIGN

AA and AB are the inverted punctuation besties INVERTED EXCLAMATION MARK and INVERTED QUESTION MARK and honestly they're so aesthetic πŸ˜­πŸ’–. Also shoutout to B7, B8, B9 β€” VULGAR FRACTION ONE QUARTER, VULGAR FRACTION ONE HALF, VULGAR FRACTION THREE QUARTERS β€” iconic trio, no notes πŸ‘‘.


Final stretch for this part: the capitals roll in at C1, and then we're swimming in accented letters, symbols, and one SOFT HYPHEN at CA that is lowkey trying to be sneaky πŸ™ˆ:

        Local | ISO-10646 | Description
       -------+-----------+-------------------------------------------------
           C0 |  0000007B | LEFT CURLY BRACKET
           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 |  000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
           CC |  000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
           CD |  000000F2 | LATIN SMALL LETTER O WITH GRAVE
           CE |  000000F3 | LATIN SMALL LETTER O WITH ACUTE
           CF |  000000F5 | LATIN SMALL LETTER O WITH TILDE
           D0 |  0000007D | RIGHT CURLY BRACKET
           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 |  000000B9 | SUPERSCRIPT ONE
           DB |  000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
           DC |  000000FC | LATIN SMALL LETTER U WITH DIAERESIS
           DD |  000000F9 | LATIN SMALL LETTER U WITH GRAVE
           DE |  000000FA | LATIN SMALL LETTER U WITH ACUTE
           DF |  000000FF | LATIN SMALL LETTER Y WITH DIAERESIS
           E0 |  0000005C | REVERSE SOLIDUS
           E1 |  000000F7 | DIVISION 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

Notice how C1 through C9 are A through I, then CA is like "ope, SOFT HYPHEN" and then it's accented Os for a sec before D1 picks back up at J and runs to R? The way this table keeps you on your toes is genuinely main character energy 🌈⭐. And DA sitting there as SUPERSCRIPT ONE between the R and the umlaut Us? Weird flex but ok πŸ’….

That's where E7 leaves us, bestie β€” the table's still going, and the next part picks it right back up from there πŸ¦‹.

...and we're back in the table, bestie, picking up right where we left off at E8 β€” no cap, the vibes do not stop πŸ’…

           E8 |  00000059 | LATIN CAPITAL LETTER Y
           E9 |  0000005A | LATIN CAPITAL LETTER Z
           EA |  000000B2 | SUPERSCRIPT TWO
           EB |  000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX
           EC |  000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
           ED |  000000D2 | LATIN CAPITAL LETTER O WITH GRAVE
           EE |  000000D3 | LATIN CAPITAL LETTER O WITH ACUTE
           EF |  000000D5 | LATIN CAPITAL LETTER O WITH TILDE
           F0 |  00000030 | DIGIT ZERO
           F1 |  00000031 | DIGIT ONE
           F2 |  00000032 | DIGIT TWO
           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
           FA |  000000B3 | SUPERSCRIPT THREE
           FB |  000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX
           FC |  000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
           FD |  000000D9 | LATIN CAPITAL LETTER U WITH GRAVE
           FE |  000000DA | LATIN CAPITAL LETTER U WITH ACUTE
           FF |  0000009F | APPLICATION PROGRAM COMMAND (APC)

Okay so like β€” FF is literally out here being APPLICATION PROGRAM COMMAND (APC) and that's just the most mysterious main-character byte in the whole table. We respect it. 🫢


πŸ‘‘ 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 πŸ’–


πŸ¦‹ SEE ALSO πŸ¦‹

Ngl bestie, if you made it all the way down here you deserve a little treat πŸ“ β€” go read those three, they're the rest of the lore iykyk ✨

And that's a wrap on the whole page, fr fr πŸŽ€ This one came to you as perl v5.42.0, dated 2025-01-22, and it lives under the name Locale:...:IBM500(3) β€” slay, you read the entire thing, iconic behaviour honestly πŸ’œβœ¨