Use this system macro to read a single non-TPF-type record no longer than
4095 bytes from any cylinder. The control program (CP) obtains a
4095-byte block of storage and the address of the block is placed in the core
block reference word (CBRW).
The FNSPC macro causes virtual file access (VFA) to be searched for the
record. If the record is in VFA, it is forced out of VFA before the
record is read from the specified DASD.
Required Authorizations
|
Key0
| Restricted
| System
| Common Storage
|
| X
|
|
|
Format
Notes:
- data level
- label
- A symbolic name can be assigned to the macro statement.
- datalevel
- Specifies the entry control block (ECB) data level (D0-DF) that will
be used by the service routine.
- DECB=(reg)|label1
- The label or general register (R0-R7) containing the address of the
data event control block (DECB), which contains the file address of the record
that will be read.
- E
- This parameter is required. The file address must be in extended
mode and contained in the extended file address word (FAWX) defined by
datalevel or DECB.
Entry Requirements
- This macro is for use in the control program (CP) only.
- R9 must contain the address of the ECB being processed.
- A block of storage must not be held by the ECB at the specified ECB data
level (CE1CRn) or DECB (IDECDAD) when the macro is issued.
- The file address must be contained in the specified file address reference
word (FARW) (CE1FAn) or DECB (IDECFRW). The record type and record code
check (RCC) are optional.
- When accessing a general data set the appropriate GDS macro must be issued
to set up the file address before using FNSPC.
- The file address must be in the form BBCCHHR and contained
(left-justified) in the FAWX (CE1FXn) for the ECB data level or DECB
(IDECFX0). The bin number (BB) must be zeros. The module number
will be the normal halfword number stored in CE1FMn for the ECB data level or
IDECFMOD for the DECB.
Return Conditions
- Control is returned to the next sequential instruction (NSI).
- The contents of R14 and R15 are unknown. The contents of all other
registers are preserved across this macro call.
- If this macro is called from a program running in 24-bit mode, the
condition code will be saved across this macro call. If the macro is
called from a program running in 31-bit mode, the condition code upon return
from this macro is unknown.
- The contents of the CBRW at the specified ECB data level
(datalevel) or DECB is unknown.
- The FARW at the specified ECB data level or DECB is unchanged.
Programming Considerations
- This macro can be run on any I-stream.
- This macro is the only FIND-type macro available for use on cylinder 0,
head 0.
- The control program (CP) checks to determine that the ECB is not holding a
block of storage at the specified ECB data level or DECB and that the file
address specified is valid. If either condition is violated, control is
transferred to the system error routine.
- This macro places the core block size of 4095 in the CBRW. The byte
count field contains the size of the record actually read. The data
obtained is always placed in a 4095-byte core block.
- To ensure that the operation is completed, a WAITC macro must be issued
before referencing the data that is read. After WAITC macro processing
is completed, the CBRW at the specified ECB data level or DECB contains the
address of the record.
- If this macro is used on a record defined as a VFA synchronization
candidate, the record update will not be synchronized with other
processors. The record will only be flushed from VFA on the processor
from which the macro was issued.
- If the location of the data event control block specified by the DECB
parameter does not refer to a valid DECB, control is transferred to the system
error routine.
Examples
The input to retrieve the SI record type, with a code check of
X'01' and file address of M- 20, C- 02, H- 04, R- 01 follows in this
example.
CE1CR1- ........ ..01.... (no attached block)
CE1FA1- E2C901.. (record type, code check)
CE1FM1- 0014.... (module number-mm)
CE1FX1- 00000002 000401.. (bbcchhr.)
FNSPC D1,E
The input to retrieve the SI record type with a code check of X'01'
and file address of M- 20, C- 02, H- 04, R- 01 for a DECB follows in this
example.
IDECCT0- ........ ..01.... (no attached block)
IDE1RID- E2C901.. (record ID, record code check)
IDECFM0- 0014.... (module number-mm)
IDDECFX0- 00000002 000401.. (bbcchhr.)
FNSPC DECB=(R7),,E