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:
- H DftActGrp(*No) BndDir('QC2LE')
- FUNIX IF F 1000 SPECIAL PGMNAME('UNIXCMD')
- F PLIST(UNIXPARM) USROPN
- FK1 IF E DISK usropn
- F*QSYSPRT O F 1000 PRINTER
- dencodedExcha...
- dngeToken s 500 VARYING
- d var1 s 50 ccsid(819)
-
- d len s 10i 0 inz(16)
- DPOS2 S 5U 0
- D cmd s 5000a
- D mode s 1A inz('P')
- DN1 S 2P 0
- D HexEquivalent S 52A
- d cvthc PR ExtProc('cvthc')
- d target 65534A options(*varsize)
- d src_bits 32767A options(*varsize) const
- d tgt_length 10I 0 value
- d*QDCXLATE PR ExtPgm('QDCXLATE')
- d* len 5p 0 const
- d* data 32702a options(*varsize)
- d* table 10a const
- D Åcommand s 512a
- d QCMDEXC PR ExtPgm('QCMDEXC')
- d command 500a const
- d clength 15p 5 const
-
- D record ds 1000
- D outrec s 1000 varying inz
- Dreplkey s 100a inz
-
- C UNIXPARM PLIST
- C PARM CMD
- C PARM MODE
- /free
- RECORD = *BLANKS;
- OUTREC = *BLANKS;
- // replkey = '363631653237354f494d31554c594c4a';
- XML-INTO encodedExchangeToken %XML('/home/I0RS01HU/+
- IN2.xml':'doc=file case=any path=+
- TokenExchangeResponse/encodedExchangeToken');
- eval encodedExchangeToken =%trimr(encodedExchangeToken);
- open K1 ;
- dow not %eof(K1);
- read rec ;
- //Convert from EBCDIC to ASCII
- // QDCXLATE(len: key: 'QTCPASC');
- eval var1 = key;
- cvthc(HexEquivalent: var1: %len(key)*2);
- close k1 ;
- enddo ;
- cmd = 'echo ' + '''' + encodedExchangeToken + ''' ! openssl +
- // enc -d -aes-128-ecb -K 363631653237354f494d31554c594c4a +
- enc -d -aes-128-ecb -K ' + %trimr(HexEquivalent) +
- ' -nopad -nosalt -base64 -A';
- open UNIX;
- read UNIX record;
- dow not %eof(UNIX);
- pos2 = %scan(x'10' :record);
- Record = %subst(Record :1 :(Pos2 - 1));
- eval outrec = %trimr(record);
- EVAL N1 = %LEN(OUTREC);
- DSPLY N1;
- //Delete the TESTFILE
- Åcommand = 'DLTF FILE(rishi/TESTFILE)';
- QCMDEXC(%trim(Åcommand): %len(%trim(Åcommand)));
- Åcommand = *blanks;
- Åcommand = 'CRTPF FILE(RISHI/TESTFILE) RCDLEN(' + %char(N1) + ')';
- QCMDEXC(%trim(Åcommand): %len(%trim(Åcommand)));
- //Write into file
- EXEC SQL
- INSERT INTO rishi/TESTFILE VALUES (:outrec);
- // dsply %subst(outrec:1:48);
- read UNIX record;
- enddo;
- close UNIX;
- return;
- /end-free
-
|
|
|