已启动的任务
在伪会话式情况下, "receive" 程序由 FEPI 作为 CICS® 启动式任务启动,其启动代码为 "SZ" (对于 FEPI) ,可使用 EXEC CICS ASSIGN STARTCODE 进行检查。
FEPI 提供的启动数据可识别启动任务的原因,并提供有关 FEPI 资源的信息,如节点-目标连接、数据模式和格式以及所涉及的对话 ID。 处理事务的程序会发出 EXECCICSRETRIEVE 命令来获取这些数据(与事务和启动数据有关的CICS规则适用;特别是,必须获取所有启动数据,以防止多次启动)。 副本 DFHSZAPA , DFHSZAPO , DFHSZAPC 和 DFHSZAPP 包含启动数据结构的声明。 您可以提供自己要包含在启动数据中的数据,以便您的程序可以相互通信其处理状态等。
此类程序必须做的第一件事是使用来自开始数据的对话标识来获取对话的所有权; 然后应该使用 FEPI RECEIVE 从后端获取实际数据。 然后它可以做自己喜欢的任何事情: 结束对话,向后端系统发送更多数据 (并启动自身或新任务以接收回复) ,等等。
除入站数据到达外,将导致 FEPI RECEIVE 命令完成的任何其他操作都将导致启动 "接收程序"。 这包括 "先前的 SEND 失败" 错误,以及来自没有任何数据的后端系统的响应。 您发出的 FEPI RECEIVE 会显示这些情况,就像未使用 FEPI START 一样。
如果 FEPI START 命令设置的时间限制到期或会话丢失,那么也会启动该程序。 这些情况由 EVENTTYPE 的值指示,在开始数据中,是 TIMEOUT 或 SESSIONLOST 而不是 DATA。 应该处理它们,就像 FEPI RECEIVE 命令导致错误一样。
如果 "send" 程序与前端终端相关联,那么 FEPI START 命令通常会指定 "receive" 程序使用同一终端。 您应该知道,当等待入站数据时, FEPI 无法保证另一个事务不会使用终端。 在大多数情况下,这种情况不会发生或无关紧要。 如果发生这种情况并且很关键 (可能出于安全原因) ,那么可以通过在发出 FEPI START 之前发出 EXEC CICS SET TERMINAL 命令指定 NEXTTRANSID (itran) 来阻止用户在终端输入; 请记住在启动式任务中将 NEXTTRANSID 重置为空白。 itran 是您提供的拒绝任何用户输入的事务的名称,并再次设置 NEXTTRANSID (itran)。 如果这是不可接受的,那么必须避免使用伪会话应用程序。
所述处理程序 Begin-session 处理程序、Unsolicited-data 处理程序 和 End-session 处理程序 -begin-session, unsolicited data, end-session - 也是 CICS 启动的任务。 同样,启动数据(通过 EXEC CICS RETRIEVE 获得)会告诉您任务启动的原因和对话的身份。 启动式任务必须获得对话的所有权,这样它才能继续对话,从而使 FEPI 知道正在处理事件。