Also :
die supp.Grp bekommst du einfacher mit RTVUSRPRF. Das USRHOME ist etwas schwieriger, da dies im Unicode (UCS-2)abgelegt ist.
Das heißt, daß API QSYRUSRI reicht nicht.
Mit dem API CDRCVRT kannst du den String in z.B. die Job CCSID umwandeln.
Hier ein kleines CL-Programm :
Viel SpaßCode:RTVUSRHOME: PGM PARM(&USRPRF &HOMEDIRN) DCL VAR(&USRPRF) TYPE(*CHAR) LEN(10) /**/ DCL VAR(&RCV) TYPE(*CHAR) LEN(9999) /**/ DCL VAR(&RCVLEN) TYPE(*CHAR) LEN(4) /**/ DCL VAR(&ERR) TYPE(*CHAR) LEN(100) /**/ DCL VAR(&FORMAT) TYPE(*CHAR) LEN(8) + VALUE('USRI0300') /**/ DCL VAR(&OFSHOME) TYPE(*CHAR) LEN(4) /**/ DCL VAR(&OFSHOMED) TYPE(*DEC) LEN(9) /**/ DCL VAR(&HOMEDIR) TYPE(*CHAR) LEN(512) /*IN UCS*2*/ DCL VAR(&CCSID) TYPE(*CHAR) LEN(4) /**/ DCL VAR(&LOHOME) TYPE(*CHAR) LEN(4) /**/ DCL VAR(&ST1) TYPE(*CHAR) LEN(4) /**/ DCL VAR(&L1) TYPE(*CHAR) LEN(4) /**/ DCL VAR(&CCSIDN) TYPE(*CHAR) LEN(4) /**/ DCL VAR(&CCSIDNN) TYPE(*DEC) LEN(5 0) /**/ DCL VAR(&ST2) TYPE(*CHAR) LEN(4) /**/ DCL VAR(&GCCASN) TYPE(*CHAR) LEN(4) /**/ DCL VAR(&L2) TYPE(*CHAR) LEN(4) /**/ DCL VAR(&HOMEDIRN) TYPE(*CHAR) LEN(256) /*IN EBCDIC*/ DCL VAR(&L3) TYPE(*CHAR) LEN(4) /**/ DCL VAR(&L4) TYPE(*CHAR) LEN(4) /**/ CHGVAR VAR(%BIN(&RCVLEN)) VALUE(9999) IF COND(&USRPRF = '*CURRENT ') THEN(RTVJOBA + CURUSER(&USRPRF) DFTCCSID(&CCSIDNN)) /* RETRIEVE USER INFORMATION (QSYRUSRI) API */ CALL PGM(QSYRUSRI) PARM(&RCV &RCVLEN &FORMAT + &USRPRF &ERR) CHGVAR VAR(&OFSHOME) VALUE(%SST(&RCV 601 4)) CHGVAR VAR(&OFSHOMED) VALUE(%BIN(&OFSHOME)) /* OFFSET TO HOMEDIR-BLOCK */ CHGVAR VAR(&OFSHOMED) VALUE(&OFSHOMED + 1) CHGVAR VAR(&CCSID) VALUE(%SST(&RCV &OFSHOMED 4)) /* CCSID OF HOMEDIR IS 61952 UCS-2 */ CHGVAR VAR(&OFSHOMED) VALUE(&OFSHOMED +4+2+3+3+4) CHGVAR VAR(&LOHOME) VALUE(%SST(&RCV &OFSHOMED 4)) /* NUMBER OF BYTES HOMEDIR UCS*2 */ CHGVAR VAR(&OFSHOMED) VALUE(&OFSHOMED +4+2+10) CHGVAR VAR(&HOMEDIR) VALUE(%SST(&RCV &OFSHOMED 512)) /* HOMEDIR IN UCS*2 */ CHGVAR VAR(%BIN(&ST1)) VALUE(0) CHGVAR VAR(&L1) VALUE(&LOHOME) /* NUMBER OF BYTES INPUT STRING */ RTVJOBA DFTCCSID(&CCSIDNN) /* CONVERT IN DFT JOB CCSID */ CHGVAR VAR(%BIN(&CCSIDN)) VALUE(&CCSIDNN) CHGVAR VAR(%BIN(&ST2)) VALUE(2) /* 2 = SPACE PADDED, SO L2 = L3 */ CHGVAR VAR(%BIN(&GCCASN)) VALUE(0) CHGVAR VAR(%BIN(&L2)) VALUE(256) /* ALLOCATED OUTPUT LENGTH IN BYTES */ /* CONVERT A GRAPHIC CHARACTER STRING (CDRCVRT) API */ CALL PGM(CDRCVRT) PARM(&CCSID &ST1 &HOMEDIR &L1 + &CCSIDN &ST2 &GCCASN &L2 &HOMEDIRN &L3 + &L4 &ERR) /* SNDPGMMSG MSG(&HOMEDIRN) */ ENDPGM
Sven
[Dieser Beitrag wurde von Sven Schneider am 23. Mai 2003 editiert.]
![[NEWSboard IBMi Forum]](images/duke/nblogo.gif)



Mit Zitat antworten
Bookmarks