首页 > 解决方案 > 使用 RPG 和 DSPF 转到文本字符串中的第 n 个字符

问题描述

我有一个运行交互式 DSPF 的程序。现在我在 RPG 程序中用字符填充一个字段。前两个字符'ab'。但是我想要的是,当我通过我的 DSPF 时,当我选择该字段时,光标位于“a”下方,因为这是该字段的第一个位置。我想跳到该字段的第三个位置,这样我的光标就在我的输入之后,这样我就可以轻松地继续输入,而不是按箭头键。只是想知道是否有办法做到这一点。我已经知道 DSPATR(PC) 但这可以确保它到达我想要第三个位置的第一个位置。CURLOC 是记录级​​别,对我没有帮助,我只希望将这个文本字符串定位在第三个字符,而不是在第一个标签上。我也希望可以选择更改前 2 个字符,这就是为什么我没有简单地将它们设为变量并将它们连接起来,或者只是在幕后合并。我只想制表符到文本字符串,光标位于第三个字符位置。

标签: rpgle

解决方案


我认为CSRLOC是你的答案..
来自文档

关键字的格式为:

CSRLOC(字段名-1 字段名-2)

关键字的参数值指定两个字段的名称,其内容是光标位置的行号(对于 field-name-1)和位置号(对于 field-name-2)。field-name-1 和 field-name-2 是 3 字节、分区十进制、隐藏字段。您的程序使用这些字段来告诉 IBM® i 操作系统将光标定位在何处。

A          R RECORD1                   CSRLOC(LINNBR POSNBR)
A            TITLE         40   B  1  2
A            PAGE           5Y OB  1 60
A            TEXT        1760   B  2  1
A            LINNBR         3  OH
A            POSNBR         3  OH

它的记录级别这一事实并不重要,因为 I/O 是通过记录而不是字段完成的。当记录是EXFMT光标时,光标将定位在您请求的位置。

如果这不起作用,您唯一可能的选择是摆脱显示文件并使用动态屏幕管理器 (DSM) API直接与屏幕交互。


推荐阅读