midrange.com code scratchpad
Name:
Dennis Lovelady
Scriptlanguage:
Plain Text
Tabwidth:
4
Date:
04/16/2010 03:21:49 am
IP:
Logged
Description:
Issue with cvtch
Code:
  1.      H DftActGrp(*NO) Option(*SRCSTMT)
  2.      H BNDDIR('QC2LE')
  3.  
  4.        // Convert string of hex characters representing ASCII data to
  5.        // EBCDIC values.  Vendor is supplying a file that contains data
  6.        // like '414243303132' which needs to be interpreted as ABC012.
  7.        // The entire string received from the vendor is hex representation
  8.        // of ASCII characters.
  9.  
  10.      D EBCDIC_CCSID    C                   37
  11.        // 1208 is the common UTF-8 CCSID
  12.      D ASCII_CCSID     C                   1208
  13.  
  14.  
  15.      D asciiHexToEBCDIC...
  16.      D                 PR         32767    Varying extProc('ascHexToBCD')
  17.      D  hexIn                     65534    Value
  18.      D  hexLen                       10I 0 Value
  19.  
  20.      D hexInput        S          32767    Varying
  21.      D result          S          32767    Varying
  22.  
  23.      D valueToConvert...
  24.      D                 C                   '532f2d7052252e252229757320+
  25.      D                                      2f2220592c2c292e2f29732020+
  26.      D                                      2020202032303020572e205a21+
  27.      D                                      232b732f2e2020202020202020+
  28.      D                                      20202020202039752820522c2f+
  29.      D                                      2f722020202020202020532829+
  30.      D                                      2321272f202020202020202059+
  31.      D                                      5c323032303220202020203830+
  32.      D                                      302d3833372d3233353115aac2+
  33.      D                                      e1333035303031737979797922+
  34.      D                                      00520050005a00057920202020+
  35.      D                                      20202020202020202020202020+
  36.      D                                      20202020202020202020203230+
  37.      D                                      2e79202e332e3330202e2e2e22+
  38.      D                                      2130302e2e2e2e2e2e2e202020+
  39.      D                                      20202020202020202020202020+
  40.      D                                      20202020202020202020202030+
  41.      D                                      3030302e2e2f30312e2e2e2e2e20'
  42.  
  43.       /Free
  44.  
  45.        hexInput = valueToConvert ;
  46.        result = asciiHexToEBCDIC(hexInput: %Len(hexInput)) ;
  47.        *INLR = *On ;
  48.  
  49.       /End-free
  50.  
  51.  
  52.  
  53.      P asciiHexToEBCDIC...
  54.      P                 B
  55.  
  56.      D                 PI         32767    Varying
  57.      D  hexIn                     65534    Value
  58.      D  hexLen                       10I 0 Value
  59.  
  60.  
  61.      D cvtch           PR                  ExtProc('cvtch')
  62.      D  ptrcharOut                32767    Options(*VarSize)
  63.      D  ptrHexIn                  65534    Const
  64.      D  charLength                   10I 0 Value
  65.  
  66.      D ASCII           S          32767
  67.      D EBCDIC          S          32767
  68.      D resultLen       S              5U 0
  69.  
  70.       /Free
  71.  
  72.        cvtch(ASCII: hexIn: hexLen) ;
  73.        resultLen = hexLen / 2 ;
  74.        // Insert iconv() stuff here
  75.        Return %Subst(EBCDIC: 1: resultLen) ;
  76.  
  77.       /End-free
  78.  
  79.      P                 E
  80.  
© 2004-2019 by midrange.com generated in 0.007s valid xhtml & css