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