Locale:...:IBM905(3)

πŸŽ€ NAME πŸŽ€

Locale::RecodeData::IBM905 β€” ok so this one's about conversion routines for IBM905, and yes bestie the manual name is IBM905(3), we're in section 3 territory πŸ’…

✨ SYNOPSIS ✨

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

Read that again, bestie. It's giving hands off, this is not for you energy 😭 It's internal to libintl, so like… do not use it directly. Periodt.

πŸ¦‹ DESCRIPTION πŸ¦‹

So this module is generated β€” not hand-written, it's a whole machine-made situation β€” and what it's got inside is the conversion tables and routines for IBM905. That's the whole vibe. Tables + routines, generated, for IBM905. Slay πŸ’–

🌸 COMMENTS 🌸

The following comments have been extracted from the original charmap, and honestly? Little historical artifacts, we love to see them:

 version: 1.0
  source: IBM 3174 Character Set Ref, GA27-3831-02, March 1990
 alias CP905
 alias EBCDIC-CP-TR
⚠️ Okay important little note before you go anywhere with those: the aliases listed above are not necessarily valid! Like, they're in the charmap, but that does not mean you should trust them, iykyk πŸ™ˆ

πŸ‘‘ 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, so keep that in mind when you're reading it.

Also, tiny translation note: please read ISO-10646 as ISO-10646-UCS4. Like, when you see the former, think the latter ✨ That's the reading comprehension check and you passed it, bestie 🫢

Okay so here's where it gets actually juicy β€” the character table itself. Three columns, bestie: Local (the byte you'd see in this encoding), ISO-10646 (the universal code point it maps to), and Description (what it actually is). Read it like a Rosetta Stone. πŸ’…

The 00–3F block: control-character chaos era πŸŽ›οΈ

Look at this mess and tell me it isn't iconic. 04 is STRING TERMINATOR (ST) mapping to 0000009C, but 05 is a plain old CHARACTER TABULATION (HT) at 00000009. And 07?? That's DELETE (DEL) living at 0000007F while 16 is BACKSPACE (BS) up at 00000008. The vibes are ✨ scrambled ✨ and that's just how IBM905 rolls.

        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)

Like… 2F is BELL (BEL) at 00000007 and 3C is DEVICE CONTROL FOUR (DC4) at 00000014. No cap, this block is giving "old terminal goblin energy" and I am obsessed. πŸ˜­πŸ””


The 40–7F block: bestie, we have LETTERS πŸŽ€

This is where it starts feeling like an actual alphabet instead of a robot screaming. 40 kicks off with plain SPACE at 00000020, and then boom β€” 42 is LATIN SMALL LETTER A WITH CIRCUMFLEX (000000E2), 43 is LATIN SMALL LETTER A WITH DIAERESIS (000000E4), 44 is LATIN SMALL LETTER A WITH GRAVE (000000E0)… the accented vowels ate and left no crumbs. πŸ“

Heads up though: peep the gaps. 41, 46, 66, and 70 just… aren't in the table. Not me noticing empty seats at the function πŸ‘€ β€” I'm just reading what's here, bestie.
           40 |  00000020 | 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
           47 |  0000010B | LATIN SMALL LETTER C WITH DOT ABOVE
           48 |  0000007B | LEFT CURLY BRACKET
           49 |  000000F1 | LATIN SMALL LETTER N WITH TILDE
           4A |  000000C7 | LATIN CAPITAL LETTER C WITH CEDILLA
           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 |  0000011E | LATIN CAPITAL LETTER G WITH BREVE
           5B |  00000130 | LATIN CAPITAL LETTER I WITH DOT ABOVE
           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
           67 |  0000010A | LATIN CAPITAL LETTER C WITH DOT ABOVE
           68 |  0000005B | LEFT SQUARE BRACKET
           69 |  000000D1 | LATIN CAPITAL LETTER N WITH TILDE
           6A |  0000015F | LATIN SMALL LETTER S WITH CEDILLA
           6B |  0000002C | COMMA
           6C |  00000025 | PERCENT SIGN
           6D |  0000005F | LOW LINE
           6E |  0000003E | GREATER-THAN SIGN
           6F |  0000003F | QUESTION MARK
           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 |  00000131 | LATIN SMALL LETTER DOTLESS I
           7A |  0000003A | COLON
           7B |  000000D6 | LATIN CAPITAL LETTER O WITH DIAERESIS
           7C |  0000015E | LATIN CAPITAL LETTER S WITH CEDILLA
           7D |  00000027 | APOSTROPHE
           7E |  0000003D | EQUALS SIGN
           7F |  000000DC | LATIN CAPITAL LETTER U WITH DIAERESIS

