查看上一个主题 :: 查看下一个主题
|
作者 |
信息 |
威廉·唐尼
新的用户
已加入:2020年7月1日 帖子:13 地点:英国
|
|
|
|
我一直在研究使用LINKMVS从REXX调用一个Assembler模块,并且效果很好。但是,我想传递的字段长于LINKMVS可以传递的最大32,767字节。通过查阅IBM手册(TSO / E REXX参考),我发现了对SHVBLOCK的引用,看起来它使我可以从Assembler模块访问REXX变量。
我还没有尝试使用它,在开始之前有一些查询:
-这是我应该允许我在由REXX调用的Assembler模块中引用REXX变量的内容吗?
-我可以在“汇编器”模块中更改REXX变量吗?
-我想花点时间解决这个问题,是否可以从Assembler例程编写转储,以便我可以看到控制块的外观?我已经添加了转储,并将PSW /寄存器写入日志,但是我不知道如何编写转储。 |
|
回到顶部 |
|
 |
史蒂夫·迈尔斯
活跃的成员
已加入:2013年11月30日 帖子:870 地点:宇宙
|
|
|
|
- 至少在TSO环境中获取Rexx(或CLIST)变量的“官方”例程为IKJCT441。
- IKJCT441可以创建以及更改Rexx或CLIST变量。
我有一个使用IKJCT441的接近生产的模块。这是十年前完成的。我断断续续地使用它,没有任何已知的问题,但是由于我开发了其他方法来替换Rexx / CLIST代码中使用的TSO命令,因此它几乎没有用。通过电子邮件将PM发送给我,我将向您发送使用IKJCT441的代码。在500多个行中,它太大了,无法包含在响应中。
编写代码以创建转储样式的输出并不是很困难。我从未为此目的开发通用模块,但在有需要时总是为每种用途编写自定义转储程序。它生成这样的行-
码: |
啊ddddd啊啊啊啊啊啊 tt * tttttttttttttttt * |
hhhh ddddd以十六进制和十进制表示行中数据的相对偏移量。 hhhhhhhh是4字节二进制数据的8个十六进制数字; ttttttttttttttttt是该行中数据的翻译文本。这在80字节3270显示器上显示得很好。只是一些想法。
码: |
DL DS 0C
偏移量 DS CL4
偏移量 DS CL6,C
双字1 DS CL8,C
DWORD2 DS CL8,CL2
双字3 DS CL8,C
DWORD4 DS CL8,C
文字 DS C,CL16,C
德伦 EQU *-DL |
定义一个这样的表-
码: |
健达 DC AL2(00,DWORD1-DL + 0,DTEXT-DL + 01)
DC AL2(01,DWORD1-DL + 2,DTEXT-DL + 02)
DC AL2(02,DWORD1-DL + 4,DTEXT-DL + 03)
DC AL2(03,DWORD1-DL + 6,DTEXT-DL + 04)
DC AL2(04,DWORD2-DL + 0,DTEXT-DL + 05)
DC AL2(05,DWORD2-DL + 2,DTEXT-DL + 06)
DC AL2(06,DWORD2-DL + 4,DTEXT-DL + 07)
DC AL2(07,DWORD2-DL + 6,DTEXT-DL + 08)
DC AL2(08,DWORD3-DL + 0,DTEXT-DL + 09)
DC AL2(09,DWORD3-DL + 2,DTEXT-DL + 10)
DC AL2(10,DWORD3-DL + 4,DTEXT-DL + 11)
DC AL2(11,DWORD3-DL + 6,DTEXT-DL + 12)
DC AL2(12,DWORD4-DL + 0,DTEXT-DL + 13)
DC AL2(13,DWORD4-DL + 2,DTEXT-DL + 14)
DC AL2(14,DWORD4-DL + 4,DTEXT-DL + 15)
DC AL2(15,DWORD4-DL + 6,DTEXT-DL + 16)
健达N 均衡器 (*-GENTAB)/6 |
表中的每个条目都定义了如何构造输出线。前两个字节代表16个字节中每个字节的16个字节的偏移量,其后是2个字节,它们定义了十六进制区域中转换为2个十六进制数字的字节的偏移量,随后是2个字节,定义了in字节的文本数据的输出行。定义一个转换表,将不可打印的字节转换为。该表允许打印小写字母,大写字母和数字-
码: |
生命周期评价 均衡器 C'A'-X'40'
LCJ 均衡器 C'J'-X'40'
LCS 均衡器 C'S'-X'40'
贸易协定 DC 0CL256' ',(C' ')C'.',C' ',(LCA-(*-TRTAB))C'.'
DC 9AL1(*-TRTAB),(LCJ-(*-TRTAB))C'.'
DC 9AL1(*-TRTAB),(LCS-(*-TRTAB))C'.'
DC 8AL1(*-TRTAB),(C'A'-(*-TRTAB))C'.'
DC 9AL1(*-TRTAB),(C'J'-(*-TRTAB))C'.'
DC 9AL1(*-TRTAB),(C'S'-(*-TRTAB))C'.'
DC 8AL1(*-TRTAB),(C'0'-(*-TRTAB))C'.'
DC 10AL1(*-TRTAB),(256-(*-TRTAB))C'.' |
该表中有很多汇编程序技巧。如果有的话,它将无法与Assist Assembler一起使用。我从内存中构建了这些表,但是我认为它们将正确地组装。 |
|
回到顶部 |
|
 |
威廉·唐尼
新的用户
已加入:2020年7月1日 帖子:13 地点:英国
|
|
|
|
关于从“汇编器”模块编写转储,您的帖子让我开始思考。我所做的就是将要查找的内容写到数据集。不只是简单地插入H'00'并查看SYSUDUMP,而是比仅打印到Log的寄存器好。一旦我得到您关于以转储格式打印存储的建议(非常感谢)并编写了代码,以后我便可以重用。
我还有另一个问题,您可能可以帮助。我试图批量运行REXX,但是遇到了问题(很可能是因为我没有正确设置环境)。但是,如果确实将其设置好并使Assembler模块转储,这会将转储写入SYSUDUMP吗?我只是想知道是否值得坚持到底,还是花我的时间编写自己的代码以转储存储。
我将使用我的电子邮件地址向您发送PM。 |
|
回到顶部 |
|
 |
史蒂夫·迈尔斯
活跃的成员
已加入:2013年11月30日 帖子:870 地点:宇宙
|
|
|
|
个人想法。对于DSECT中描述的数据,我概述的小型转储程序要比SYSUDUMP或SNAP更好。好多了。与尝试将存储地址转换为DSECT中的偏移量相比,偏移量要容易得多。在任何地方都无法找到打印转储中的存储。 |
|
回到顶部 |
|
 |
威利·詹森(Willy Jensen)
活跃用户

已加入:2015年9月1日 帖子:416 地点:丹麦
|
|
|
|
您可以从汇编程序中添加,更新和删除REXX变量。我发现IRXEXCOM是最简单的界面。该程序必须作为REXX函数启动,即rval = MyPgm(options)。
您可以找到一组REXX变量的宏 在这里访问: |
|
回到顶部 |
|
 |
威廉·唐尼
新的用户
已加入:2020年7月1日 帖子:13 地点:英国
|
|
|
|
感谢Steve / Willy的慷慨帮助。有点想办法  |
|
回到顶部 |
|
 |
|