Динамические формы для печати AFP

Я пытаюсь напечатать AFP в sysout, но параметр FORMS не известен (и не может быть известен) JCL. Мое текущее решение состоит в том, чтобы создать динамический JCL и перевести его в INTRDR, но это слабое решение, потому что задание не будет находиться под контролем нашего планировщика... и, таким образом, абенд или другая проблема останутся незамеченными в ночное время. операторы.

Я начал придумывать способ распечатать AFP с помощью программы COBOL. Я использую BPXWDYN для динамического создания SYSOUT DD, что позволяет мне устанавливать параметр FORMS так, как я хочу. Но следующим шагом будет сброс AFP на этот DD.

Я думал, что могу вызвать IEBGENER динамически из моей программы COBOL, но это приводит к S0C4.

Я могу перемещать записи AFP из одного DD в другое в программе COBOL, но это ограничивает меня одним LRECL... и у меня много разных определений LRECL для AFP в моей системе, и COBOL ДОЛЖЕН знать LRECL во время компиляции.

Есть предположения? Можно ли вызвать IEBGENER динамически и не получить S0C4? Любые другие идеи, о которых я не подумал?

Заранее спасибо...


person mswanberg    schedule 05.08.2013    source источник


Ответы (2)


Вы не думали написать небольшую программу на ассемблере? Вы можете указать LRECL в своем вызове BPXWDYN, и DCB не нужно указывать LRECL; он получит его из параметров DCB во время ОТКРЫТИЯ. Программа для имитации IEBGENER весьма тривиальна.

В качестве альтернативы рассмотрите вызов SORT с параметром FIELDS=COPY. SORT также не нуждается в LRECL. Или напишите REXX-скрипт.

Есть много способов сделать это; вам просто нужно заглянуть за пределы коробки COBOL.

person zarchasmpgmr    schedule 06.08.2013
comment
а) Мы, простые программисты, используем приложения COBOL только в моем магазине, и б) мой ассемблер настолько заржавел, что мне понадобились бы месяцы, чтобы восстановить его скорость. REXX запрещен в производстве. SORT не записывает динамические параметры FORMS=. Но я понимаю, что вы говорите... вызовите SORT вместо IEBGENER. Это просто может сработать! - person mswanberg; 06.08.2013
comment
p.s. Все мое приложение скоро перейдет на Unix, так что все это будет лишь неприятным воспоминанием :-) - person mswanberg; 06.08.2013
comment
Ассемблер похож на езду на велосипеде. Он вернется быстро. :) - person zarchasmpgmr; 17.08.2013
comment
Вы забыли часть... Это как кататься на велосипеде БЕЗ СИДЕНЬЯ! :-) - person mswanberg; 19.08.2013
comment
Кстати, обновление: динамический вызов сортировки также привел к S0C4, так что я вернулся к исходной точке. - person mswanberg; 19.08.2013
comment
Вы должны построить свое место на ассемблере. :) Где был S0C4? Я знаю, что вызов sort чреват ошибками и запутанными списками параметров. БДТЦ. Напишите мне в личную линию, если вы хотите снять это с SOflw - мое имя пользователя @ gee mail. - person zarchasmpgmr; 21.08.2013
comment
S0C4 был в SORT. В конце концов, я думаю, что мог бы просто использовать SORT в автономном режиме, чтобы КОПИРОВАТЬ любой набор данных AFP в тот, который является LRECL 30000, и просто использовать его. Ни один из моих файлов AFP не больше этого, и это должно удовлетворить потребности COBOL. Вся моя система скоро будет переведена на Unix, поэтому мне не хочется сейчас добавлять слишком много сложности. - person mswanberg; 23.08.2013
comment
Кстати, я предполагаю, что мой динамически созданный DD из BPXWDYN на самом деле не существует ни в одной вызываемой программе, и именно это вызывает S0C4. LE не похожа на большинство других сред, где ENV передается любым дочерним процессам. Или, может быть, я просто использую его неправильно. - person mswanberg; 23.08.2013
comment
О, вы упомянули LE. Фу. :) если серьезно, мне интересна вся серия слоев. Пожалуйста, напишите мне в Gmail. Может быть, мы сможем помочь какому-нибудь бедному человеку в будущем. :) - person zarchasmpgmr; 25.08.2013

Ваш вопрос не очень ясен, но мне интересно, следует ли вам рассмотреть возможность использования служебной программы ACIF под названием APKACIF вместо IEBGENR. Утилита объединит ваши данные и разрешит объекты AFP FORMDEF, PAGEDEF в набор данных или поток печати.

person MikeC    schedule 05.08.2013
comment
ACIF используется для разделения потока AFP на ресурсы, индексы и данные. Это не для печати. Тем не менее, ваше решение не решает проблему: динамический параметр FORMS= для печати. Дайте мне знать, что неясно, и я постараюсь исправить это, чтобы внести ясность. - person mswanberg; 06.08.2013
comment
На самом деле ACIF можно использовать для печати. ​​Мы часто использовали его для доставки AFP в интернет-браузер. Просто другой принтер. Те ресурсы, которые вы упомянули, оказались formdef/pagedef и OGL, связанными с потоком печати. Что мне показалось неясным, так это цель, которую вы стремились достичь. ACIF вполне может быть неуместным, но неясно, какова была ваша цель. Как есть, похоже, у вас есть подходящие ответы от других. Я не уверен, что могу что-то добавить. - person MikeC; 02.09.2013
comment
Я не согласен (что вы не можете ничего добавить). Я хотел бы услышать больше об использовании ACIF для печати. Что именно он делает и для чего он будет использоваться? - person mswanberg; 03.09.2013
comment
У IBM есть продукт, который устанавливается в веб-браузере. Вы можете поискать в Google подключаемый модуль IBM AFP Viewer. Вот ссылка, в которой обсуждается та же тема: pic.dhe.ibm.com/infocenter/zos/v1r12/ - person MikeC; 27.09.2013
comment
Мы использовали утилиту APKACIF для преобразования документа AFP в поток печати с захватом ресурсов в выходном наборе данных. Затем мы загружаем документ в двоичном режиме на рабочую станцию ​​(или сервер), где пользователь, у которого установлен плагин в веб-браузере, может получить документы и просмотреть их, как если бы они были напечатаны на бумаге. APKACIF также предоставляет услугу индексирования, чтобы вы могли выбирать определенные документы для просмотра. - person MikeC; 27.09.2013
comment
Я хорошо знаком с плагином AFP Viewer для IE. Я не использую его, потому что у меня есть надежный просмотрщик AFP, который отображает гораздо более точно (шрифты) и делает множество вещей, которые не будет использовать плагин IE (индексирование на лету и т. Д.). И я бы сказал, что вы используете ACIF не для печати, а для отделения ресурсов от изображений, а затем индексирования изображений для представления на веб-странице. Звучит очень глупо для меня. У нас есть архивная система, которая архивирует и индексирует AFP (используя записи TLE), а затем может с помощью вызова веб-службы на лету преобразовывать документ в PDF для онлайн-презентации. Очень просто. - person mswanberg; 28.09.2013
comment
Но, конечно, вышеизложенное не помогает мне печатать... просто отправлять данные в веб-браузер. - person mswanberg; 28.09.2013
comment
Как я уже сказал, у вас уже были предложения получше. Клуджи? Возможно. Этого было достаточно для наших нужд. - person MikeC; 30.09.2013