COBOL Linkage Section
来源:互联网 发布:阿里云ddos防护 编辑:程序博客网 时间:2024/06/05 02:51
Brief introduction of variables defined in Linkage Section
Linkage Section Variable Limitations
- Only 01 and 77 level variable is defined in Linkage-Section.
- All 01 and 77 level variable are allocated a pointer size space.
- Only 01 and 77 level variables are allocated
- Linkage Section variable must be initialize through:
- caller
- SET ADDRESS OF LS-VARIABLE TO somewhere
- Uninitialized Linkage Section variable is null value.
Although Linkage Section variable's definition is something like a pointer, but its usage is not that, for exampe:
To set a pointer variable:
SET POINTER-VAR TO ANOTHER-POINTER-VARIABLESET POINTER-VAR TO ADDRESS OF NONPOINTER-VARIABLE
To set a Linkage Section variable:
SET ADDRESS OF LINKAGE-SECTION-VAR TO ANOTHER-POINTER-VARIABLESET ADDRESS OF LINKAGE-SECTION-VAR TO ADDRESS OF NONPOINTER-VARIABLE
After Linkage Section variable is set, it then work like a Working-Storage Section variable.
Code Sample
$set sourceformat(free) IDENTIFICATION DIVISION. PROGRAM-ID. SUBPROG. ENVIRONMENT DIVISION. CONFIGURATION SECTION. SOURCE-COMPUTER. RM-COBOL. OBJECT-COMPUTER. RM-COBOL. DATA DIVISION. FILE SECTION. WORKING-STORAGE SECTION. 01 POINTERS-AND-OTHER-STUFF. 05 SILLY-POINTER USAGE IS POINTER. 05 SILLY-VALUE REDEFINES SILLY-POINTER PIC S9(8) COMP. 01 POINTERS-AND-OTHER-STUFF2 PIC S9(8) COMP. LINKAGE SECTION. 01 RECORD-1. 05 FIELD-1 PIC X(10). 05 FIELD-2 PIC X(10). 01 RECORD-2. 05 FIELD-3 PIC X(05). PROCEDURE DIVISION USING RECORD-1. MAIN-LOGIC SECTION. BEGIN. SET SILLY-POINTER TO ADDRESS OF RECORD-1. DISPLAY "SUB: RECORD-1= [S:" RECORD-1 "]". DISPLAY "SUB: ADDRESS OF RECORD-1= [" ADDRESS OF RECORD-1 "]". DISPLAY "SUB: SILLY-POINTER= [" SILLY-POINTER "]". DISPLAY "SUB: ADDRESS OF SILLY-POINTER=[" ADDRESS OF SILLY-POINTER "]". SET ADDRESS OF RECORD-2 TO ADDRESS OF RECORD-1. DISPLAY "SUB: ADDRESS OF RECORD-2= [" ADDRESS OF RECORD-2 "]". SET ADDRESS OF RECORD-2 TO SILLY-POINTER. DISPLAY "SUB: ADDRESS OF RECORD-2= [" ADDRESS OF RECORD-2 "]". MAIN-LOGIC-EXIT. EXIT.
Execute Result
SUB: RECORD-1= [S:12345678ABCDEFGH]SUB: ADDRESS OF RECORD-1= [0x00000000018AF8E0]SUB: SILLY-POINTER= [0x00000000018AF8E0]SUB: ADDRESS OF SILLY-POINTER=[0x00000000018B06E0]SUB: ADDRESS OF RECORD-2= [0x00000000018AF8E0]SUB: ADDRESS OF RECORD-2= [0x00000000018AF8E0]
ANY LENGTH variable in Linkage Section
The ANY LENGTH clause must be specified only in an elementary level 01 entry in the Linkage Section to specifies that the length of an item may vary at runtime and is determined by the length of the argument.
$set sourceformat(free) IDENTIFICATION DIVISION. PROGRAM-ID. SHENHUI. ENVIRONMENT DIVISION. CONFIGURATION SECTION. SOURCE-COMPUTER. RM-COBOL. OBJECT-COMPUTER. RM-COBOL. DATA DIVISION. FILE SECTION. WORKING-STORAGE SECTION. 01 STRING-VARIABLE. 03 STRING-VARIABLE-FLD1 PIC X(4). 03 STRING-VARIABLE-FLD2 PIC X(4). 01 STRING-LENGTH PIC 9(4) COMP. LINKAGE SECTION. 01 ANY-STRING-VAR PIC X ANY LENGTH. PROCEDURE DIVISION. MAIN-LOGIC SECTION. BEGIN. MOVE "ABCD" TO STRING-VARIABLE-FLD1. MOVE "1234" TO STRING-VARIABLE-FLD2. SET ADDRESS OF ANY-STRING-VAR TO ADDRESS OF STRING-VARIABLE. MOVE 8 TO STRING-LENGTH. DISPLAY "ANY-STRING-VAR=[" ANY-STRING-VAR(1:STRING-LENGTH) "]". STOP RUN. MAIN-LOGIC-EXIT. EXIT.
Execution Result
ANY-STRING-VAR=[ABCD1234]
0 0
- COBOL Linkage Section
- cobol
- cobol
- COBOL
- COBOL
- cobol `
- Cobol
- cobol学习笔记(4)COBOL的程序结构 INPUT-OUTPUT SECTION2010/06/30 16:45INPUT-OUTPUT SECTION(输入输出节)
- internal linkage, external linkage , non linkage
- Linkage Types
- Linkage conventions
- Record linkage
- Internal Linkage和External Linkage
- section
- Section()
- External Linkage V.S Internal Linkage
- linkage service服务
- “separate compilation” & “Linkage”
- d3.js学习3----选择、插入、删除元素
- 中文转成Unicode编码
- dva JS
- Linux格式化硬盘
- swift可以写后台
- COBOL Linkage Section
- Base64
- JAVA Web Servlet中的异步处理 (1) -- Servlet3.0中的Async支持
- Codeforce 731A. Night at the Museum
- Qt视频播放器
- 当你在浏览器中输入Google.com并且按下回车之后发生了什么?
- COBOL Pointer variable
- 策略模式(Strategy Pattern)
- 用C++11的std::async代替线程的创建