Reference modifiers
Reference modifiers let you easily refer to a substring of a data item.
For example, assume that you want
to retrieve the current time
from the system and display its value in an expanded format. You can
retrieve the current time with the ACCEPT
statement,
which returns the hours, minutes, seconds, and hundredths of seconds
in this format:
HHMMSSss
However, you might prefer to view the current time in this format:
HH:MM:SS
Without reference modifiers, you would have to define data items for both formats. You would also have to write code to convert from one format to the other.
With reference modifiers, you do not
need to provide names for
the subfields that describe the TIME
elements. The
only data definition you need is for the time as returned by the system.
For example:
01 REFMOD-TIME-ITEM PIC X(8).
The following code retrieves and expands the time value:
ACCEPT REFMOD-TIME-ITEM FROM TIME.
DISPLAY "CURRENT TIME IS: "
* Retrieve the portion of the time value that corresponds to
* the number of hours:
REFMOD-TIME-ITEM (1:2)
":"
* Retrieve the portion of the time value that corresponds to
* the number of minutes:
REFMOD-TIME-ITEM (3:2)
":"
* Retrieve the portion of the time value that corresponds to
* the number of seconds:
REFMOD-TIME-ITEM (5:2)
Example: arithmetic expressions as reference modifiers
Example: intrinsic functions as reference modifiers
Assigning input from a screen or file (ACCEPT)
Referring to substrings of data items
Using national data (Unicode) in COBOL