MOVE Reference Modification
MOVE Reference Modification
The reference modification is used for a special purpose to move part of data from the sending item to the receiving item. This is mainly useful when dealing with strings, where we might want to handle only a specific part of the data item.
Syntax -
variable (start-position [: length])
Parameters -
- variable - The name of the variable we're working with..
- start-position - The position in the variable where the substring begins. The first character is at position 1.
- length - Specifies the number of bytes from the starting position. If not provided, the substring includes all characters from the start-position to the end.
Notes -
- The sending item can be an alphanumeric elementary item, a group item, or a literal or figurative constant.
- The receiving item should be an alphanumeric elementary item or group item but not a literal or figurative constant.
- MOVE statement can have one or more receiving items.
Practical Example -
Scenario - Formatting full phone number from three different sources.
Code -
----+----1----+----2----+----3----+----4----+----5----+
IDENTIFICATION DIVISION.
PROGRAM-ID. MOVEREF.
AUTHOR. MTH.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-COUNTRY-CODE PIC 9(02) VALUE 91.
01 WS-AREA-CODE PIC 9(03) VALUE 999.
01 WS-PHONE-NBR PIC 9(08) VALUE 87654321.
01 WS-FULL-PHN-NBR PIC 9(13).
PROCEDURE DIVISION.
MOVE WS-COUNTRY-CODE TO WS-FULL-PHN-NBR(1:2).
MOVE WS-AREA-CODE TO WS-FULL-PHN-NBR(3:2).
MOVE WS-PHONE-NBR TO WS-FULL-PHN-NBR(5:8).
DISPLAY 'FULL PHONE NUMBER: ' WS-FULL-PHN-NBR.
STOP RUN.
Output -
FULL PHONE NUMBER: 919987654321
Explaining Example -
In the above example:
- WS-COUNTRY-CODE value moved to first 2 bytes of WS-FULL-PHN-NBR.
- WS-AREA-CODE value moved to 3rd and 4th positions of WS-FULL-PHN-NBR.
- WS-PHONE-NBR value moved to WS-FULL-PHN-NBR from 5th position to 8 bytes.