IBM Version 4 Universal Remote User Manual


 
/ᑍ The SEPT is an array of system pointers that address IBM ᑍ/
/ᑍ programs in QSYS. Within this array of pointers, some of the ᑍ/
/ᑍ offsets represent fixed (upward compatible) assignments. All ᑍ/
/ᑍ OS/4 APIs, for instance, are fixed at certain offsets within ᑍ/
/ᑍ the SEPT and you can call these APIs directly via the SEPT. ᑍ/
/ᑍ Calling APIs in this way avoids having to resolve to the API ᑍ/
/ᑍ (that is, performance is improved) and prevents someone from ᑍ/
/ᑍ placing their version of the API earlier in the library list ᑍ/
/ᑍ than the IBM-supplied API (that is, avoids counterfeits). ᑍ/
/ᑍ All APIs, and their offsets, can be found in the source member ᑍ/
/ᑍ QLIEPTI of file H in the optionally installed QSYSINC library. ᑍ/
/ᑍ You should only use the SEPT for those programs identified in ᑍ/
/ᑍ member QLIEPTI. The use of any other SEPT offsets is NOT ᑍ/
/ᑍ supported. ᑍ/
/ᑍ Because the offset values in member QLIEPTI are oriented to the ᑍ/
/ᑍ C language, they are assuming a base of . Because MI arrays ᑍ/
/ᑍ use a default base of 1, we will declare the SEPT array with ᑍ/
/ᑍ an explicit base of . Because the array can grow over time ᑍ/
/ᑍ (and we don't necessarily want to have to change the upper ᑍ/
/ᑍ bound every release), we'll just define the array as having 2 ᑍ/
/ᑍ elements and use the OVRPGATR instruction later in the program ᑍ/
/ᑍ to instruct the translator to ignore the array bounds when ᑍ/
/ᑍ referring to the array. For example, later we will use ᑍ/
/ᑍ SEPT(4267) to call the Send Nonprogram Message (QMHSNDM) API. ᑍ/
DCL SYSPTR SEPT(:1) BAS(SEPT@); /ᑍ use Base  to match QLIEPTI ᑍ/
/ᑍ Declare template for Materialize Context (MATCTX) ᑍ/
DCL DD MATCTXOPTS CHAR(44);
DCL DD MATCTXCTL CHAR( 2) DEF(MATCTXOPTS) POS( 1) INIT(X'5');
DCL DD MATCTXSELCTL CHAR(42) DEF(MATCTXOPTS) POS( 3);
/ᑍ Declare Small Receiver for initial MATCTX ᑍ/
DCL DD S_RECEIVER CHAR(8) BDRY(16);
DCL DD S_BYTPRV BIN( 4) DEF(S_RECEIVER) POS( 1) INIT(8);
DCL DD S_BYTAVL BIN( 4) DEF(S_RECEIVER) POS( 5);
DCL SPCPTR S_RECEIVER@ INIT(S_RECEIVER);
/ᑍ Declare Large Receiver Layout for second MATCTX ᑍ/
DCL DD L_RECEIVER CHAR(129) BAS(L_RECEIVER@);
DCL DD L_BYTPRV BIN( 4) DEF(L_RECEIVER) POS( 1);
DCL DD L_BYTAVL BIN( 4) DEF(L_RECEIVER) POS( 5);
DCL DD L_CONTEXT CHAR(32) DEF(L_RECEIVER) POS( 9);
DCL DD L_OBJ_TYPE CHAR( 1) DEF(L_CONTEXT) POS( 1);
DCL DD L_OBJ_STYPE CHAR( 1) DEF(L_CONTEXT) POS( 2);
DCL DD L_OBJ_NAME CHAR(3) DEF(L_CONTEXT) POS( 3);
DCL DD L_CTX_OPTS CHAR( 4) DEF(L_RECEIVER) POS(41);
DCL DD L_RCV_OPTS CHAR( 4) DEF(L_RECEIVER) POS(45);
DCL DD L_SPC_SIZ BIN( 4) DEF(L_RECEIVER) POS(49);
DCL DD L_SPC_IVAL CHAR( 1) DEF(L_RECEIVER) POS(53);
DCL DD L_PERF_CLS CHAR( 4) DEF(L_RECEIVER) POS(54);
DCL DD ᑍ CHAR( 7) DEF(L_RECEIVER) POS(58);
DCL DD ᑍ CHAR(16) DEF(L_RECEIVER) POS(65);
DCL SYSPTR L_ACC_GROUP;
Chapter 7. Machine Interface Programming 7-33