Locale:...:IBM423(3)

πŸ’… Locale::RecodeData::IBM423 β€” bestie edition πŸŽ€

ok so real talk, you're looking at the Perl manual page for Locale::RecodeData::IBM423(3), filed under "User Contributed Perl Documentation". Yes the header really does say Locale:...:IBM423(3) twice because it's extra like that. Let's get into it ✨


🌸 NAME 🌸

Locale::RecodeData::IBM423 β€” literally just conversion routines for IBM423. That's the whole vibe. No cap. πŸ’–


πŸ¦‹ SYNOPSIS πŸ¦‹

This module is internal to libintl.  Do not use directly!

ok so this is the important part, bestie: do not use it directly. It's an internal module for libintl, it's not for you, it's not for me, it's for libintl and libintl only. Hands off πŸ™ˆ iykyk.


πŸ‘‘ DESCRIPTION πŸ‘‘

So this module? It's generated. Like, nobody hand-wrote this bad boy β€” it gets built automatically, and what it contains is the conversion tables and the routines for IBM423. That's it, that's the whole job. She's a workhorse, not a main character πŸ’€


πŸ’œ COMMENTS πŸ’œ

okok so these are the comments that got extracted from the original charmap, and honestly they're giving archival treasure 🌈 here they are, exactly as they came out:

 version: 1.0
  source: IBM NLS RM Vol2 SE09-8002-01, March 1990
 alias CP423
 alias EBCDIC-CP-GR

so we've got version: 1.0, source is IBM NLS RM Vol2 SE09-8002-01, March 1990 (yes that's a real citation, she's cited πŸ’…), and the aliases are CP423 and EBCDIC-CP-GR.

⚠️ but bestie, listen β€” please note that aliases listed above are not necessarily valid! Like, they're listed! That does not mean they work! Do not come for me if they don't! 😭 This is a genuine warning from the page itself, fr fr.

⭐ CHARACTER TABLE ⭐

This is where it gets good. The following table is sorted in the same order as the original charmap β€” so the ordering is not a choice, it's inherited, it's ancestral, it's the order we were given 🫢

And every single character code in there? hexadecimal. All of them. Every last one. πŸ”₯

Also a reading-comprehension moment, bestie, so pay attention: whenever you see 'ISO-10646' in this table, you should read it as 'ISO-10646-UCS4'. Same thing, different outfit. That's the whole note ✨


(more incoming β€” this was part 1 of 3, don't go anywhere 🌸)

okay so quick refresher on what you're looking at, because the columns go hard: the left column is the local byte in hex, the middle is the ISO-10646 code point, and the right is the character's government name. and bestie, the vibes in the first block are chaotic β€” like, the bytes are in order but the code points are absolutely not. 04 is 0000009C, 05 is 00000009, 07 is 0000007F. it's giving ✨shuffled playlist✨. do not question it, just read it. πŸ’…

        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)

highkey iconic that BACKSPACE lives at byte 16 and DELETE is all the way up at 07 β€” like ma'am, what are you doing there 😭 but we respect the choices. also LINE FEED isn't at 0A, it's at 25, which is genuinely main character energy. it said "I'll show up where I want." 🌸

next block, 20–3F, where the control codes keep playing musical chairs:

           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)

BELL (BEL) at 2F and ESCAPE (ESC) at 27 and END OF TRANSMISSION (EOT) chillin' at 37 β€” bestie this is a scavenger hunt 🫢 the EOT really said "I'm not done until I say I'm done."

then 40 opens with a whole SPACE and immediately after that it's Greek letters out of NOWHERE. we love a bilingual king πŸ‘‘:

           40 |  00000020 | SPACE
           41 |  00000391 | GREEK CAPITAL LETTER ALPHA
           42 |  00000392 | GREEK CAPITAL LETTER BETA
           43 |  00000393 | GREEK CAPITAL LETTER GAMMA
           44 |  00000394 | GREEK CAPITAL LETTER DELTA
           45 |  00000395 | GREEK CAPITAL LETTER EPSILON
           46 |  00000396 | GREEK CAPITAL LETTER ZETA
           47 |  00000397 | GREEK CAPITAL LETTER ETA
           48 |  00000398 | GREEK CAPITAL LETTER THETA
           49 |  00000399 | GREEK CAPITAL LETTER IOTA
           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 |  0000039A | GREEK CAPITAL LETTER KAPPA
           52 |  0000039B | GREEK CAPITAL LETTER LAMDA
           53 |  0000039C | GREEK CAPITAL LETTER MU
           54 |  0000039D | GREEK CAPITAL LETTER NU
           55 |  0000039E | GREEK CAPITAL LETTER XI
           56 |  0000039F | GREEK CAPITAL LETTER OMICRON
           57 |  000003A0 | GREEK CAPITAL LETTER PI
           58 |  000003A1 | GREEK CAPITAL LETTER RHO
           59 |  000003A3 | GREEK CAPITAL LETTER SIGMA
           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 |  000003A4 | GREEK CAPITAL LETTER TAU
           63 |  000003A5 | GREEK CAPITAL LETTER UPSILON
           64 |  000003A6 | GREEK CAPITAL LETTER PHI
           65 |  000003A7 | GREEK CAPITAL LETTER CHI
           66 |  000003A8 | GREEK CAPITAL LETTER PSI
           67 |  000003A9 | GREEK CAPITAL LETTER OMEGA

