是否有一种方法可以设置检索作业属性 (RTVJOBA) 命令的 Return 代码 (RTNCDE) 参数的值

Is there a method to set the value for the Return code (RTNCDE) parameter of the Retrieve Job Attributes (RTVJOBA) command

以下文档表明 Return 代码 (RTNCDE) 值可从 检索作业属性 (RTVJOBA) 命令获得被 return编辑为 DECIMAL(5, 0),后来在线程安全 information\table 中澄清该值实际上被称为 [更准确地称为] 程序 Return Code 并且该值不是线程安全的,从中我们可以安全地得出结论,没有特定于线程的支持来设置该值:
http://www.ibm.com/support/knowledgecenter/ssw_ibm_i_71/cl/rtvjoba.htm#RTVJOBA.RTNCDE

Retrieve Job Attributes (RTVJOBA)
CL var for RTNCDE (5 0) (RTNCDE)
Specifies the name of the CL variable that receives the 5-digit decimal return code of an RPG, COBOL, DFU, or sort utility program. The return code is set by these programs before they return to the programs that call them. The return code indicates the completion status of the last program (of these types) that has completed processing within the job, as follows:
...

Attribute Scope and Thread Safety Table: Attribute Scope Threadsafe
Program return code (RTNCDE) Job No

访问的[不太可能drill-down\navigation编程->控制语言->CL编程->编译CL源程序->Return代码汇总]可以找到一些使用该检索值的文档;一个不太可能的地方,因为 CL 编译器显然不设置值,CL 过程或程序也不设置:
http://www.ibm.com/support/knowledgecenter/ssw_ibm_i_71/rbam6/retcs.htm

Return code summary

A return code can be returned using the Return code (RTNCDE) parameter on the Retrieve Job Attributes (RTVJOBA) command.

The return code is a 5-digit decimal value with no decimal positions (12345. for example). The decimal value indicates the status of called programs. CL programs do not set the return code. However, you can retrieve the current value of the return code as set by another program in a CL program. You can do this by using the RTNCDE parameter of the Retrieve Job Attributes (RTVJOBA) command.

The following list summarizes the return codes used by languages supported on the IBM® i operating system:
...

在上面的列表中[从引用的文档中省略]是RPG编译器和程序、COBOL编译器和程序以及C程序。上面的列表中缺少 CL 编译器或 CL;同样,任何提及 DFU 程序和 Sort Utility 功能,它们都在先前包含的文档参考中提到。唯一提到的 CL 是前面提到的 ,但您可以使用 RTVJOBA 读取值...好吧,但仅作为 return 由其他人编辑 程序和编译器,而不是我刚刚调用的 CL 过程或程序的有效 return 代码!

所以...我想知道的是,尽管 CL 没有设置值 [good 因为我想让我的 CL 程序设置该值],可以使用 CL 程序来设置值 因为 CL 程序不会隐式地这样做;很明显,根据编译的 运行-time 对象不 [¿ 并且不打算?] 包含任何代码来设置 return 代码?

如果没有别的[很可能,因为最有可能的反应将是对 "Write a program with system-state to modify the value..." 的不受欢迎的推荐,那么请仅在还附有文档的情况下 [通过您自己的研究;我意识到不太可能有值位置的任何 public 文档] [为了后代,因为我不太可能实际编写任何代码],大概是存储在过程控制 Space(PCS)中的值);参见:DMPSYSOBJ *PCS


以下是最有可能的方法,但没有说明更改 Return 代码的能力:
http://www.ibm.com/support/knowledgecenter/ssw_ibm_i_71/apis/qwtchgjb.htm

Change Job (QWTCHGJB) API

P.S。如果有人知道并且可以为以下 link 中提到的 产品 Return 代码 的文档提供 link,特别是 ILE CL编译器,所以我可能会更多地了解该值;另一个 return 代码,但对我的问题来说有点离题:
http://www.ibm.com/support/knowledgecenter/ssw_ibm_i_71/apis/WMAttrDesc.htm

Product return code. The return code set by the compiler for Integrated Language Environment® (ILE) languages. Refer to the appropriate ILE-conforming language manual for possible values. This field is scoped to the job and represents the most recent return code set by any thread within the job.
...

编辑:我忘了你想要一个程序来设置它。我先发的那个刚好找回来

此程序将从 "LU Work Area" 设置 "Language/Utility return code",这是由 OPM 和 ILE RPG 设置的。它与 DSPJOB 第 1 页上显示的 return 代码相同。

我认为 OPM COBOL 设置了这个 return 代码,但如果我没记错的话,ILE COBOL 设置了 LU 工作区中的其他 return 代码之一。 ILE C 还设置了其他 return 代码之一。

pgm
    /*------------------------------------------------------------*/
    /* From QSYSINC/H MILIB:                                      */
    /*                                                            */
    /* typedef volatile struct _LU_Work_Area_T {                  */
    /*   short LU_RC;             -- Language/Utility return code */
    /*   ...                                                      */
    /* } _LU_Work_Area_T;                                         */
    /* ...                                                        */
    /* _SPCPTR  _LUWRKA    ( void );                              */
    /*------------------------------------------------------------*/
    dcl &luwrka_p type(*ptr)
    dcl &luwrka   type(*char) stg(*based) basptr(&luwrka_p)
      dcl &lu_rc  type(*int) len(2) +
                  stg(*defined) defvar(&luwrka 1)

    callprc '_LUWRKA' rtnval(&luwrka_p)
    chgvar &lu_rc 5

endpgm