This general macro writes a record to a file from storage and releases it
from the exclusive control of the entry control block (ECB). The block
of storage referred to at the specified ECB data level or data event control
block (DECB) is removed from the ECB. The control program writes the
record on the primary copy and the duplicate copy if one exists. This
macro can be used to file a record that resides in either a virtual file
access (VFA) or on an external device, depending on the system
configuration. (See virtual file access information in TPF Database Reference for details of how FILUC processes
a VFA record.)
The file address contained in the specified file address reference word
(FARW) is released. Sometimes in TPF documentation the word unhold is
used to mean released.
Format
- label
- A symbolic name can be assigned to the macro statement.
- datalevel
- An ECB data level (D0-DF) that identifies the file address and core
block information for the I/O request.
- DECB=(reg)|label1
- The label or general register (R0-R7) containing the address of the
DECB, which specifies the file address and core block information for the I/O
request.
- TAG
- Specify one of the following:
- Y
- The name of the segment that issued the FILUC is put into the storage
block to be filed.
- N
- This field is not set.
The default is Y.
- GDS
- Specify one of the following:
- N
- The file address in the specified ECB data level or DECB is for a record
from the online database. N is the default.
- Y
- The file address in the specified ECB data level or DECB is for a record
on either a general file or a general data set.
Entry Requirements
- R9 must contain the address of the ECB being processed.
- A block of storage must be held by the ECB at the specified ECB data level
(datalevel) or DECB.
- A file address that is being held now, the record ID, and the record code
check (RCC) must be contained in the file address reference word (FARW) for
the specified ECB data level (datalevel) or DECB.
- The GDSRC macro must be executed to set up the file address before FILUC
is used to access a general data set record.
Return Conditions
- Control is returned to the next sequential instruction.
- 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 specified core block reference word (CBRW) is initialized to indicate
that a block of storage is no longer held.
- The FARW at the specified ECB data level (datalevel) or DECB is
unchanged.
- The file address contained in the specified FARW has been unheld.
If another request was waiting to hold the same record, it has been
serviced.
- The program identification was placed in the header of the record unless
TAG=N was specified.
Programming Considerations
- This macro can be run on any I-stream.
- A check is made by the control program to determine if the ECB is holding
a block of storage at the specified ECB data level or DECB and if the file
address contained at the specified ECB data level or DECB is valid and is
presently being held by this ECB. In addition, the record ID type at
the specified ECB data level or DECB is checked with the record ID in the
record. If any condition is violated, control is transferred to the
system error routine. When the RCC at the specified ECB data level or
DECB is zero, the control program ignores verification of the RCC. If
the RCC is nonzero, the control program verifies that the code at the
specified ECB data level or DECB is the same as the code in the header of the
record. If the codes are not equal, control is transferred to the
system error routine.
- The block of storage containing the data to be stored is no longer
available to the operational program.
- The status of the operation can never be determined by the operational
program.
- The operational program can use the specified CBRW immediately upon return
from the control program.
- If FILUC is issued from a utility program, specifying TAG=N prevents the
utility program name from being inserted in the storage block for
filing. This allows the segment name performing the data manipulation
to be inserted before the call to the utility routine is made, FILUC is
issued, and the name is filed with the data.
- You cannot call the FILUC macro on a record that is part of the suspended
commit scope for an ECB. The following sequence will cause a system
error:
- TXBGC
- FILEC record x
- TXSPC
- FILUC record x.
- TPF transaction services processing affects FILUC macro processing in the
following ways:
- The FILUC actions that are controlled by the record ID attribute table
(RIAT) indicators are set at FILUC time (when the record is filed and unheld),
but do not take place until the record has been committed.
- Hardening (that is, writing) to the DASD surface will occur only at commit
time.
- FILUC macro changes are discarded and hardening does not occur after a
TXRBC macro is issued. The DASD surface remains unchanged.
- If a system error occurs because of one of the previous considerations,
processing ends as if a TXRBC macro was called.
- The file address appears to be unheld from the program point of view on
return from the FILUC macro. For requests that come from outside of the
commit scope, the file address still appears to be held. When the
commit request is completed successfully, the file address is unheld and any
waiting requests are serviced.
- Files to general files or general data sets are not considered part of the
commit scope and are not affected by commit scope processing.
- 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
None.