移动4字节字段的最后2个字节?

Dou*_*auf 1 cobol

我需要将四字节字段的两个字节移动到一个两个字节的新字段中.

我想使用的代码:

MOVE C-SERVICE-CYE TO S-CYE.   
Run Code Online (Sandbox Code Playgroud)

我需要一年中的最后两位数字.例如:2014年将是14

数据结构:

02  S-DATE.                            
     10  S-MME   PIC X(02).             
     10  FILLER  PIC X(01) VALUE '/'.   
     10  S-DDE   PIC X(02).             
     10  FILLER  PIC X(01) VALUE '/'.   
     10  S-CYE   PIC X(02).             
Run Code Online (Sandbox Code Playgroud)

第二数据结构:

02  C-SERVICE-DATE-E.             
    10  C-SERVICE-CYE   PIC X(04).
    10  C-SERVICE-MME   PIC X(02).
    10  C-SERVICE-DDE   PIC X(02).
Run Code Online (Sandbox Code Playgroud)

Nea*_*alB 5

有两种相当直接的方法可以做到这一点.

一个是细分源变量声明:

02  C-SERVICE-DATE-E.             
    10  C-SERVICE-CYE.
        15 C-SERVICE-CYE-CC PIC X(02).
        15 C-SERVICE-CYE-YY PIC X(02).
    10  C-SERVICE-MME   PIC X(02).
    10  C-SERVICE-DDE   PIC X(02).
Run Code Online (Sandbox Code Playgroud)

然后将MOVE语句修改为: MOVE C-SERVICE-CYE-YY TO S-CYE

另一种方法是使用参考修改: MOVE C-SERVICE-CYE (3:2) TO S-CYE

这一切都有效,因为您在这里引用的数据项是DISPLAY类型.如果他们是数字(例如COMP事物),这种技术将不起作用.