使用基于地址的寻址与 COBOL

COBOL 提供了一种简单方法,通过指针变量和ADDRESS特殊寄存器,获取链接段中定义的 CICS® 数据区域的寻址能力。

当数据位于 CICS 内部区域中时, CICS 应用程序需要动态访问数据,并且仅将地址传递给程序。 示例包括:
  • 使用 ADDRESS 命令访问的 CICS 区域,例如 CWA , TWA 和 TCTTE 用户区域 (TCTUA)。
  • 输入数据,由 EXEC CICS 命令 (例如,带有 SET 选项的 READ 和 RECEIVE) 获取。

ADDRESS 专用寄存器保存在级别为 01 或 77 的链路部分中定义的记录的地址。 此寄存器可以在 ADDRESS 方式下的任何命令的 SET 选项中使用。 这些命令包括 GETMAIN , LOAD , READ 和 READQ。

图1 展示了 COBOL 中ADDRESS特殊寄存器的使用情况。 如果 READ 或 REWRITE 命令中的记录具有固定长度,那么不需要 LENGTH 选项。 此示例假定使用可变长度记录。 读取后,可从LENGTH选项中指定的字段(此处为 LRECL-REC1 )获取记录长度。 在 REWRITE 命令中,如果要将更新的记录替换为不同长度的记录,那么必须对 LENGTH 选项进行编码。
图 1。 以定位方式寻址 CICS 数据区
WORKING-STORAGE SECTION.
77 LRECL-REC1 PIC S9(4) COMP.
LINKAGE SECTION.
01 REC-1.
02 FLAG1 PIC X.
02 MAIN-DATA PIC X(5000).
02 OPTL-DATA PIC X(1000).
01 REC-2.
02 ...
PROCEDURE DIVISION.
EXEC CICS READ UPDATE...
SET(ADDRESS OF REC-1)
LENGTH(LRECL-REC1)
END-EXEC.
IF FLAG1 EQUAL X'Y'
MOVE OPTL-DATA TO ...

EXEC CICS REWRITE...
FROM(REC-1)
END-EXEC.