我有一个要求。
读取一条记录,找到以' Q'开头的5字节字符串。 (例如:Q $ A12),并从记录中删除字符串。
此5位数字符串可以出现在记录中的任何位置。以' Q'开头的字符串4个字节的其余部分可以变化。我的记录长度是15个字节。
我必须使用SORT。
示例:
输入:
"{0} {1}".format("Hello", "World")
输出
ABCDEFG123**QABC2**
ACDHLAMANWST2HY
HAI**Q&A12**ACMATLK
答案 0 :(得分:1)
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.
将所有原始空白更改为非显示字符(假设您的数据仅供显示)。
将任何未跟随四个字节的Q更改为另一个非显示字符。
使用PARSE将输入分成最多三个字段:Q之前的数据(如果存在,否则为所有数据);以Q开头的五个字节;余数(当Q存在而不在最终位置时)。
使用BUILD生成一个新记录,其中包含五个空格值,如果需要,可以将Q数据设置为空格。用户OVERLAY从字段中删除尾随空白。
将空间值更改回空间。将Q值更改回Q.