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.
07.12.2015