C$CARG returns information about the actual parameter that corresponds to a formal parameter in the USING phrase in the Procedure
Division header of a subprogram. This information identifies the type and length of the argument and, when the argument is
numeric or numeric edited, the number of digits and scale factor for the argument.
Note: The
-Cr compiler option is required for COMPUTATION/COMP usage data items to have the expected type (otherwise they are binary) and
also to have a non-integer GIVING/RETURNING item.
Usage
CALL "C$CARG" USING OKAY, ARGUMENT-NAME,
ARGUMENT-DESCRIPTION
Parameters
- OKAY (PIC X)
- A one-character alphanumeric data item into which the ASCII character Y is stored if C$CARG successfully identifies the argument
named by argument-name; otherwise, the ASCII character N is stored in the data item.
- ARGUMENT-NAME (PIC X(N))
- The name of a Linkage Section data item named in the Procedure Division header USING list.
- ARGUMENT-DESCRIPTION
- A ten-character group data item into which the desired information about the argument specified by argument-name is stored.
A typical data description for argument-description is as follows:
01 ARGUMENT-DESCRIPTION.
02 ARGUMENT-TYPE PIC 9(2) BINARY(2).
02 ARGUMENT-LENGTH PIC 9(8) BINARY(4).
02 ARGUMENT-DIGIT-COUNT PIC 9(2) BINARY(2).
02 ARGUMENT-SCALE PIC S9(2) BINARY(2).
The argument-description group item will have the correct length only if ARGUMENT-TYPE, ARGUMENT-DIGIT-COUNT, and ARGUMENT-SCALE
are allocated as two-byte binary and ARGUMENT-LENGTH is allocated as four-byte binary.
The fields in ARGUMENT-DESCRIPTION have the following meanings:
- ARGUMENT-TYPE
- returns a number indicating the type of the argument data item. The values and meanings for data type numbers returned in
this field are as follows:
| Type Number
|
Data Type
|
Type Number
|
Data Type
|
| 0
|
Numeric edited
|
16
|
Alphanumeric
|
| 1
|
Unsigned numeric DISPLAY
|
17
|
Alphanumeric (justified right)
|
| 2
|
Signed numeric DISPLAY separate
|
18
|
Alphabetic
|
| 3
|
Signed numeric DISPLAY
|
19
|
Alphabetic (justified right)
|
| 4
|
Signed numeric DISPLAY separate
|
20
|
Alphanumeric edited
|
| 5
|
Signed numeric DISPLAY
|
21
|
Alphabetic string edited
|
| 6
|
Signed numeric COMP with -Cr compiler option
|
22
|
Group (fixed length)
|
| 7
|
Unsigned numeric COMP with -Cr compiler option
|
23
|
Group (variable length)
|
| 8
|
Unsigned numeric PACKED-DECIMAL
|
26
|
Signed numeric COMP-5
|
| 9
|
Signed numeric PACKED-DECIMAL
|
27
|
Unsigned numeric COMP-5
|
| 10
|
Unsigned numeric COMP-6
|
32
|
OMITTED
|
| 11
|
Signed numeric BINARY
|
|
|
| 12
|
Unsigned numeric BINARY
|
|
|
- ARGUMENT-LENGTH
- Returns the number of character positions occupied by the argument data item.
- ARGUMENT-DIGIT-COUNT
- Returns the number of digits defined in the PICTURE character-string for an argument that is a numeric or numeric edited data
item as indicated by the ARGUMENT-TYPE field value; otherwise, the value zero is returned for nonnumeric data items. The digit
count for a numeric or numeric edited data item does not include any positions defined by the PICTURE symbol P, which represents
a scaling position.
- ARGUMENT-SCALE
- Returns the power of 10 scale factor (that is, the position of the implied or actual decimal point) for an argument that is
a numeric or numeric edited data item as indicated by the ARGUMENT-TYPE field value; otherwise, the value zero is returned
for nonnumeric data items. If the PICTURE symbol P was used in the description of the data item, the absolute value of the
ARGUMENT-SCALE value will exceed the ARGUMENT-DIGIT-COUNT value; in this case, a positive scale value indicates an integer
with P scaling positions on the right of the PICTURE character-string and a negative scale value indicates a fraction with
P scaling positions on the left of the PICTURE character-string.
Comments
If a calling program passes a called program two or more arguments that begin at the same location (either through redefinition,
with reference modification, or because one is a group that contains the other), when the called program asks C$CARG for the
parameter descriptions, it always receives that of the first actual argument passed that has the same location, regardless
of the name specified in argument-name. In such cases, the C$DARG subprogram may be used to obtain the distinct descriptions
by using
argument-number.