...

Source file src/github.com/gdamore/encoding/ebcdic.go

Documentation: github.com/gdamore/encoding

     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  }
   274  

View as plain text