Skip to content

Instantly share code, notes, and snippets.

@RainerRoss
Last active March 20, 2022 17:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save RainerRoss/844cf655470b19aeb1e41a7318e61eee to your computer and use it in GitHub Desktop.
Save RainerRoss/844cf655470b19aeb1e41a7318e61eee to your computer and use it in GitHub Desktop.
ProfileHandle
//------------------------------------------------------------------//
// QSYGETPH - Get Profile Handle //
//------------------------------------------------------------------//
dcl-pr getPrfHdl extpgm('QSYGETPH');
User like(GblUser) const; // User
Password like(GblPassword) const; // Password
Handle like(GblHandle); // Profilehandle
Apierr like(DsApierr) const; // API-Error
Pwdlen like(GblPwdlen) const; // Password-Length
CCSID like(GblCCSID) const; // CCSID
end-pr;
//------------------------------------------------------------------//
// QWTSETP - Set Profile Handle //
//------------------------------------------------------------------//
dcl-pr setPrfHdl extpgm('QWTSETP');
Handle like(GblHandle) const; // Profilehandle
Apierr like(DsApierr) const; // API-Error
end-pr;
//------------------------------------------------------------------//
// QSYRLSPH - Release Profile Handle //
//------------------------------------------------------------------//
dcl-pr rlsPrfHdl extpgm('QSYRLSPH');
Handle like(GblHandle) const; // Profilehandle
Apierr like(DsApierr) const; // API-Error
end-pr;
//------------------------------------------------------------------//
// QSYGENPT - Generate Profile Token //
//------------------------------------------------------------------//
dcl-pr genPrfToken extpgm('QSYGENPT');
Token like(GblToken) const; // Token
User like(GblUser) const; // User
Password like(GblPassword) const; // Password
Timeout like(GblTimeout) const; // Timeout
Toktype like(GblToktype) const; // Tokentype
Apierr like(DsApierr) const; // API-Error
Pwdlen like(GblPwdlen) const; // Password-Length
CCSID like(GblCCSID) const; // CCSID
end-pr;
//------------------------------------------------------------------//
// QSYRMVPT - Remove Profile Token //
//------------------------------------------------------------------//
dcl-pr rmvPrfToken extpgm('QSYRMVPT');
RmvOpt like(GblRmvOpt) const; // Remove-Option
Apierr like(DsApierr) const; // API-Error
Token like(GblToken) const; // Token
end-pr;
//------------------------------------------------------------------//
// Retrieve ErrorMessage //
//------------------------------------------------------------------//
dcl-pr rtvErrmsg extpgm('RTVMSGC');
Msgid like(DsApierr.Msgid) const; // MessageId
Errdat like(DsApierr.Errdata) const; // ErrorData
Errmsg like(GblErrmsg) const; // ErrorMessage
end-pr;
//------------------------------------------------------------------//
// Array API-Error //
//------------------------------------------------------------------//
dcl-ds DsApierr qualified inz; // API-Error
BytesProv int(10) inz(%size(DsApierr)); // Bytes Provided
BytesAvail int(10); // Bytes Avail
MsgId char(07); // ErrorMessageId
*n char(01);
ErrData char(256); // ErrorData
end-ds;
//------------------------------------------------------------------//
// Variables //
//------------------------------------------------------------------//
dcl-s GblOk ind; // ok
dcl-s GblUser char(10); // User
dcl-s GblPassword char(128); // Password
dcl-s GblToken char(32); // Token
dcl-s GblToktype char(01); // Tokentype
dcl-s GblTokHex char(64); // Token Hex
dcl-s GblTimeout int(10); // Timeout
dcl-s GblHandle char(12); // Profilehandle
dcl-s GblRmvOpt char(10); // Remove-Option
dcl-s GblPwdlen int(10); // Password-Length
dcl-s GblCCSID int(10); // CCSID 0 = JobCCSID
dcl-s GblErrmsg char(132); // ErrorMessage
//------------------------------------------------------------------//
/*********************************************************************/
/* */
/* RETRIEVE ERROR MESSAGE TEXT */
/* */
/****************** */
/* R.ROSS 07.2020 * */
/*********************************************************************/
PGM PARM(&MSGID &ERRDAT &ERRMSG)
DCL VAR(&MSGID) TYPE(*CHAR) LEN(07)
DCL VAR(&MSGF) TYPE(*CHAR) LEN(10) VALUE(QCPFMSG)
DCL VAR(&ERRDAT) TYPE(*CHAR) LEN(132)
DCL VAR(&ERRMSG) TYPE(*CHAR) LEN(132)
DCL VAR(&BLANK) TYPE(*CHAR) LEN(132)
/*********************************************************************/
/* RETRIEVE MESSAGE FROM MESSAGEFILE */
/*********************************************************************/
IF COND(&ERRDAT > ' ') THEN(DO)
RTVMSG MSGID(&MSGID) MSGF(&MSGF) MSGDTA(&ERRDAT) MSG(&ERRMSG)
MONMSG MSGID(CPF0000) EXEC(CHGVAR VAR(&ERRMSG) VALUE(&BLANK))
ENDDO
ELSE CMD(DO)
RTVMSG MSGID(&MSGID) MSGF(&MSGF) MSG(&ERRMSG)
MONMSG MSGID(CPF0000) EXEC(CHGVAR VAR(&ERRMSG) VALUE(&BLANK))
ENDDO
/*********************************************************************/
/* ENDE */
/*********************************************************************/
ENDE: RETURN
/*********************************************************************/
ctl-opt dftactgrp(*no) alloc(*teraspace) option(*nodebugio:*nounref)
main(main);
//------------------------------------------------------------------//
// //
// Test - Get Profile Handle - QSYGETPH 20.000 per Job //
// //
//----------------- //
// R.Ross 07.2020 * //
//------------------------------------------------------------------//
// Prototypes //
//------------------------------------------------------------------//
/include tsts/qcpysrc,prfhdl
//------------------------------------------------------------------//
// Main //
//------------------------------------------------------------------//
dcl-proc main;
chkUsrprf('HAUSER':'test');
end-proc;
//------------------------------------------------------------------//
// Check User and Password of Userprofile //
//------------------------------------------------------------------//
dcl-proc chkUsrprf;
dcl-pi *n;
PiUser like(GblUser) const; // User
PiPassword like(GblPassword) const; // Password
end-pi;
dcl-s LocHandle like(GblHandle);
dcl-s LocLength like(GblPwdlen) inz(%len(PiPassword));
dcl-s LocCcsid like(GblCCSID); // 0 = JobCCSID
dcl-s LocErrmsg like(GblErrmsg);
getPrfHdl(PiUser:PiPassword:LocHandle:DsApierr:LocLength:LocCcsid);
if DsApierr.BytesAvail > *zero;
rtvErrmsg(DsApierr.Msgid:DsApierr.Errdata:LocErrmsg);
return;
endif;
setPrfHdl(LocHandle:DsApierr); // Set ProfileHandle
if DsApierr.BytesAvail > *zero;
rtvErrmsg(DsApierr.Msgid:DsApierr.Errdata:LocErrmsg);
return;
endif;
rlsPrfHdl(LocHandle:DsApierr); // Release ProfileHandle
if DsApierr.BytesAvail > *zero;
rtvErrmsg(DsApierr.Msgid:DsApierr.Errdata:LocErrmsg);
endif;
end-proc;
//------------------------------------------------------------------//
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment