The arguments passed to OPSLINK are either text strings or integer values. All text strings passed should be defined in the calling program as follows:
ARGSTR DC H'length',C'text'
The length indicates the number of characters in text. Zero indicates a null string. All integer values are fullword signed binary and should be defined as follows:
ARGWORD DC F'value'
The optional 6th argument of all OPSLINK calls is an output array that should be defined as:
ARRAY DS 1000CL258
The number 1000 is arbitrary but should be large enough to accommodate the maximum number of output lines expected to be returned by each call. The fifth argument passed to OPSLINK sets the size of the array. The size was set to 1000 in the above example. Each element is 258 bytes long, starting with a halfword-length field, followed by a 256-byte string area.
Assembler programs must turn on the VL bit when calling OPSLINK. The VL bit is the high-order bit in the last word of the parameter list. Also, the calling program must have an AMODE of 31 if a LOAD followed by either a BALR or a BASR is issued.
Before the first call is made to OPSLINK, you must load the subroutine into memory by issuing the LOAD macro instruction. After the last call to OPSLINK, delete the subroutine from memory using the DELETE macro instruction. On return from the LOAD macro, if register 15 is zero, register 0 contains the address of the load module in bits 1-31. Check the appropriate IBM manual for further details on the LOAD and DELETE macros.
The CA OPS/MVS API calling sequence from assembler is as follows:
LOAD EP=OPSLINK Load the subroutine LTR R15,R15 JNZ ERROR ST R0,OPSLINKA Save the subroutine address . . . OC PARMLAST(1),=X'80' Turn on VL bit LA R1,PARMLIST Parameter list address L R15,OPSLINKA Load OPSLINK address BASR R14,R15 Call OPSLINK . . . DELETE EP=OPSLINK Delete OPSLINK ERROR DS 0H . . OPSLINKA DS A Address of OPSLINK * PARMLIST DS 0A Parameter list passed to OPSLINK DC A(SUBFUNC) ARG1 DC A(SYSID) ARG2 DC A(SUBSYS) ARG3 DC A(CMDSTR) ARG4 DC A(LINECNT) ARG5 DC A(ARRAY) ARG6 DC A(IMSID) ARG7 PARMLAST DC A(MFORM) ARG8 * SUBFUNC DC H'6',C'OPSTSO' Issue TSO command SYSID DC H'0',C' ' No system ID SUBSYS DC H'0',C' ' No OPS/MVS subsystem name CMDSTR DC H'5',C'LISTC' TSO command IMSID DC H'0',C' ' No IMSID MFORM DC H'1',C'M' MFORM(M) LINECNT DC F'100' Allow for 100 lines ARRAY DS H,CL256 Room for 1 Line DS 99CL258 Room for 99 more lines
OPSLINK returns a return code in register 15. Return codes from OPSLINK and their meaning are explained at the end of this section.
Copyright © 2014 CA.
All rights reserved.
|
|