transfer

EGL transfer 语句将控制权从一个主程序转移到另一个主程序,结束转移程序,并传递(可选)一条记录,该记录的数据被接受到接收程序的输入记录中。不能在被调用程序中使用 transfer 语句。

程序可以通过 transfer to a transaction 格式的语句来转移控制权:
  • transfer to a transaction 执行下列操作:
    • 在作为 Java™ 主文本程序或主批处理程序运行的程序中,行为取决于构建描述符选项 synchOnTrxTransfer 的设置:
      • 如果 synchOnTrxTransfer 的值为 YES,则 transfer 语句将提交可恢复的资源、关闭文件、关闭游标并在同一个运行单元中启动程序。
      • 如果 synchOnTrxTransfer 的值为 NO(缺省值),则 transfer 语句也在同一个运行单元中启动程序,但不关闭或提交可供被调用程序使用的资源。
    • 在 页面处理程序中,transfer to a transaction 是无效的;请改为使用 forward 语句。

当正在将控制权从 Java 代码转移至 Java 代码时,链接选项部件的 transferLink 元素不起作用,但在别的情况下是有意义的。

如果正在将控制代码转移至不是使用 EGL 或 VisualAge® Generator 编写的代码,则建议您设置链接选项部件的 transferLink 元素。将 linkType 属性设置为 externallyDefined

如果正在以 VisualAge Generator 兼容性方式运行,则可以在 transfer 语句中指定选项 externallyDefined,对于从 VisualAge Generator 迁移的程序,就是这种情况;但建议您改为在链接选项部件中设置等效的值。有关 VisualAge Generator 兼容性方式的详细信息,请参阅与 VisualAge Generator 的兼容性


transfer 语句的语法图
program targetName(缺省值)
接收控制权的程序。
transaction targetName
接收控制权的程序,如之前所述。
sysVar.transferName
包含可以在运行时设置的目标名的系统函数。有关详细信息,请参阅 sysVar.transferName
passing recordName
作为目标程序中的输入记录进行接收的记录。传递的记录可以是任何类型,但长度和基本类型必须与接收数据的记录兼容。目标程序中的输入记录必须具有 basicRecord 类型。

相关参考
sysVar.transferName

使用条款 | 反馈
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.