分析器程序的输出

分析器程序在 COMMAREA 中提供输出。 该输出包括响应代码,以及可用于指定更多处理阶段并用于与转换器程序共享信息的可选输出参数范围。

注意: 本主题包含产品敏感的编程接口和关联的指导信息。

分析器程序的参数 具有 COMMAREA 中所有参数的列表和技术描述。

分析器程序必须在它的 COMMAREA 中提供以下输出:
  • 响应码。
    • 如果分析器程序返回响应码 URP_OK,处理会继续下一步。
    • 如果分析器程序返回任何其他值,那么 CICS® 会向 Web 客户机返回错误响应。 该响应可通过用户可替换的 Web 错误程序来修改。 CICS Web Support 缺省状态码和错误响应 告诉您如何将分析器中的返回码映射到 CICS 返回到 Web 客户机的状态码。
分析器程序也可能提供以下输出:
  • 在请求传递到用户编写的应用程序之前,用于处理它的转换器程序的名称。
    • 如果已从 URIMAP 定义输入转换器程序名,那么您可接受或重设它。
    • 如果分析器表明不需要转换器程序,请求的第一个 32K 字节传递到一块存储器中用户编写的应用程序。 Web 感知应用程序可以忽略此操作,并使用 EXEC CICS WEB API 命令来读取请求。
  • 处理请求并提供响应的应用程序的名称。
    • 如果已从 URIMAP 定义输入程序名,那么您可接受或重设它。
    • 如果您要使用转换器程序,那么转换器程序可指定或重设程序名。 可以用这种方式使用转换器以在处理请求时涉及到多个程序。
  • 涵盖剩余处理阶段的别名事务的事务标识。 如果已从 URIMAP 定义输入事务标识,那么您可接受或重设它。
  • 与别名事务关联的用户标识。 如果已从 URIMAP 定义输入用户标识,那么您可接受或重设它。 如果未指定用户标识,那么 CICS 将以此方式确定用户标识:
    • 如果已从 URIMAP 定义输入用户标识,那么使用它。
    • 如果 HTTP 请求在客户机认证下使用 SSL,就从客户机证书中获得用户标识。
    • 在其他情况下,将使用 CICS 缺省用户标识。
  • 如果转换器程序在存储器块中手动进行转换,那么是与包含请求的 32K 存储器块的代码页转换相关的参数,以及与响应主体的代码页转换相关的参数。
    注: 这不会影响转换器程序或用户编写的应用程序,这些应用程序使用 EXEC CICS WEB API 命令来查看 HTTP 请求并生成响应; 它们直接从 CICS请求代码页转换。

    您可以用两种方式之一为包含请求的一块存储器转换指定参数:

    • 作为一对参数,指定 Web 客户机 (wbra_characterset) 所使用的字符集以及适用于应用程序 (wbra_hostcodepage) 的主机代码页。 以此方式指定参数意味着不需要代码页转换表 (DFHCNV) 中的条目。
    • 作为 DFHCNV 代码页转换表 (wbra_dfhcnv_key) 中的条目的键。 建议不要执行此操作,但出于升级目的除外。

    如果未指定任何这些参数,那么缺省行为是 CICS 使用 Analyzer 程序中描述的标准设置来转换文本消息。 如果您要禁止对存储器块中的请求和响应执行代码页转换,那么将 wbra_dfhcnv_key 设置为空。

  • 指示使用转换器程序的非 Web 感知应用程序需要兼容性处理 (wbra_commarea) 的位置的标志。 提供该标志的目的在于升级。 它只能由不使用 EXEC CICS WEB API 命令 (即,在存储器块中手动生成响应) 的应用程序使用,在特定情况下, Web 客户机需要的响应与在 CICS TS 版本 3 之前接收到的响应相同。 设置此标志意味着:
    • CICS 不会添加通常为 HTTP/1.1 消息插入的任何响应头。 仅使用在 CICS TS V 3 之前发送到客户机的头。
    • 如果需要错误处理,那么 CICS 将发送适用于 HTTP/1.0 响应并标记为 HTTP/1.0 响应的错误响应,而不考虑 Web 客户机的 HTTP 版本。 CICS 通常会使用 HTTP/1.1 错误响应来应答 HTTP/1.1 客户机,但这可能会使客户机误以为应用程序通常会发送 HTTP/1.1 响应。
  • 八字节的用户令牌,用于在分析器程序和转换器程序之间共享信息。 在分析器和转换器程序之间共享数据 说明了这一工作方式。
  • 已修改的请求主体长度的值
分析器可以修改请求的内容:
  • 修改过的数据长度可以短于原始数据,或者和原始数据相同。 不能延长请求主体。
  • 所做的任何更改都将显示在传递到转换器程序的数据中,但 不会 显示到 EXEC CICS WEB API 命令中。