59 being LATIN SMALL LETTER SHARP S (German) at 000000DF?? The German representation is served, honestly. πŸ₯¨ And 79 is LATIN SMALL LETTER DOTLESS I at 00000131 β€” main character energy for a letter with no dot, fr fr.


The 80–BF block: lowercase era, we love to see it πŸ¦‹

80 opens with BREVE at 000002D8 and then 81 through 89 is just… a b c d e f g h i in a row like a little parade. 81 LATIN SMALL LETTER A, 82 LATIN SMALL LETTER B, all the way down. The way that the alphabet just lines up here β€” screaming, crying, throwing up (affectionately). πŸ˜­πŸ’–

           80 |  000002D8 | BREVE
           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 |  00000127 | LATIN SMALL LETTER H WITH STROKE
           8B |  00000109 | LATIN SMALL LETTER C WITH CIRCUMFLEX
           8C |  0000015D | LATIN SMALL LETTER S WITH CIRCUMFLEX
           8D |  0000016D | LATIN SMALL LETTER U WITH BREVE
           8F |  0000007C | VERTICAL LINE
           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 |  00000125 | LATIN SMALL LETTER H WITH CIRCUMFLEX
           9B |  0000011D | LATIN SMALL LETTER G WITH CIRCUMFLEX
           9C |  00000135 | LATIN SMALL LETTER J WITH CIRCUMFLEX
           9D |  000002DB | OGONEK
           9F |  000000A4 | CURRENCY SIGN
           A0 |  000000B5 | MICRO SIGN
           A1 |  000000F6 | LATIN SMALL LETTER O WITH 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 |  00000126 | LATIN CAPITAL LETTER H WITH STROKE
           AB |  00000108 | LATIN CAPITAL LETTER C WITH CIRCUMFLEX
           AC |  0000015C | LATIN CAPITAL LETTER S WITH CIRCUMFLEX
           AD |  0000016C | LATIN CAPITAL LETTER U WITH BREVE
           AF |  00000040 | COMMERCIAL AT
           B0 |  000000B7 | MIDDLE DOT
           B1 |  000000A3 | POUND SIGN
           B2 |  0000017C | LATIN SMALL LETTER Z WITH DOT ABOVE
           B3 |  0000007D | RIGHT CURLY BRACKET
           B4 |  0000017B | LATIN CAPITAL LETTER Z WITH DOT ABOVE
           B5 |  000000A7 | SECTION SIGN
           B6 |  0000005D | RIGHT SQUARE BRACKET
           B8 |  000000BD | VULGAR FRACTION ONE HALF
           B9 |  00000024 | DOLLAR SIGN
           BA |  00000124 | LATIN CAPITAL LETTER H WITH CIRCUMFLEX
           BB |  0000011C | LATIN CAPITAL LETTER G WITH CIRCUMFLEX
           BC |  00000134 | LATIN CAPITAL LETTER J WITH CIRCUMFLEX
           BD |  000000A8 | DIAERESIS
           BE |  000000B4 | ACUTE ACCENT
           BF |  000000D7 | MULTIPLICATION SIGN

8E, 9E, AE, B7 β€” again, not in the table. I'm not making it up, I'm just reporting the receipts. 🧾 Also B9 is DOLLAR SIGN at 00000024 and B8 is VULGAR FRACTION ONE HALF at 000000BD β€” money and math living side by side, slay. πŸ’Έ


The C0–EB block: capital letters took over the party πŸ‘‘

