使用 JCL 查找和删除动态字符串
Find and delete dynamic string using JCL
我有一个要求。
读取一条记录,找到一个以'Q'开头的5字节字符串(如:Q$A12),将该字符串从记录中删除。
这个 5 位数字的字符串可以出现在记录中的任何位置。以 'Q' 开头的字符串和其余 4 个字节可以变化。我的记录长度是 15 个字节。
我必须使用 SORT 来执行此操作。
示例:
输入:
ABCDEFG123**QABC2**
ACDHLAMANWST2HY
HAI**Q&A12**ACMATLK
输出:
ABCDEFG123
ACDHLAMANWST2HY
HAIACMATLK
OPTION COPY
INREC IFOUTLEN=15,
IFTHEN=(WHEN=INIT,
FINDREP=(IN=C' ',
OUT=X'FE')),
IFTHEN=(WHEN=INIT,
FINDREP=(IN=C'Q',
OUT=X'FD',
STARTPOS=12)),
IFTHEN=(WHEN=INIT,
PARSE=(%00=(ENDBEFR=C'Q',
FIXLEN=15),
%01=(SUBPOS=1,
STARTAT=C'Q',
FIXLEN=5),
%02=(FIXLEN=10)),
BUILD=(%00,
X'FEFEFEFEFE',
%02)),
IFTHEN=(WHEN=INIT,
OVERLAY=(1,30,
SQZ=(SHIFT=LEFT))),
IFTHEN=(WHEN=INIT,
FINDREP=(IN=X'FE',
OUT=C' ')),
IFTHEN=(WHEN=INIT,
FINDREP=(IN=X'FD',
OUT=C'Q'))
将输出记录的长度设置为 15。
将所有原始空白更改为非显示字符(假设您的数据仅显示)。
将任何后面没有跟随四个字节的Qs更改为另一个非显示字符。
使用 PARSE 将输入拆分为最多三个字段:Q 之前的数据(如果存在,则为所有数据); Q开头的五个字节;余数(当 Q 存在且不在最终位置时)。
使用 BUILD 生成一个新记录,具有 space-value,其中五个,如果需要将 Q-data 设置为 space。用户 OVERLAY 从字段中删除尾随空白。
将 space 值改回 space。将 Q 值改回 Q.
我有一个要求。
读取一条记录,找到一个以'Q'开头的5字节字符串(如:Q$A12),将该字符串从记录中删除。
这个 5 位数字的字符串可以出现在记录中的任何位置。以 'Q' 开头的字符串和其余 4 个字节可以变化。我的记录长度是 15 个字节。
我必须使用 SORT 来执行此操作。
示例:
输入:
ABCDEFG123**QABC2**
ACDHLAMANWST2HY
HAI**Q&A12**ACMATLK
输出:
ABCDEFG123
ACDHLAMANWST2HY
HAIACMATLK
OPTION COPY
INREC IFOUTLEN=15,
IFTHEN=(WHEN=INIT,
FINDREP=(IN=C' ',
OUT=X'FE')),
IFTHEN=(WHEN=INIT,
FINDREP=(IN=C'Q',
OUT=X'FD',
STARTPOS=12)),
IFTHEN=(WHEN=INIT,
PARSE=(%00=(ENDBEFR=C'Q',
FIXLEN=15),
%01=(SUBPOS=1,
STARTAT=C'Q',
FIXLEN=5),
%02=(FIXLEN=10)),
BUILD=(%00,
X'FEFEFEFEFE',
%02)),
IFTHEN=(WHEN=INIT,
OVERLAY=(1,30,
SQZ=(SHIFT=LEFT))),
IFTHEN=(WHEN=INIT,
FINDREP=(IN=X'FE',
OUT=C' ')),
IFTHEN=(WHEN=INIT,
FINDREP=(IN=X'FD',
OUT=C'Q'))
将输出记录的长度设置为 15。
将所有原始空白更改为非显示字符(假设您的数据仅显示)。
将任何后面没有跟随四个字节的Qs更改为另一个非显示字符。
使用 PARSE 将输入拆分为最多三个字段:Q 之前的数据(如果存在,则为所有数据); Q开头的五个字节;余数(当 Q 存在且不在最终位置时)。
使用 BUILD 生成一个新记录,具有 space-value,其中五个,如果需要将 Q-data 设置为 space。用户 OVERLAY 从字段中删除尾随空白。
将 space 值改回 space。将 Q 值改回 Q.