white shadow, ponder upon the difference between a variable (COBOL terminology) and a string (Java / C / .Net terminology). The length of a string can be 0, 1, 2, ... bytes depending upon where the terminating null (AKA LOW-VALUES in COBOL) occurs. This is not the case in COBOL.
A COBOL variable defined as PIC X(60) will always contain sixty bytes -- not 59, not 1 -- 60 no more and no less. The only exception is an OCCURS DEPENDING ON (ODO) in a LINKAGE SECTION or FILE SECTION where the actual number of bytes for the variable will be whatever is in the ODO variable. A WORKING-STORAGE section ODO always reserves the maximum number of bytes, although accessing the bytes between the current ODO number and the maximum is not recommended.
Furthermore, reference modification allows for moving to the length of the variable. This is valid COBOL:
MOVE WS-VAR2 ( 2 : ) TO WS-VAR3.