FREEMAIN64

使用 GETMAIN 或 GETMAIN64 请求获取的释放存储器。 此命令仅供在非语言环境 (LE) AMODE(64) 汇编语言应用程序中使用。

FREEMAIN64

读取语法图跳过可视语法图FREEMAIN64DATA( data-area64)DATAPOINTER( ptr-value64)

条件: INVREQ

此命令是线程安全的。

描述

FREEMAIN64 释放以下存储器:
  • 由应用程序发出的 GETMAIN 或 GETMAIN64 命令获取的主存储器。
  • LOAD 命令为使用 RELOAD=YES 定义的程序,映射或表获取的主存储器。
如果获取存储器或装入程序的任务未释放存储器,那么 CICS ® 将在任务结束时释放存储器,以下情况除外:
  • 指定了 GETMAIN 或 GETMAIN64 命令 SHARED 选项。 在另一任务发出 FREEMAIN 或 FREEMAIN64 请求以释放存储器之前,该存储器将保持已分配状态。
  • 该程序是使用 RELOAD=YES 定义的。 在另一任务发出 FREEMAIN 或 FREEMAIN64 请求以释放存储器之前,该存储器将保持已分配状态。
  • 该程序是使用 RELOAD=NO 定义的,但是使用 HOLD 选项装入的。 该程序将保持可用状态,直到另一个任务将其释放为止。
注: 在列出的前两种情况中,使用 FREEMAIN64 可能会创建会对动态事务路由的使用产生负面影响的事务间亲缘关系。 有关事务亲缘关系的更多信息,请参阅 亲缘关系

仅当程序在 CICS 键中执行时,才能从该程序释放 CICS 键存储器。 如果存储器是从 CICS 键存储器获取的,并且发出 FREEMAIN64 请求的程序是在用户键中,那么会出现 INVREQ 条件,并且 RESP2 值为 2。

选项

数据 (data-area64)
指定要释放的主存储器的数据区。

在汇编语言中, data-area64 必须是作为数据引用的可重定位表达式。

释放的存储长度是原始请求获取的长度,而不一定是数据区的长度。

DATAPOINTER (ptr-value64)
指定要释放的主存储器的地址,作为 64 位指针引用。 此存储器可以是先前 GETMAIN 或 GETMAIN64 请求获取的存储器。 例如,可以指定对 31 位存储器区域的 64 位指针引用。

释放的存储长度是原始请求获取的长度。

条件

16 INVREQ
RESP2 值:
1
DATA 或 DATAPOINTER 参数指定的存储器不是 GETMAIN 或 GETMAIN64 命令获取的存储器。
2
DATA 或 DATAPOINTER 参数指定的存储区在 CICS 键存储器中,发出 FREEMAIN64 命令的程序在用户键中。

示例 :Assembler

以下示例使用 DATA 选项来释放存储器。
WORKAREA   DS   CL100
  .
  .
           EXEC CICS GETMAIN64 SET(9) FLENGTH(1048576)
           USING  WORKAREA,9
           EXEC CICS FREEMAIN64 DATA(WORKAREA)
以下示例使用 DATAPOINTER 选项来释放存储器。
WORKAREA  DS   CL100
  .
          EXEC CICS GETMAIN SET(9) LENGTH(100)
          USING  WORKAREA,9
  .
  .
          DROP   9
  .
          EXEC CICS FREEMAIN64 DATAPOINTER(9)