有没有办法将数组传递给外部 REXX 程序?
Is there a way to pass an array to an external REXX program?
我试过的:
程序 A:
call PROGRAMB ARRAY val1 val2
程序 B:
PARSE arg ARRAY val1 val2
/* test to see if ARRAY is passed successfully */
/* len1 equals the length of ARRAY */
interpret "len1 = "ARRAY".0"
say 'len1: ' len1
DO i=0 TO len1
say 'current line: '
interpret "say "ARRAY".i"
END;
预期结果:
- len1 相当于数组的长度。例如,如果 ARRAY = [1,2,3],len 将等于 3.
- 应该打印数组的每个成员。
实际结果:
- len1 相当于 "JOBCARD.0" 而不是实际长度。
- 由于 IRX0041I(错误的算术转换),程序在 for 循环中失败并且没有打印出成员/
我尝试过的解决方案:
https://www.bde-gmbh.de/tipps-tricks/zos-rexx/how-to-pass-stems-as-procedure-arguments-in-rexx/
但此方法仅适用于将数组传递给同一程序中的函数。
不能将主干(数组)传递给外部 Rexx EXEC。研究使用 NEWSTACK、PUSH、QUEUE、QUEUED()、PULL、DELSTACK。这些都记录在 TSO/E Rexx Reference
的关键字说明、内置函数和 TSO/E 外部函数部分
我试过的:
程序 A:
call PROGRAMB ARRAY val1 val2
程序 B:
PARSE arg ARRAY val1 val2
/* test to see if ARRAY is passed successfully */
/* len1 equals the length of ARRAY */
interpret "len1 = "ARRAY".0"
say 'len1: ' len1
DO i=0 TO len1
say 'current line: '
interpret "say "ARRAY".i"
END;
预期结果:
- len1 相当于数组的长度。例如,如果 ARRAY = [1,2,3],len 将等于 3.
- 应该打印数组的每个成员。
实际结果:
- len1 相当于 "JOBCARD.0" 而不是实际长度。
- 由于 IRX0041I(错误的算术转换),程序在 for 循环中失败并且没有打印出成员/
我尝试过的解决方案:
https://www.bde-gmbh.de/tipps-tricks/zos-rexx/how-to-pass-stems-as-procedure-arguments-in-rexx/
但此方法仅适用于将数组传递给同一程序中的函数。
不能将主干(数组)传递给外部 Rexx EXEC。研究使用 NEWSTACK、PUSH、QUEUE、QUEUED()、PULL、DELSTACK。这些都记录在 TSO/E Rexx Reference
的关键字说明、内置函数和 TSO/E 外部函数部分