*=================================================================================== * MIT License * Copyright (c) 2016 TEMBO Technology Labs (Pty) Ltd. * Author: Tommy Atkins - Chief Development Officer * * Permission is hereby granted, free of charge, to any person obtaining a copy of this * software and associated documentation files (the "Software"), to deal in the Software * without restriction, including without limitation the rights to use, copy, modify, * merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit * persons to whom the Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all copies * or substantial portions of the Software. * ================================================================================== * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. *=================================================================================== h nomain aut(*use) *=============================================================== * Application Error Handlers - Module 02 * ERR10: Send *DIAG Message * ERR11: Send *ESCAPE Message * ERR12: Send *INFO Message to *EXT * ERR13: Send *STATUS Message to *EXT *=============================================================== d EC ds d ByteIn 9b 0 inz(0) d ByteOut 9b 0 inz(0) d ErrorId 7 inz(' ') d Resvd1 1 inz(' ') d ErrorDta 20 inz(' ') *=============================================================== d ERR10 pr d MI 7 const d MF 10 const options(*omit:*nopass) d MD 2048 const varying d options(*omit:*nopass:*varsize) d MT 1 const options(*nopass) d ERR11 pr d MI 7 const d MF 10 const options(*omit:*nopass) d MD 2048 const varying d options(*omit:*nopass:*varsize) d MT 1 const options(*nopass) d ERR12 pr d MI 7 const d MF 10 const options(*omit:*nopass) d MD 2048 const varying d options(*omit:*nopass:*varsize) d ERR13 pr d MI 7 const d MF 10 const options(*omit:*nopass) d MD 2048 const varying d options(*omit:*nopass:*varsize) *=============================================================== * Send Program Message (QMHSNDPM) API d QMHSNDPM pr extpgm('QMHSNDPM') d MsgId 7 const d MsgFile 20 const d MsgData 128 const d MsgDataLen 10i 0 const d MsgType 10 const d CallStkEnt 10 const d CSECount 10i 0 const d MsgKey 4 d ErrorCode like(EC) * Optional Parameter Group 1: d* CSELength 10i 0 const d* CSEQual 20 const d* ScreenWait 10i 0 const * Optional Parameter Group 2: d* CSEDataType 10 const d* CCSID 10i 0 const *=============================================================== d MK s 4 d CSC s 10i 0 inz(1) d CSEntQ s 20 inz('*NONE *NONE') *=============================================================== d MFL s 20 inz('ERRMSGF *LIBL') d MDD s 128 inz(' ') d MDL s 10i 0 inz(1) *=============================================================== d CallStkEnt pr 10i 0 d MT 1 const options(*nopass) *=============================================================== * ERR10: Send *DIAG Message *=============================================================== p ERR10 b export d ERR10 pi d MI 7 const d MF 10 const options(*omit:*nopass) d MD 2048 const varying d options(*omit:*nopass:*varsize) d MT 1 const options(*nopass) *=========================================== /free //========================================= reset MFL; //========================================= if %parms = 1; QMHSNDPM(MI:MFL:' ':1:'*DIAG':'*':CallStkEnt():MK:EC); return; endif; //========================================= if %parms = 2; MFL = MF+'*LIBL'; QMHSNDPM(MI:MFL:' ':1:'*DIAG':'*':CallStkEnt():MK:EC); return; endif; //========================================= if %parms = 3; //====================================== if %addr(MF) <> *NULL; MFL = MF+'*LIBL'; endif; //====================================== MDL = %len(MD); QMHSNDPM(MI:MFL:MD:MDL:'*DIAG':'*':CallStkEnt():MK:EC); return; //====================================== endif; //========================================= if %parms = 4; //====================================== if %addr(MF) <> *NULL; MFL = MF+'*LIBL'; endif; //====================================== if %addr(MD) <> *NULL; MDL = %len(MD); endif; //====================================== QMHSNDPM(MI:MFL:MD:MDL:'*DIAG':'*':CallStkEnt(MT):MK:EC); return; //====================================== endif; //========================================= /end-free *=========================================== p ERR10 e *=============================================================== * ERR11: Send *ESCAPE Message <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< *=============================================================== p ERR11 b export d ERR11 pi d MI 7 const d MF 10 const options(*omit:*nopass) d MD 2048 const varying d options(*omit:*nopass:*varsize) d MT 1 const options(*nopass) *=========================================== /free //========================================= reset MFL; //========================================= if %parms = 1; QMHSNDPM(MI:MFL:' ':1:'*ESCAPE':'*':CallStkEnt():MK:EC); return; endif; //========================================= if %parms = 2; MFL = MF+'*LIBL'; QMHSNDPM(MI:MFL:' ':1:'*ESCAPE':'*':CallStkEnt():MK:EC); return; endif; //========================================= if %parms = 3; //====================================== if %addr(MF) <> *NULL; MFL = MF+'*LIBL'; endif; //====================================== MDL = %len(MD); QMHSNDPM(MI:MFL:MD:MDL:'*ESCAPE':'*':CallStkEnt():MK:EC); return; //====================================== endif; //========================================= if %parms = 4; //====================================== if %addr(MF) <> *NULL; MFL = MF+'*LIBL'; endif; //====================================== if %addr(MD) <> *NULL; MDL = %len(MD); endif; //====================================== QMHSNDPM(MI:MFL:MDD:MDL:'*ESCAPE':'*':CallStkEnt(MT):MK:EC); return; //====================================== endif; //========================================= /end-free p ERR11 e *=============================================================== * ERR12: Send *INFO Message to *EXT <<<<<<<<<<<<<<<<<<<<<<<<<<<< *=============================================================== p ERR12 b export d ERR12 pi d MI 7 const d MF 10 const options(*omit:*nopass) d MD 2048 const varying d options(*omit:*nopass:*varsize) *=========================================== /free //========================================= reset MFL; //========================================= if %parms = 1; QMHSNDPM(MI:MFL:' ':1:'*INFO':'*EXT':0:MK:EC); return; endif; //========================================= if %parms = 2; MFL = MF+'*LIBL'; QMHSNDPM(MI:MFL:' ':1:'*INFO':'*EXT':0:MK:EC); return; endif; //========================================= if %parms = 3; //====================================== if %addr(MF) <> *NULL; MFL = MF+'*LIBL'; endif; //====================================== MDL = %len(MD); QMHSNDPM(MI:MFL:MD:MDL:'*INFO':'*EXT':0:MK:EC); return; //====================================== endif; //========================================= /end-free p ERR12 e *=============================================================== * ERR13: Send *STATUS Message to *EXT <<<<<<<<<<<<<<<<<<<<<<<<<< *=============================================================== p ERR13 b export d ERR13 pi d MI 7 const d MF 10 const options(*omit:*nopass) d MD 2048 const varying d options(*omit:*nopass:*varsize) *=========================================== /free //========================================= reset MFL; //========================================= if %parms = 1; QMHSNDPM(MI:MFL:' ':1:'*STATUS':'*EXT':0:MK:EC); return; endif; //========================================= if %parms = 2; QMHSNDPM(MI:MF+'*LIBL':' ':1:'*STATUS':'*EXT':0:MK:EC); return; endif; //========================================= if %parms = 3; //====================================== if %addr(MF) <> *NULL; MFL = MF+'*LIBL'; endif; //====================================== MDL = %len(MD); QMHSNDPM(MI:MFL:MD:MDL:'*STATUS':'*EXT':0:MK:EC); return; //====================================== endif; //========================================= /end-free p ERR13 e *===============================================================