You may use this conversion when converting a directory entry which
was obtained from DESERV FUNC=GET, or DESERV FUNC=GET_ALL, into PDSDE
format. When invoking this function, the caller supplies the PMAR
to be converted and an output area of at least 63 bytes in which the
PDSDE will be returned. The input PMAR must include either the PMARR
or PMARL extension. You must also specify the FLAGS= parameter that
is used to define a byte which indicates processing flags.
The processing flags byte is mapped
by the LCNV_FLAGS_DSECT of the IEWLCNV macro. The only processing
option defined currently is a bit which indicates whether the input
PMAR is for an alias name or not. The PDSDE generated will consist
of the indicator byte (PDS2INDC) and the user data field. The fields
in the IHAPDS mapping that precede PDS2INDC will not be generated.
The length of the PDSDE (which is the length of PDS2INDC, 1 byte,
plus the length of the user data) may be returned in a full word field
supplied by the caller.
To convert a PMAR for a primary name to a PDSDE, the PMARA parameter
should not be specified and the flags parameter should pass a byte
of X'00'.
To convert a PMAR for an alias name to a PDSDE, where the PMAR
was obtained from DESERV GET or GET=ALL, the PMAR already reflects
the attributes for the alias. Therefore, the PMARA parameter should
not be specified and the FLAGS parameter should set the LCNV_FLAGS_ALIAS
bit to 1.
If this macro is used in the DESERV EXIT routine in response to
a DESERV PUT, the input to the exit routine is a single PMAR (for
the primary name) and optionally a list of PMARAs (one for each alias
name defined). To use this conversion function in this environment
to generate a PDSDE for an alias, you must complete the following
tasks:
- Pass the PMAR for the primary name via the PMAR parameter.
- Pass the PMARA for the alias via the PMARA parameter.
- Set the LCNV_FLAGS_ALIAS bit and pass this byte via the FLAGS
parameter.
To convert PMAR to PDSDE, the format of the IEWLCNVT macro is:
[label]
|
IEWLCNVT
|
FUNC=PMAR_TO_PDSDE ,FLAGS=processing_flags ,PMAR=pmar_storage ,PDS2INDC=pdsde_indicator_byte [,AMODEREG=register] [,PMARA=pmara_storage] [,PNAME=primary_name] [,MF={S|
L|
(E,{(1-12)|RX–type address} [,COMPLETE|NOCHECK])}] ,OUTLEN=output_length [,RETCODE=retcode] [,RSNCODE=rsncode]
|
To convert PDSDE to PMAR, the format of the IEWLCNVT macro is:
[label]
|
IEWLCNVT
|
FUNC=PDSDE_TO_PMAR ,PMAR=pmar_storage ,PDS2INDC=pdsde_indicator_byte [,PNAME=primary _name] [,AMODEREG=register] [,MF={S|
L|
(E,{(1-12)|label} [,COMPLETE|NOCHECK])}] ,OUTLEN=output_length [,RETCODE=retcode] [,RSNCODE=rsncode]
|
- AMODEREG=register
- identifies a register that the macro will use to save and restore
the addressing mode of the caller. If the caller is always in 31-bit
addressing mode (at the time IEWLCNVT is invoked) you can omit this
parameter. If the caller is in 24-bit addressing mode at the time
IEWLCNVT is to be issued, you must specify the AMODEREG parameter.
Valid registers are 2-12. The register may be enclosed in parentheses,
but this is not required.
- FUNC=function_name
- identifies the function to be performed. The FUNC parameter is
not required for MF=L unless other parameters are specified. Valid
function_name values are:
- PMAR_TO_PDSDE
- convert a PMAR to a PDS2 style directory entry.
- PDSDE_TO_PMAR
- convert the user data of a PDS2 style directory entry (PDSDE)
for a load module to a PMAR.
- FLAGS=processing_flags
- specifies options to be used while processing the PMAR_TO_PDSDE
function. Variable processing_flags is a
byte of flags. The only defined flag indicates if an alias entry is
being processed. The processing flags byte is mapped by LCNV_FLAGS_DSECT
in the IEWLCNV macro.
- [,MF={S|L|(E,{(1-12)|RX-type
address}[,COMPLETE|NOCHECK])}]
- first argument — keyword S, L, E or default to S when MF is omitted.
Second
argument, if MF=E — registers 1-12 or RX-type address.
Third
argument, if MF=E — keyword COMPLETE or NOCHECK or default to COMPLETE,
if omitted.
The MF (macro format) keyword specifies how the
macro should generate its code. Invalid keyword checking, based on
function specified, is done for all macro formats.
The standard
format (S) will check all required keywords and invalid keywords.
This form generates a complete in-line expansion of the parameter
list. Control is then transferred to the convert routine. The standard
form is for programs that are not reenterable.
L specifies
the list form of the macro. This form generates a remote parameter
list. Registers are invalid arguments for MF=L format since executable
code generation does not occur, only adcons are generated. Invalid
keyword checking is done.
E specifies the execute form of the
macro. This form updates the remote parameter list (MF=L) and transfers
control to the convert routine. A second parameter is required and
a third parameter is optional.
The second parameter for MF=E
format is the address of the parameter list created by the MF=L IEWLCNVT
invocation. This parameter must be specified as either a RX type of
address (possibly the label from MF=L macro invocation) or a register
enclosed in parentheses.
The third parameter, COMPLETE or NOCHECK,
is optional. Default is COMPLETE. This argument specifies whether
required keyword checking will be done.
If NOCHECK is coded,
then none, some, or all allowable keywords may be specified. It is
assumed that any missing keywords are coded on the MF=L macro invocation.
If some keywords are coded, the FUNC keyword is also required to enable
keyword validation.
If COMPLETE is coded or allowed to default,
the plist will be zeroed out (except for the plist header). All required
keywords must be specified.
- OUTLEN=output_length
- specifies a fullword (4-byte) field to contain the length of the
generated directory data. Variable output_length is
an output parameter on the PMAR_TO_PDSDE and PDSDE_TO_PMAR functions.
OUTLEN must not be specified on MF=L.
- PDS2INDC=pdsde_indicator_byte—RX-type
address or (2-12) (standard form)
- specifies the indicator byte preceding the user data field of
a PDS directory entry. Variable indicator_byte is
an input parameter on the PDSDE_TO_PMAR function and an output parameter
on the PMAR_TO_PDSDE function.
- PMAR=pmar_storage—RX-type address or
(2-12) (standard form)
- specifies an area mapped by the PMAR structure of macro IEWPMAR.
Variable primary_process_sar_data is the
PMAR structure used for input on the PMAR_TO_PDSDE function and output
on the PDSDE_TO_PMAR function.
- PMARA=pmara_storage—RX-type address
or (2-12) (standard form)
- specifies an area mapped by the PMARA structure of macro IEWPMAR.
Variable alias_process_sar_data is the PMARA
structure used as input by the PMAR_TO_PDSDE function.
- PNAME=primary_name—RX-type address or
(2-12) (standard form)
- specifies the area for an eight byte primary name. This is an
input field on the PMAR_TO_PDSDE function and must be passed if the
processing flags indicate that an alias is being processed.
- RETCODE=retcode—RX-type address or (2-12)
or (15)
- specifies the name of the variable where the macro is to store
the return code associated with the result of the function invocation.
Variable return_code is a fullword value
but is optional. If RETCODE is not specified, the return code is in
register 15. The RETCODE parameter can not be specified on an MF=L
invocation.
- RSNCODE=rsncode—RX-type address or (2-12)
or (0)
- specifies the name of the variable where the macro is to store
the reason code associated with the result of the function invocation.
Variable reason_code is a fullword value
but is optional. If RSNCODE is not specified, the return code is in
register 0. The RSNCODE parameter can not be specified on an MF=L
invocation.