Отправка файла 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)
Другие вопросы по тегам