Отправка файла IFS в Outq печатает строку символов "@" - PullRequest
0 голосов
/ 04 марта 2019

Я пытаюсь отправить файл из 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!@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

Я не нашел ни одного сообщенияонлайн о подобной проблеме, и попытался изменить значения и искать дополнительные переключатели, чтобы заставить его работать.Ничто из того, что я делаю, кажется, не решает проблему.

Есть ли команда или переключатель, которые мне не хватает, или что-то, что у меня там, уже вызывает это?

РЕДАКТИРОВАТЬ:

Я нашел эту документацию , которая впервые упоминает эту проблему, но она не очень полезна:

«Сообщения для команды« Выполнить действие »могут состоять из длинная строка символов "at" (@) во всплывающем сообщении.(У команды «Рефлекторная автоматизация выполнения действий», которая настроена в ситуациях, такой проблемы нет.) Решение этой проблемы находится в стадии разработки.Эта проблема может быть решена к моменту выпуска продукта.Если вы видите эту проблему, обратитесь в службу поддержки программного обеспечения IBM. ”

Разница только в следующем: 1) это не всплывающее сообщение, оно печатается.2) Я не верю, что мы используем Tivoli Monitoring, хотя могу ошибаться.

Если предположить, что мы используем Tivoli Monitoring, каким будет решение?После этого нет никакой дополнительной документации, и я не являюсь системным администратором, поэтому я сам не могу позвонить в службу поддержки программ IBM.И если мы не будем его использовать, что еще может вызвать эту проблему?

1 Ответ

0 голосов
/ 05 марта 2019

Я получаю разные результаты, но похожие.Я создал 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)
...