midrange.com code scratchpad
Name:
Anonymous
Scriptlanguage:
Plain Text
Tabwidth:
4
Date:
11/30/2019 10:54:02 am
IP:
Logged
Description:
I tried below program but it's again giving same error despite trying to use CCSID keyword to convert key field's value '661e275OIM1ULYLJ' stored in K1 file in field name KEY.
Here in below example I have tried to replace QDCXLATE API with CCSID keyword still same error and I am on V7R3M0 L00.
Code:
  1.      H DftActGrp(*No) BndDir('QC2LE')
  2.      FUNIX      IF   F 1000        SPECIAL PGMNAME('UNIXCMD')
  3.      F                                     PLIST(UNIXPARM) USROPN
  4.      FK1        IF   E             DISK    usropn
  5.      F*QSYSPRT   O    F 1000        PRINTER
  6.      dencodedExcha...
  7.      dngeToken         s            500    VARYING
  8.      d var1            s             50    ccsid(819)
  9.  
  10.      d len             s             10i 0 inz(16)
  11.      DPOS2             S              5U 0
  12.      D cmd             s           5000a
  13.      D mode            s              1A   inz('P')
  14.      DN1               S              2P 0
  15.      D HexEquivalent   S             52A
  16.      d cvthc           PR                  ExtProc('cvthc')
  17.      d   target                   65534A   options(*varsize)
  18.      d   src_bits                 32767A   options(*varsize) const
  19.      d   tgt_length                  10I 0 value
  20.      d*QDCXLATE        PR                  ExtPgm('QDCXLATE')
  21.      d*  len                          5p 0 const
  22.      d*  data                     32702a   options(*varsize)
  23.      d*  table                       10a   const
  24.      D Åcommand        s            512a
  25.      d QCMDEXC         PR                  ExtPgm('QCMDEXC')
  26.      d   command                    500a   const
  27.      d   clength                     15p 5 const
  28.  
  29.      D record          ds          1000
  30.      D outrec          s           1000    varying  inz
  31.      Dreplkey          s            100a   inz
  32.  
  33.      C     UNIXPARM      PLIST
  34.      C                   PARM                    CMD
  35.      C                   PARM                    MODE
  36.       /free
  37.        RECORD = *BLANKS;
  38.        OUTREC = *BLANKS;
  39.        // replkey = '363631653237354f494d31554c594c4a';
  40.        XML-INTO encodedExchangeToken %XML('/home/I0RS01HU/+
  41.        IN2.xml':'doc=file case=any path=+
  42.        TokenExchangeResponse/encodedExchangeToken');
  43.        eval encodedExchangeToken =%trimr(encodedExchangeToken);
  44.        open K1  ;
  45.        dow not %eof(K1);
  46.        read rec ;
  47.         //Convert from EBCDIC to ASCII
  48.         //    QDCXLATE(len: key: 'QTCPASC');
  49.            eval var1 = key;
  50.                cvthc(HexEquivalent: var1: %len(key)*2);
  51.         close k1 ;
  52.         enddo ;
  53.        cmd = 'echo ' + '''' +  encodedExchangeToken + ''' ! openssl +
  54.        // enc -d -aes-128-ecb -K 363631653237354f494d31554c594c4a +
  55.           enc -d -aes-128-ecb -K ' + %trimr(HexEquivalent) +
  56.           ' -nopad -nosalt -base64 -A';
  57.        open UNIX;
  58.        read UNIX record;
  59.        dow not %eof(UNIX);
  60.        pos2 = %scan(x'10' :record);
  61.        Record = %subst(Record :1 :(Pos2 - 1));
  62.        eval outrec = %trimr(record);
  63.        EVAL N1  = %LEN(OUTREC);
  64.         DSPLY N1;
  65.         //Delete the TESTFILE
  66.           Åcommand = 'DLTF FILE(rishi/TESTFILE)';
  67.           QCMDEXC(%trim(Åcommand): %len(%trim(Åcommand)));
  68.           Åcommand = *blanks;
  69.           Åcommand = 'CRTPF FILE(RISHI/TESTFILE) RCDLEN(' + %char(N1) + ')';
  70.           QCMDEXC(%trim(Åcommand): %len(%trim(Åcommand)));
  71.         //Write into file
  72.            EXEC SQL
  73.           INSERT INTO rishi/TESTFILE VALUES (:outrec);
  74.       //   dsply %subst(outrec:1:48);
  75.            read UNIX record;
  76.            enddo;
  77.         close UNIX;
  78.         return;
  79.       /end-free
  80.  
© 2004-2019 by midrange.com generated in 0.008s valid xhtml & css