ebcdic.go (5211B)
1 // Copyright 2015 Garrett D'Amore 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use file except in compliance with the License. 5 // You may obtain a copy of the license at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 package encoding 16 17 import ( 18 "golang.org/x/text/encoding" 19 ) 20 21 // EBCDIC represents the 8-bit EBCDIC scheme, found in some mainframe 22 // environments. If you don't know what this is, consider yourself lucky. 23 var EBCDIC encoding.Encoding 24 25 func init() { 26 cm := &Charmap{ 27 ReplacementChar: '\x3f', 28 Map: map[byte]rune{ 29 // 0x00-0x03 match 30 0x04: RuneError, 31 0x05: '\t', 32 0x06: RuneError, 33 0x07: '\x7f', 34 0x08: RuneError, 35 0x09: RuneError, 36 0x0a: RuneError, 37 // 0x0b-0x13 match 38 0x14: RuneError, 39 0x15: '\x85', // Not in any ISO code 40 0x16: '\x08', 41 0x17: RuneError, 42 // 0x18-0x19 match 43 0x1a: RuneError, 44 0x1b: RuneError, 45 // 0x1c-0x1f match 46 0x20: RuneError, 47 0x21: RuneError, 48 0x22: RuneError, 49 0x23: RuneError, 50 0x24: RuneError, 51 0x25: '\n', 52 0x26: '\x17', 53 0x27: '\x1b', 54 0x28: RuneError, 55 0x29: RuneError, 56 0x2a: RuneError, 57 0x2b: RuneError, 58 0x2c: RuneError, 59 0x2d: '\x05', 60 0x2e: '\x06', 61 0x2f: '\x07', 62 0x30: RuneError, 63 0x31: RuneError, 64 0x32: '\x16', 65 0x33: RuneError, 66 0x34: RuneError, 67 0x35: RuneError, 68 0x36: RuneError, 69 0x37: '\x04', 70 0x38: RuneError, 71 0x39: RuneError, 72 0x3a: RuneError, 73 0x3b: RuneError, 74 0x3c: '\x14', 75 0x3d: '\x15', 76 0x3e: RuneError, 77 0x3f: '\x1a', // also replacement char 78 0x40: ' ', 79 0x41: '\xa0', 80 0x42: RuneError, 81 0x43: RuneError, 82 0x44: RuneError, 83 0x45: RuneError, 84 0x46: RuneError, 85 0x47: RuneError, 86 0x48: RuneError, 87 0x49: RuneError, 88 0x4a: RuneError, 89 0x4b: '.', 90 0x4c: '<', 91 0x4d: '(', 92 0x4e: '+', 93 0x4f: '|', 94 0x50: '&', 95 0x51: RuneError, 96 0x52: RuneError, 97 0x53: RuneError, 98 0x54: RuneError, 99 0x55: RuneError, 100 0x56: RuneError, 101 0x57: RuneError, 102 0x58: RuneError, 103 0x59: RuneError, 104 0x5a: '!', 105 0x5b: '$', 106 0x5c: '*', 107 0x5d: ')', 108 0x5e: ';', 109 0x5f: '¬', 110 0x60: '-', 111 0x61: '/', 112 0x62: RuneError, 113 0x63: RuneError, 114 0x64: RuneError, 115 0x65: RuneError, 116 0x66: RuneError, 117 0x67: RuneError, 118 0x68: RuneError, 119 0x69: RuneError, 120 0x6a: '¦', 121 0x6b: ',', 122 0x6c: '%', 123 0x6d: '_', 124 0x6e: '>', 125 0x6f: '?', 126 0x70: RuneError, 127 0x71: RuneError, 128 0x72: RuneError, 129 0x73: RuneError, 130 0x74: RuneError, 131 0x75: RuneError, 132 0x76: RuneError, 133 0x77: RuneError, 134 0x78: RuneError, 135 0x79: '`', 136 0x7a: ':', 137 0x7b: '#', 138 0x7c: '@', 139 0x7d: '\'', 140 0x7e: '=', 141 0x7f: '"', 142 0x80: RuneError, 143 0x81: 'a', 144 0x82: 'b', 145 0x83: 'c', 146 0x84: 'd', 147 0x85: 'e', 148 0x86: 'f', 149 0x87: 'g', 150 0x88: 'h', 151 0x89: 'i', 152 0x8a: RuneError, 153 0x8b: RuneError, 154 0x8c: RuneError, 155 0x8d: RuneError, 156 0x8e: RuneError, 157 0x8f: '±', 158 0x90: RuneError, 159 0x91: 'j', 160 0x92: 'k', 161 0x93: 'l', 162 0x94: 'm', 163 0x95: 'n', 164 0x96: 'o', 165 0x97: 'p', 166 0x98: 'q', 167 0x99: 'r', 168 0x9a: RuneError, 169 0x9b: RuneError, 170 0x9c: RuneError, 171 0x9d: RuneError, 172 0x9e: RuneError, 173 0x9f: RuneError, 174 0xa0: RuneError, 175 0xa1: '~', 176 0xa2: 's', 177 0xa3: 't', 178 0xa4: 'u', 179 0xa5: 'v', 180 0xa6: 'w', 181 0xa7: 'x', 182 0xa8: 'y', 183 0xa9: 'z', 184 0xaa: RuneError, 185 0xab: RuneError, 186 0xac: RuneError, 187 0xad: RuneError, 188 0xae: RuneError, 189 0xaf: RuneError, 190 0xb0: '^', 191 0xb1: RuneError, 192 0xb2: RuneError, 193 0xb3: RuneError, 194 0xb4: RuneError, 195 0xb5: RuneError, 196 0xb6: RuneError, 197 0xb7: RuneError, 198 0xb8: RuneError, 199 0xb9: RuneError, 200 0xba: '[', 201 0xbb: ']', 202 0xbc: RuneError, 203 0xbd: RuneError, 204 0xbe: RuneError, 205 0xbf: RuneError, 206 0xc0: '{', 207 0xc1: 'A', 208 0xc2: 'B', 209 0xc3: 'C', 210 0xc4: 'D', 211 0xc5: 'E', 212 0xc6: 'F', 213 0xc7: 'G', 214 0xc8: 'H', 215 0xc9: 'I', 216 0xca: '\xad', // NB: soft hyphen 217 0xcb: RuneError, 218 0xcc: RuneError, 219 0xcd: RuneError, 220 0xce: RuneError, 221 0xcf: RuneError, 222 0xd0: '}', 223 0xd1: 'J', 224 0xd2: 'K', 225 0xd3: 'L', 226 0xd4: 'M', 227 0xd5: 'N', 228 0xd6: 'O', 229 0xd7: 'P', 230 0xd8: 'Q', 231 0xd9: 'R', 232 0xda: RuneError, 233 0xdb: RuneError, 234 0xdc: RuneError, 235 0xdd: RuneError, 236 0xde: RuneError, 237 0xdf: RuneError, 238 0xe0: '\\', 239 0xe1: '\u2007', // Non-breaking space 240 0xe2: 'S', 241 0xe3: 'T', 242 0xe4: 'U', 243 0xe5: 'V', 244 0xe6: 'W', 245 0xe7: 'X', 246 0xe8: 'Y', 247 0xe9: 'Z', 248 0xea: RuneError, 249 0xeb: RuneError, 250 0xec: RuneError, 251 0xed: RuneError, 252 0xee: RuneError, 253 0xef: RuneError, 254 0xf0: '0', 255 0xf1: '1', 256 0xf2: '2', 257 0xf3: '3', 258 0xf4: '4', 259 0xf5: '5', 260 0xf6: '6', 261 0xf7: '7', 262 0xf8: '8', 263 0xf9: '9', 264 0xfa: RuneError, 265 0xfb: RuneError, 266 0xfc: RuneError, 267 0xfd: RuneError, 268 0xfe: RuneError, 269 0xff: RuneError, 270 }} 271 cm.Init() 272 EBCDIC = cm 273 }