Using the DGA#FXAL REXX Exec
After updating a target library type, you can use the DGA#FXAL REXX exec to check the target library to ensure the members are all present and all aliases are assigned correctly, and to report on any extra members or aliases that are not in the list for that type. The default setting simply checks the PDS members against the list and reports on what is found. In addition, DGA#FXAL can fix or delete broken aliases. This exec uses the TSO DELETE and RENAME commands, which require exclusive control of the PDS. Any errors that cannot be fixed automatically by DGA#FXAL must be fixed manually by restoring the PDS from a backup or distribution library. These errors include deleted members, non-alias members that are supposed to be aliases, and aliases that are supposed to be non-alias members.
Syntax and Parameters
The DGA#FXAL REXX exec has the following format:
|
The DGA#FXAL REXX exec has the following parameters. The pds parameter is required and must be first. All parameters after the pds parameter are optional and positional, and can take the default by specifying a "." placeholder.
Parameter | Description |
---|---|
pds | A fully qualified DSN with or without quotation marks. A partitioned IBM® Connect:Direct® dataset of one of the supported types. A value of '?' requests that the syntax be displayed. The syntax is also displayed if there are any parameter errors. |
type | The pds type. Either specify one of the target library types listed or do not specify. If not specified, the lowest level qualifier of the PDS must be one of the listed target library types. For each type, you can specify either the new or old value – they produce the same result. |
detaillevel | Controls detail reporting. The default is 1. The following values are valid for this parameter:
|
fixlevel | Controls what fixes are attempted. Only levels
2–8 errors can be fixed. Default is 0. Valid values are 0, 2–8, and
combinations of 2–8. The default is 0. The following values are valid for this parameter:
|
For each pair or solo member listed for the type, an error level is set. See Error Level Explanation. If the error level is specified in fixlevel and the fix action in the table is not None, the pair is added to a fix list. After all pairs have been checked, if the fix list is not empty, you are prompted to continue. If you reply "Y," the fixes are attempted. If the fix for any pair fails, the exec continues with the next pair. A report is generated and written to both the TSO screen and to a PS dataset. The detail listings of expected and unexpected members are controlled by detaillevel. All fix attempts are reported.
Examples
- In this example, IBM Connect:Direct uses
list for type SDGAPROC (PROCESS), reports everything, and fixes all
that can be fixed.
%DGA#FXAL DGA.SDGAPROC . 0 2345678
- In this example, IBM Connect:Direct uses
list for type SDGAOPLS (OPLIST); and as a result of using all defaults,
reports only errors and fixes nothing.
%DGA#FXAL ‘DGA.SDGAOPLS'
- In this example,Connect:Direct again
uses list for type SDGAOPLS (OPLIST) and all defaults. But in this
scenario, the pds dsn still has the legacy low-level qualifier.
%DGA#FXAL SYS5.CD.OPLIST
- This example is the same as
the previous two examples but the
pds dsn has an unsupported low level qualifier. The following example
shows three different ways of coding this scenario.
%DGA#FXAL SYS5.CD.OPERLIST OPLIST or %DGA#FXAL SYS5.CD.OPERLIST SDGAOPLS or Exec ‘DGA.SDGAISPC(DGA#FXAL)' ‘ SYS5.CD.OPERLIST SDGAOPLS'
Sample Reports
- The first report shows an example of how DGA#FXAL REXX is used to show Connect:Direct errors without fixing anything.
- The second report shows how DGA#FXAL REXX is used with Connect:Direct to report everything in SYS5.CD.SDGAMAP and to fix all errors that can be fixed automatically.
The reports are broken into chunks to make them easier to read, and explanations of the reports follow the report samples.
Example–Show Errors But Do Not Fix Anything
|
|
Example–Report Everything and Fix All Fixable Errors
|
|
|
Report Explanation
The DGA#FXAL report contains the following information.
Line Number / Field / Report Section | Description |
---|---|
Line 1 | The release level and maintenance level of DGA#FXAL, as well as the current date and time. |
Line 2 | The TSO command the user entered to invoke DGA#FXAL. |
Line 3 | The REXX exec source dataset and the ALTLIB DISPLAY line for the DGA#FXAL invocation. |
Line 4 | The DSN of the report dataset. |
Utility Parameter Options | Taken either from the DGA#FXAL parameters or the defaults. |
Total Counts per PDS Type | The total counts for each
of the four types
of members in the PDS, where:
|
Detail Report - Expected Members | This report is generated if at least one entry
passes detaillevel filtering. For each entry in the DGA#FXAL exec
list for the pds type, the actual status of the one or two member
names is determined, and an error level is set based on the results.
The error level is compared to detaillevel, and if it is greater than
or equal to it, the detail line is written. For each detail line,
the following information is provided:
The total number of Expected Member detail lines with Yes in the Fix Req column. |
Detail Report - Unexpected Members | This report
is generated if at least one member
exists in the pds that is not in the DGA#FXAL list for the pds type.
An error level is set based on what kind of pds member it is. For
each detail line, the following information is provided:
|
Summary Report | This report is always generated. For each
possible error level, the following information is provided:
|
Attempt to Fix section | If there are any fixable errors, the attempt-to-fix prompt and the user's response are given. |
Fix Report | If the
response was ‘Y', the Fix report
is generated, starting with lines giving the number of fixes requested,
successful, and failed, followed by one fix detail line for each fix
attempted. Each detail line provides the following information:
|
Utility execution status | Indicates if the DGA#FXAL ended normally or provides an error message indicating where the utility had a problem in execution, for example, DGA#FXAL ending - cannot ALLOC &pds with DISP=OLD where the prefix '&' denotes a variable, which will be substituted in the actual message. |
Error Level Explanation
- SOL–The member name in a list entry that has only one member name
- TRU–The 1st member name in a list entry that has two member names
- ALI–The 2nd member name in a list entry that has two member names
- Solo–A member in pds that has no alias
- TrueName–A member in pds that has one or more aliases
- Alias–A member in pds that is an alias of a TrueName
- Orphan–A member in pds that once was an Alias, but its TrueName no longer exists
- Not in PDS–The member was not found in PDS
Error Level | Description |
---|---|
0 | TRU and ALI or SOL are correct. For a list entry with TRU and ALI, TRU is a TrueName and ALI is its Alias in pds. For a list entry with SOL, SOL is a non-alias member of pds. No fix is needed. |
1 | TRU and ALI or SOL are not in PDS. For a list entry with TRU and ALI, neither one was found in pds. For a list entry with SOL, SOL was not found in pds. No automatic fix is possible. |
2 | TRU is a TrueName or Solo; ALI is not in PDS. For a list entry with TRU and ALI, TRU was found in pds, and it may have one or more aliases, but ALI is not in pds. The fix is to assign ALI as an alias of TRU. |
3 | TRU is a TrueName or Solo; ALI is an orphan. For a list entry with TRU and ALI, TRU and ALI were both found in pds, but though TRU may have one or more aliases, ALI is not one of them. ALI is an alias of a member that no longer exists. The fix is to delete ALI, then re-assign it as an alias of TRU. |
4 | TRU is a TrueName or Solo; ALI is alien alias. For a list entry with TRU and ALI, TRU and ALI were both found in pds, but though TRU may have one or more aliases, ALI is not one of them. ALI is an alias of another (i.e. an alien) TrueName. To find out what that alien TrueName is, invoke the TSO command “LISTDS pds MEM” and look for ALI in each alias list. The fix is to delete ALI, then re-assign it as an alias of TRU. |
5 | TRU and ALI are TrueNames
or Solos.
For a list entry with TRU and ALI, TRU and ALI were both found in
pds. TRU may have one or more aliases, but ALI is not one of them.
ALI is a Solo or TrueName member. The fix is to delete ALI, then re-assign
it as an alias of TRU. Note: if ALI has any aliases, they will be orphaned.
|
6 | TRU is not in PDS; ALI is an orphan. For a list entry with TRU and ALI, TRU was not found in pds. ALI is an alias of a member that no longer exists. The fix action is to delete ALI, though that only cleans up the orphan alias. Automatic recovery of the member is not possible. |
7 | TRU is not in PDS; ALI is an alias. For a list entry with TRU and ALI, TRU was not found in pds. ALI is an alias of another TrueName. The fix action is to delete ALI, though that only cleans up the alias. Automatic recovery of the member is not possible. |
8 | TRU is not in PDS; ALI is a TrueName
or Solo. For a list entry with TRU and ALI, TRU was not found in pds.
ALI is a Solo or TrueName member. The fix is to delete ALI, though
that only cleans up the incorrect Solo or TrueName member. Note: if
ALI has any aliases, they will be orphaned.
Automatic recovery
of the member is not possible. |
9 | TRU is an alias of TrueName ALI. For a list entry with TRU and ALI, TRU and ALI were both found in pds. ALI should be the alias and TRU should be the TrueName but, instead, their relationship is reversed. No automatic fix is supported. |
10 | TRU is an alias; ALI is not in PDS. For a list entry with TRU and ALI, TRU is an alias instead of a TrueName, and ALI was not found. No automatic fix is supported. |
11 | TRU is an alias; ALI is a TrueName or Solo. For a list entry with TRU and ALI, TRU is an alias instead of a TrueName, and ALI is a TrueName or Solo, instead of an alias of TRU. TRU is not an alias of ALI. No automatic fix is supported. |
12 | TRU and ALI are aliases of the same TrueName. For a list entry with TRU and ALI, TRU is an alias instead of a TrueName, and ALI is an alias of the same TrueName as TRU. No automatic fix is supported. |
13 | TRU and ALI are aliases of different TrueNames. For a list entry with TRU and ALI, TRU is an alias instead of a TrueName, and ALI is an alias of a different TrueName. No automatic fix is supported. |
14 | TRU is an alias; ALI is an orphan. For a list entry with TRU and ALI, TRU is an alias instead of a TrueName, and ALI is an alias of a member that no longer exists. No automatic fix is supported. |
15 | TRU is an orphan; ALI is not in PDS. For a list entry with TRU and ALI, TRU is an alias of a member that no longer exists instead of a TrueName, and ALI was not found in pds. No automatic fix is supported. |
16 | TRU is an orphan; ALI is a TrueName or Solo. For a list entry with TRU and ALI, TRU is an alias of a member that no longer exists instead of a TrueName, and ALI is a member with zero or more aliases instead of an alias of TRU. No automatic fix is supported. |
17 | TRU is an orphan; ALI is an alias. For a list entry with TRU and ALI, TRU is an alias of a member that no longer exists instead of a TrueName, and ALI is an alias of another TrueName instead of an alias of TRU. No automatic fix is supported. |
18 | TRU and ALI are orphans of the same TrueName. For a list entry with TRU and ALI, TRU and ALI are aliases of a single member that no longer exists instead of a TrueName. No automatic fix is possible. |
19 | TRU and ALI are orphans of different TrueNames. For a list entry with TRU and ALI, TRU is an alias of a member that no longer exists and ALI is an alias of a different member that no longer exists. No automatic fix is supported. |
20 | TRU is an alias; ALI is not expected. For a list entry with TRU only, TRU is an alias instead of a TrueName. No automatic fix is supported. |
21 | TRU is an orphan; ALI is not expected. For a list entry with TRU only, TRU is an alias of a member that no longer exists instead of a TrueName. No automatic fix is supported. |
22 | Unexpected member found - Solo. A Solo member was found in pds that does not appear in any list entry. No automatic fix is supported. This may or may not be an error. |
23 | Unexpected member found - TrueName. A TrueName member was found in pds that does not appear in any list entry. No automatic fix is supported. This may or may not be an error. |
24 | Unexpected member found - Alias. An alias was found in pds that does not appear in any list entry. No automatic fix is supported. This may or may not be an error. |
25 | Unexpected member found - Orphan. An alias of a member that no longer exists was found in pds that does not appear in any list entry. No automatic fix is supported. |