This general macro creates an independent entry control block (ECB) for
deferred processing by the requested program. The ECB is created on the
same I-stream, in the same subsystem, and subsystem user as the creating
ECB.
A variable number of bytes (0-104) is passed to the created ECB work
area. The control program moves the data into an interim block of
available storage and adds this block to the deferred processing list.
Operational Program Zero will initialize an ECB with the data in the work
area, release the interim block, and execute an Enter with No Return (ENTNC)
to the specified program.
CREXC is a specialized macro very similar to the CREDC Macro. The
difference is that CREXC requires that a larger number of storage blocks be
available to allow execution. It is recommended that the CREXC macro be
used by programs that create many entries. This will ensure normal
system operation without impairment, which could be caused by a depletion of
storage blocks.
Format
- label
- A symbolic name can be assigned to the macro statement.
- prog
- The name of the program that is to be activated with the created
ECB. This method generates a V-CON which is resolved at link edit time
into a Program Allocation Table (PAT) displacement. This is the
preferred method for specifying the program name.
- PROGRAM
- The name of the program can alternately be provided using the PROGRAM
parameter. This method generates constant data which will be used at
execution time to determine the PAT displacement. This method has a
slightly longer path length than the positional parameter method.
- prog
- The name of the program that is to be activated with the created
ECB.
- (Rx)
- A register (R0-R7) that contains the address of the program name.
Entry Requirements
- R9 must contain the address of the ECB being processed.
- R14 must contain the number of bytes of parameters to be passed to the
created ECB work area.
- R15 must contain the address of the start of the parameters which are to
be passed.
Return Conditions
- Control is returned to the next sequential instruction (NSI).
- The contents of R14 and R15 are unknown. The remaining operational
program registers are saved during the execution of the CREXC macro.
Programming Considerations
- This macro can be executed on any I-stream.
- The ECB reference register (R9) must contain the address of the ECB
issuing the CREXC macro.
- No linkage is provided between the created ECB and the active program
segment using this macro.
- There may be up to 104 bytes of data passed to the created ECB's work
area.
- The CREXC macro should be used only by utility-type programs running in
the system. The reason for this is that when a large number of system
entries are being created, the system efficiency can be lowered through
depletion of storage blocks. The CREXC macro functions like a CREDC
except that it ensures a greater number of blocks available for real-time
operations within the system.
- The ECB issuing the CREXC macro may be forced into a WAITC if there is
insufficient storage available to buffer the parameters. When adequate
storage is available, the CREXC macro is executed and control is returned to
the next sequential instruction (NSI).
- The use of this macro should be monitored in order to prevent a depletion
of storage.
- The program to be activated must have been allocated via the system
allocator (refer to TPF System Installation Support
Reference).
- When activated, the specified program receives control in it's
allocated addressing mode. The condition code and the contents of
registers R0-R7, R14, and R15 are unpredictable.
- In addition to the normal macro trace information the macro trace for this
macro contains the name of the macro being returned to.
Examples
CREXC PROGRAM=MINE
This call to CREXC activates the MINE program.