This general macro allows ECB-controlled programs to access protected main
storage by returning the address of an interface point at execution
time. This eliminates reassembly of these programs because of changes
in the storage map. Additionally, the CINFC macro provides a convenient
way for a real-time program to request update of the file copy of one or more
control program keypoint records.
- label
- A symbolic name can be assigned to the macro statement.
- R
- For an E-type program, specifies the return interface address; leave
storage protected.
For a C-type program, specifies the return interface address; leave
storage protect key unchanged. All control program services will be by
fast path. That is, the macro will always generate inline code for
calls by the control program.
- W
- For an E-type program, specifies the return interface address; allow
program to write in protected storage. This option is reserved for
system use and requires program authorizations of KEY0 and RESTRICT.
For a C-type program, specifies the return interface address; leave
storage protect key unchanged. All control program services will be by
fast path. That is, the macro will always generate inline code for
calls by the control program.
- A
- For an E-type program, specifies the return interface location
address; allow program to write in protected storage. This option
is restricted and requires program authorization of KEY0 and RESTRICT.
For a C-type program, specifies the return interface address; leave
storage protect key unchanged. All control program services will be by
fast path. That is, the macro will always generate inline code for
calls by the control program. In addition, the interface location
address is returned.
- K
- Initiate control program (CP) keypoint update. Specify one or more
of the following:
- LIST
- This option will generate a list of equates only and no executable
code.
- intpt
- This is the symbolic label of the desired interface point, as defined in
the CINFC macro. The label is also called a CINFC tag.
For a current list of the CINFC tags refer to the source code for the CINFC
macro.
- F
- This is the optional fast path. It is valid with the R parameter
only. The current protection key will not be changed and the macro will
not request service via an SVC.
- BSS
- This is the subsystem for which the macro will return the interface
point. The defaults depend on whether the calling program is an E-type
or part of the control program (C-type).
- BSS=,
- When a null is the value of the parameter (BSS=,), the CE1DBI field (in
the ECB) is assumed to contain the subsystem index. This is the default
value for E-type programs. This type of invocation is processed by a
service routine.
- NO
- For an E-type program, the register specified in the REG parameter is
assumed to have the subsystem index to be used to access the CINFC
data. This type of invocation expands inline.
For a C-type program, the subsystem ordinal number must be supplied in REG
prior to issuing the CINFC macro. The value is multiplied by 4 by CINFC
to obtain the offset to the data.
- YES
- For an E-type program, specifies that the BSS CINFC data will be
accessed. This type of invocation expands inline.
For a C-type program, specifies that the value returned in REG will be for
the basic subsystem. This is the default value for the control
program.
- INDEX
- The subsystem (ordinal) index value will be found in the register
specified in the REG parameter. The user must multiply the value by 4
to obtain the offset to the data before calling CINFC.
This parameter is only meaningful in an MDBF environment.
- REG=Rx|R14
- This is the register in which the interface address is to be
placed. The default is R14, and R0 may not be specified. In
addition, if the 'F' option is not specified, R14 must be specified
for the 'REG' parameter.
- TABLE
- This option is for CP use only and will generate a table of displacements
within Keypoint X for all the keypointable keypoints. There will be two
entries in the table for each keypointable keypoint: a) a displacement
to the keypoint descriptor entry; and b) a displacement to the keypoint
core address entry. Any CSECT which calls the CINFC TABLE also needs to
call the CX0CK macro to define the symbols used to generate the table.