C1 through C9 is literally LATIN CAPITAL LETTER A through LATIN CAPITAL LETTER I β€” 41, 42, 43, 44, 45, 46, 47, 48, 49. Then CA is SOFT HYPHEN (000000AD) because even the capitals need a lil break. 🫢 And E2–E9 gives us S, T, U, V, W, X, Y, Z β€” the whole squad assembled, no notes.

           C0 |  000000E7 | LATIN SMALL LETTER C WITH 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
           CA |  000000AD | SOFT HYPHEN
           CB |  000000F4 | LATIN SMALL LETTER O WITH CIRCUMFLEX
           CC |  0000007E | TILDE
           CD |  000000F2 | LATIN SMALL LETTER O WITH GRAVE
           CE |  000000F3 | LATIN SMALL LETTER O WITH ACUTE
           CF |  00000121 | LATIN SMALL LETTER G WITH DOT ABOVE
           D0 |  0000011F | LATIN SMALL LETTER G WITH BREVE
           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 |  00000060 | GRAVE ACCENT
           DB |  000000FB | LATIN SMALL LETTER U WITH CIRCUMFLEX
           DC |  0000005C | REVERSE SOLIDUS
           DD |  000000F9 | LATIN SMALL LETTER U WITH GRAVE
           DE |  000000FA | LATIN SMALL LETTER U WITH ACUTE
           E0 |  000000FC | LATIN SMALL LETTER U WITH DIAERESIS
           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
           E8 |  00000059 | LATIN CAPITAL LETTER Y
           E9 |  0000005A | LATIN CAPITAL LETTER Z
           EA |  000000B2 | SUPERSCRIPT TWO
           EB |  000000D4 | LATIN CAPITAL LETTER O WITH CIRCUMFLEX

DC being REVERSE SOLIDUS at 0000005C and E1 being DIVISION SIGN at 000000F7 β€” punctuation and math just vibing in the capital-letter section, iykyk. ✨

And bestie, we are not done β€” the table keeps going past EB. Stay with me. 🌈

  • EC | 00000023 | NUMBER SIGN β€” the humble hashtag, living her best life πŸŽ€
  • ED | 000000D2 | LATIN CAPITAL LETTER O WITH GRAVE β€” Γ’ said what she said πŸ’…
  • EE | 000000D3 | LATIN CAPITAL LETTER O WITH ACUTE β€” Γ“, her sharper sister ✨
  • EF | 00000120 | LATIN CAPITAL LETTER G WITH DOT ABOVE β€” a G with accessories, obsessed πŸŽ€
  • 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

okay bestie the whole digit squad just showed up in order, F0 through F9, no cap β€” they ate and left zero crumbs πŸ”₯

  • FA | 000000B3 | SUPERSCRIPT THREE β€” tiny Β³, main character energy ngl πŸ‘‘
  • FB | 000000DB | LATIN CAPITAL LETTER U WITH CIRCUMFLEX β€” Γ› with the little hat πŸŽ€
  • FC | 00000022 | QUOTATION MARK β€” yes, this is the actual " and like… she's iconic for that πŸ’€
  • FD | 000000D9 | LATIN CAPITAL LETTER U WITH GRAVE β€” Γ™, lowkey dramatic πŸ’œ
  • FE | 000000DA | LATIN CAPITAL LETTER U WITH ACUTE β€” Ú, highkey slaying ✨
  • FF | 0000009F | APPLICATION PROGRAM COMMAND (APC) β€” the final boss of the table, and it's a control character πŸ™ˆ

and that's the whole table, 00 all the way to FF, every last one accounted for πŸ¦‹


🌸 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!

like, respect the author bestie, they built the whole thing 🫢


πŸ” SEE ALSO πŸ”

go read those next, iykyk πŸ“šβœ¨


and that's the whole page, bestie β€” you made it to the end πŸ’– this one's from perl v5.42.0, dated 2025-01-22, and yeah, the little header says Locale:...:IBM905(3) in case you forgot already 😭 go forth and decode your IBM905 bytes, mwah πŸ§šπŸ’œ