Use Binder Source, add JobLogMsg
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
**free
|
||||
// +---------------------------------------------------------------+
|
||||
// + SHOW (display) text in an IBM i 5250 pop-up window +
|
||||
// +---------------------------------------------------------------+
|
||||
// Replacement (partial) for the DSPLY opcode:
|
||||
// 1. Accepts text lenths much great than 52.
|
||||
// 2. Does not accept input.
|
||||
//
|
||||
// Uses the Display Long Text (QUILNGTX) API to display a pop-up
|
||||
// window containing the passed string.
|
||||
// API doesn't display bidirectional right to left text.
|
||||
//
|
||||
// Error Messages
|
||||
// Message ID Error Message Text
|
||||
// CPF3C90 E Literal value cannot be changed
|
||||
// CPF6A4C E At least one parameter value is not correct. Reason code is &1
|
||||
// CPF9871 E Error occurred while processing
|
||||
// "Inspired" by others. Thanks to:
|
||||
// Nick Litten https://www.nicklitten.com/dsply-sucks-quilngtx-rocks/
|
||||
// Michael Sansoterra https://www.itjungle.com/2011/09/21/fhg092111-story02/
|
||||
//
|
||||
// == NOTE =====================================================================
|
||||
// This should probably be part of the SRV_MSG service program, but since this
|
||||
// is **FREE and SRV_MSG is only partially free, I'm leaving it as a separate
|
||||
// program. For now, anyway...
|
||||
//
|
||||
// Probably only useful for testing/debugging and the JOBLOGMSG procdure in
|
||||
// SRV_PGM is probably more useful.
|
||||
// =============================================================================
|
||||
|
||||
ctl-opt option(*NoDebugIo: *srcstmt)
|
||||
dftactgrp(*no) actgrp(*caller)
|
||||
main(Show);
|
||||
|
||||
dcl-proc Show ;
|
||||
dcl-pi Show;
|
||||
p_Text varchar(8192) const;
|
||||
p_MsgId char(7) Options(*nopass:*omit);
|
||||
p_MsgFile char(21) Options(*nopass:*omit);
|
||||
end-pi;
|
||||
|
||||
dcl-ds myApiError ;
|
||||
APIEProv int(10) inz(%SIZE(APIEData)) pos(1);
|
||||
APIEAvail int(10) inz(0) pos(5);
|
||||
APIErrID char(7) pos(9);
|
||||
APIErrRsv char(1);
|
||||
APIEData char(256);
|
||||
end-ds;
|
||||
|
||||
dcl-pr QUILNGTX extpgm('QUILNGTX');
|
||||
*n char(8192) const; // MsgText
|
||||
*n int(10) const; // MsgLength
|
||||
*n char(7) const; // MessageId
|
||||
*n char(21) const; // MessageFile
|
||||
*n options( *omit: *varsize ) like( myApierror ); // ErrorDS
|
||||
end-pr;
|
||||
|
||||
dcl-s MsgId like(p_MsgId);
|
||||
dcl-s MsgFile like(p_MsgFile);
|
||||
|
||||
If %Parms = 1;
|
||||
MsgId = 'CAE0103'; // 'Press Enter to continue.'
|
||||
MsgFile = 'QCPFMSG *LIBL';
|
||||
Elseif %Parms = 2;
|
||||
MsgId = p_MsgId;
|
||||
MsgFile = 'QCPFMSG *LIBL';
|
||||
Elseif %Parms = 3;
|
||||
MsgId = p_MsgId;
|
||||
MsgFile = p_MsgFile;
|
||||
Endif;
|
||||
APIEAvail = 0; // Errors cause a crash.
|
||||
QUILNGTX ( p_Text
|
||||
: %Len(p_Text)
|
||||
: MsgId
|
||||
: MsgFile
|
||||
: myApiError
|
||||
);
|
||||
return;
|
||||
end-proc;
|
||||
Reference in New Issue
Block a user