okay so it's Greek capitals, then punctuation, then MORE Greek capitals, then punctuation again. it's giving a mixtape with two genres 😭 and note the gap β€” 68, 69, 6A are just… not invited. no GREEK CAPITAL LETTER-with-tonos yet, they show up later. patience, bestie 🧚

carrying straight on:

           6B |  0000002C | COMMA
           6C |  00000025 | PERCENT SIGN
           6D |  0000005F | LOW LINE
           6E |  0000003E | GREATER-THAN SIGN
           6F |  0000003F | QUESTION MARK
           71 |  00000386 | GREEK CAPITAL LETTER ALPHA WITH TONOS
           72 |  00000388 | GREEK CAPITAL LETTER EPSILON WITH TONOS
           73 |  00000389 | GREEK CAPITAL LETTER ETA WITH TONOS
           75 |  0000038A | GREEK CAPITAL LETTER IOTA WITH TONOS
           76 |  0000038C | GREEK CAPITAL LETTER OMICRON WITH TONOS
           77 |  0000038E | GREEK CAPITAL LETTER UPSILON WITH TONOS
           78 |  0000038F | GREEK CAPITAL LETTER OMEGA WITH TONOS
           79 |  00000060 | GRAVE ACCENT
           7A |  0000003A | COLON
           7B |  000000A3 | POUND SIGN
           7C |  000000A7 | SECTION SIGN
           7D |  00000027 | APOSTROPHE
           7E |  0000003D | EQUALS SIGN
           7F |  00000022 | QUOTATION MARK

see, 70 and 74 ghosted us too πŸ‘» (very "read at 10:42pm" of them). but we got GREEK CAPITAL LETTER ALPHA WITH TONOS through GREEK CAPITAL LETTER OMEGA WITH TONOS β€” the tonos girls finally arrived and they ate. ✨

now the top half, starting at 80. LATIN CAPITAL LETTER A WITH DIAERESIS opens the set and then it's lowercase Latin with Greek lowercase woven through, like a friendship bracelet πŸŽ€

           80 |  000000C4 | LATIN CAPITAL LETTER A WITH DIAERESIS
           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 |  000003B1 | GREEK SMALL LETTER ALPHA
           8B |  000003B2 | GREEK SMALL LETTER BETA
           8C |  000003B3 | GREEK SMALL LETTER GAMMA
           8D |  000003B4 | GREEK SMALL LETTER DELTA
           8E |  000003B5 | GREEK SMALL LETTER EPSILON
           8F |  000003B6 | GREEK SMALL LETTER ZETA
           90 |  000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
           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 |  000003B7 | GREEK SMALL LETTER ETA
           9B |  000003B8 | GREEK SMALL LETTER THETA
           9C |  000003B9 | GREEK SMALL LETTER IOTA
           9D |  000003BA | GREEK SMALL LETTER KAPPA
           9E |  000003BB | GREEK SMALL LETTER LAMDA
           9F |  000003BC | GREEK SMALL LETTER MU
           A0 |  000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS
           A1 |  000000A8 | DIAERESIS
           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 |  000003BD | GREEK SMALL LETTER NU
           AB |  000003BE | GREEK SMALL LETTER XI
           AC |  000003BF | GREEK SMALL LETTER OMICRON
           AD |  000003C0 | GREEK SMALL LETTER PI
           AE |  000003C1 | GREEK SMALL LETTER RHO
           AF |  000003C2 | GREEK SMALL LETTER FINAL SIGMA

the way that lowercase a–i gets interrupted at 8A by the Greek lowercase squad and then picks back up at 91 with j… unhinged behaviour, but like, in a cute way πŸ’€ and yes, AF is GREEK SMALL LETTER FINAL SIGMA, the special one, the final girl of the sigma saga 😌

and B0 is a no-show πŸ™ˆ so we jump straight to B1. the tonos/dialytika girlies are all here and they are thriving:

           B1 |  000003AC | GREEK SMALL LETTER ALPHA WITH TONOS
           B2 |  000003AD | GREEK SMALL LETTER EPSILON WITH TONOS
           B3 |  000003AE | GREEK SMALL LETTER ETA WITH TONOS
           B4 |  000003CA | GREEK SMALL LETTER IOTA WITH DIALYTIKA
           B5 |  000003AF | GREEK SMALL LETTER IOTA WITH TONOS
           B6 |  000003CC | GREEK SMALL LETTER OMICRON WITH TONOS
           B7 |  000003CD | GREEK SMALL LETTER UPSILON WITH TONOS
           B8 |  000003CB | GREEK SMALL LETTER UPSILON WITH DIALYTIKA
           B9 |  000003CE | GREEK SMALL LETTER OMEGA WITH TONOS
           BA |  000003C3 | GREEK SMALL LETTER SIGMA
           BB |  000003C4 | GREEK SMALL LETTER TAU
           BC |  000003C5 | GREEK SMALL LETTER UPSILON
           BD |  000003C6 | GREEK SMALL LETTER PHI
           BE |  000003C7 | GREEK SMALL LETTER CHI
           BF |  000003C8 | GREEK SMALL LETTER PSI

then C0 starts with a lone <cyan>CEDILLA</cyan> and swings right back into Latin capitals:

           C0 |  000000B8 | CEDILLA
           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
           CB |  000003C9 | GREEK SMALL LETTER OMEGA
           CC |  000000C2 | LATIN CAPITAL LETTER A WITH CIRCUMFLEX
           CD |  000000E0 | LATIN SMALL LETTER A WITH GRAVE
           CE |  000000E4 | LATIN SMALL LETTER A WITH DIAERESIS
           CF |  000000EA | LATIN SMALL LETTER E WITH CIRCUMFLEX
           D0 |  000000B4 | ACUTE ACCENT
           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 |  000000B1 | PLUS-MINUS SIGN
           DB |  000000E9 | LATIN SMALL LETTER E WITH ACUTE
           DC |  000000E8 | LATIN SMALL LETTER E WITH GRAVE
           DD |  000000EB | LATIN SMALL LETTER E WITH DIAERESIS
           DE |  000000EE | LATIN SMALL LETTER I WITH CIRCUMFLEX
           DF |  000000EF | LATIN SMALL LETTER I WITH DIAERESIS
           E0 |  000000B0 | DEGREE SIGN

CA is missing, so GREEK SMALL LETTER OMEGA at CB just floats there between I and A WITH CIRCUMFLEX like the main character she is πŸ’… also ACUTE ACCENT at D0 and DEGREE SIGN at E0 β€” accents and math signs really said "we belong with the letters now." no notes.

last stretch of this part, E2 onward β€” E1 did not make the cut πŸ“:

           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 |  000000BD | VULGAR FRACTION ONE HALF
           EB |  000000F6 | LATIN SMALL LETTER O WITH DIAERESIS
           EC |  000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
           ED |  000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX

VULGAR FRACTION ONE HALF at EA right after Z is so random and I'm obsessed with it β€” the alphabet said "and for my final trick, a fraction." 😭 and the last three rows are the o-umlaut, o-circumflex, u-circumflex trio, just vibing at the bottom of the page. slay πŸ’œ

that's where this part ends, bestie β€” more table coming at you in the next part, so hydrate and stay seated βœ¨πŸ¦‹

okay bestie, final stretch of the table and I did not drop a single row πŸ’… every byte, codepoint, and character name is staying exactly where it belongs:

           EE |  000000F9 | LATIN SMALL LETTER U WITH GRAVE
           EF |  000000FC | LATIN SMALL LETTER U WITH DIAERESIS
           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 |  000000FF | LATIN SMALL LETTER Y WITH DIAERESIS
           FB |  000000E7 | LATIN SMALL LETTER C WITH CEDILLA
           FC |  000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
           FF |  0000009F | APPLICATION PROGRAM COMMAND (APC)

like, that’s the whole vibe: clean rows, no mystery gaps, no β€œoops I skipped one” energy ✨


πŸ’– AUTHOR πŸ’–

this iconic little data module was brought to you by:

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!code for details!

yes bestie, that duplicated details!code for details! is literally in the source text and I am not editing it β€” we keep the facts exactly as they are, always 🫢

all rights reserved, periodt. πŸ’œ


🌈 SEE ALSO 🌈

go peek at these next, they’re giving related-manpage main character energy:


and that’s the whole page, bestie πŸŽ€ this one came from perl v5.42.0, dated 2025-01-22 β€” iconic version, iconic date, no cap πŸ’«