ACQUIRE_PROGRAM 调用

ACQUIRE_PROGRAM 将返回入口和装入点地址、长度以及指定程序(可通过其名称或程序令牌识别)的可用副本的新程序令牌。

ACQUIRE_PROGRAM

DFHLDLDX [CALL,]
      [CLEAR,]
      [IN,
      FUNCTION(ACQUIRE_PROGRAM),
      {PROGRAM_NAME(name8 | string | 'string')|
      PROGRAM_TOKEN(name8)},
      [SUSPEND(NO|YES),]]
      [OUT,
      ENTRY_POINT(name4 | (Ra)),
      [LOAD_POINT(name4 | (Ra)),]
      [NEW_PROGRAM_TOKEN(name8),]
      [PROGRAM_ATTRIBUTE(name1 | (Rn)),]
      [PROGRAM_LENGTH(name4 | (Rn)),]
      RESPONSE(name1 | *),
      REASON(name1 | *)]

此命令是线程安全的。

ENTRY_POINT (name4 | (Ra))
返回程序的入口点地址。
name4
用于接收 31 位条目地址的 4 字节位置的名称
(Ra)
用于接收条目地址的寄存器。
LOAD_POINT (name4 | (Ra))
返回程序的装入点地址。
name4
用于接收装入地址的 4 字节位置的名称
(Ra)
要包含装入地址的寄存器。
NEW_PROGRAM_TOKEN (name8)
返回指定程序的可用副本的新程序令牌。
name8
用于接收标识此程序和实例的 8 字节令牌的位置的名称。
PROGRAM_ATTRIBUTE (name1 | (Rn))
返回程序属性。
name1
要接收程序属性的 1 字节位置的名称。
(Rn)
一种寄存器,其中低阶字节接收程序属性,而其他字节设置为零。 它可以具有值 RELOAD ,直接,可复用或瞬态。
RELOAD
程序不可复用,因此可以装入程序的多个副本。 当发出 RELEASE_PROGRAM 调用 (针对该副本) 时,将从存储器中除去副本。
RESIDENT
除非已删除,否则不会从存储器中除去程序的单个副本。 RESRES 程序必须至少是准重入程序。 缺省情况下, PROGRAM_TYPE SHARED 的任何程序都具有RES经验值属性。 DELETE_PROGRAM 调用对这种类型的RES据此程序没有影响。
Reusable
与 RESRES 类似,只是出于存储优化原因, CICS®可以从存储器中除去未使用的 REUSE 程序。
transient
与RES颇为相似的是,只要瞬态程序的使用计数降至零,就会将其从存储器中除去。
PROGRAM_LENGTH (name4 | (Rn))
返回指定程序的长度。
name4
要接收长度 (以字节为单位) 的 4 字节位置的名称,以二进制表示
(Rn)
包含长度 (以字节为单位) 的寄存器,以二进制表示。
PROGRAM_NAME (name8 | string | "string")
指定要获取的程序的名称。
name8
包含 8 字节程序名的位置的名称。
字符串(string)
用于命名程序的字符串。
"字符串"
用引号括起的字符串。 通过空白填充或截断将字符串长度设置为 8。
PROGRAM_TOKEN (name8)
指定用于标识要获取其详细信息的程序的令牌。
name8
包含从先前 DEFINE_PROGRAM 或收购程序调用获取的 8 字节令牌的位置的名称。
SUSPEND (NO | YES)
指定是否暂挂执行,直到可以授予请求为止。

收购程序的 RESPONSE 和 REASON 值

RESPONSE 推理
确定
EXCEPTION 无存储器
  PROGRAM_NOT_DEFINED
  PROGRAM_NOT_FOUND
DISASTER
INVALID
KERNERROR
PURGED
注:
  1. 有关更多详细信息,请参阅 进行 XPI 调用中对 RESPONSE 和 REASON 的说明。
  2. 响应为 "EXCEPTION" 的原因 "NO_STORAGE" 表示没有足够的存储空间来满足此请求,并且指定了 SUSPEND (NO)。
  3. 如果程序未包含在库并置中,或者如果链接编辑失败,那么将返回 REASON 'PROGRAM_NOT_FOUND'。 在这种情况下,程序被标记为 "不可执行"; 必须重新链接才能成功获取。