0

现在我需要使用 CL 程序在日记中查找特定条目。我用来定位它的方法是 DSPJRNE 将日记条目放在输出文件中,然后使用 OPNQRYF 过滤所需的条目。该文件是唯一键控的,因此我的计划是将日记帐分录数据与键进行比较。问题是其中一个键是压缩十进制,因此在日记帐分录中,它被视为十六进制字符代码并显示为一些奇怪的符号。因此,为了比较字符串,我需要将打包的十进制键转换为相应的字符。如何在 CL 中实现这一点?如果无法使用 CL,那么 RPG 呢?

4

2 回答 2

2

要回答您的直接问题,CVTCH MI 指令会将十六进制转换为字符,但我不会走那条路;既不是 CL 也不是 RPG。相反,我会采取一些额外的步骤来采纳 James 的建议。

DSPJRNE OUTFILE(QTEMP/DSPJRNE)
QRY input file DSPJRNE, output file QRYJRNE, select only JOESD
CRTDUPOBJ PRODUCTION_FILE QTEMP/JRNF DATA(*NO)
CPYF QRYJRNE JRNF FMTOPT(*NOCHK)

这将为您提供一个外部描述的文件,其布局与您的生产文件完全相同。你可以查询,等等。

于 2012-05-29T16:28:42.170 回答
1

如果您要提取特定文件的日志条目,则可以巧妙地使用 SQL 将它们转储到外部描述的文件中:

CREATE TABLE QTEMP/QADSPJRN LIKE QSYS/QADSPJRN

ALTER TABLE QTEMP/QADSPJRN DROP COLUMN JOESD

CREATE TABLE QTEMP/DSPJRNE AS (SELECT * FROM QTEMP/QADSPJRN, FILE-LIB/FILE) 
WITH NO DATA

DSPJRNE ... OUTPUT(*OUTFILE) OUTFILFMT(*TYPE1) OUTFILE(QTEMP/DSPJRNE) 
ENDDTALEN(*CALC)
于 2012-05-29T16:04:04.453 回答