Отправка файла IFS в Outq печатает строку символов "@"
Я пытаюсь отправить файл из IFS в outq в нашей системе AS/400. Всякий раз, когда я это делаю, я получаю именно то, что отправляю, а также строку символов "@" различной длины, добавляемую в конец.
Вот команда, которую я использую:
qsh cmd('cat -c /path/test.txt | Rfile -wbQ -c "ovrprtf file(qprint)
outq(*LIBL/ABCD) devtype(*USERASCII) rplunprt(*no) splfname(test) hold(*no)"
qprint')
Содержание test.txt
просто Hello World!
Вывод, который я получаю при отправке команды:
Hello World!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Я не нашел ни одного сообщения в Интернете о подобной проблеме, и попытался изменить значения и найти дополнительные переключатели, чтобы заставить его работать. Ничто, что я делаю, кажется, не решает проблему.
Есть ли команда или переключатель, которые я пропускаю, или что-то, что у меня есть, уже вызывает это?
РЕДАКТИРОВАТЬ:
Я нашел эту документацию, которая впервые упоминала эту проблему, но она не очень полезна:
"Сообщения для команды" Выполнить действие "могут состоять из длинной строки символов" @ " во всплывающем сообщении. (У команды "Рефлекторная автоматизация выполнения действий", которая настроена в ситуациях, такой проблемы нет.) Решение этой проблемы находится в стадии разработки. Эта проблема может быть решена к моменту выпуска продукта. Если вы видите эту проблему, обратитесь в службу поддержки программ IBM ".
Единственные отличия: 1) это не всплывающее сообщение, оно печатается. 2) Я не верю, что мы используем Tivoli Monitoring, хотя могу ошибаться.
Если мы используем Tivoli Monitoring, каким будет решение? После этого нет никакой дополнительной документации, и я не являюсь системным администратором, поэтому я сам не могу позвонить в службу поддержки программ IBM. И если мы не будем его использовать, что еще может вызвать эту проблему?
1 ответ
Я получаю разные результаты, но похожие. Я создал test.txt с помощью проводника Windows, поместил в Hello, world!, сохранил его и попробовал скрипт. Я получил бред за "Привет, мир!" а затем строка символов @.
Моя система - 7.3 TR5, CCSID 37 (английский язык США), и мой файл IFS - CCSID 1252 (английский язык Windows). Результаты не изменились, если бы я использовал потоковый файл CCSID 819 (US ASCII).
Мне не повезло модифицировать переключатели Rfile.
Я обнаружил, что удаление devtype(*userascii) приводит к печатному выводу на простом английском языке без символов @. Вам действительно нужно *USERASCII? Я думаю, что это было бы больше для предварительно отформатированного "готового к печати" файла, такого как Postscript или тому подобного.
РЕДАКТИРОВАТЬ: еще кое-что попробовать, я не понимаю, почему * USERASCII добавляет эти символы @; это похоже на проблему перевода.
Я попробовал это и все еще получил дополнительный @@@... Возможно, вам придется поиграть с параметром TOCCSID(). Несмотря на неудачу, это дало мне идею: что, если эти символы @ - это пробелы EBCDIC, отправляемые как есть в поток печати *USERASCII? Все, что нам нужно, это способ отправить только количество байтов в файле потока без каких-либо дополнений.
CRTPF FILE(QTEMP/PRTSTMF) RCDLEN(132)
CPY OBJ('/path/test.txt') TOOBJ('/qsys.lib/qtemp.lib/prtstmf.file/prtstmf.mbr') replace(*yes)
ovrprtf file(qprint) outq(*LIBL/prt3812) devtype(*USERASCII) rplunprt(*no) splfname(test) hold(*no)
cpyf prtstmf qprint
Данные в QTEMP/PRTSTMF находятся в ASCII; DSPPFM показывает это очень много. Он также показывает кучу пробелов: в конце концов, это файл фиксированной длины. Следующим моим шагом было написание программы RPG для чтения потокового файла и его печати, но Скотт Клемент уже сделал это: http://www.scottklement.com/PrtStmf.zip
Это работает в моей системе:
ovrprtf file(qsysprt) outq(*LIBL/abcd) devtype(*USERASCII) rplunprt(*no) splfname(test) hold(*no)
prtstmf stmf('/path/test.txt') outq(abcd)