Для случая, когда отсылка почты из задания - это не совсем подходящий вариант реализации задачи, можно использовать средства PL/I для отсылки корреспонденции.
В нашем распоряжении имеется JES SPOOL API, и именно ее мы и будем использовать.
Для работы необходимо объявить следующие структуры:
DCL 1 CHNG_OPTIONS, 3 LL FIXED BIN (31), 3 ZZ FIXED BIN (15) INIT (0), 3 TEXT1 CHAR (14) INIT ('IAFP=N0M,PRTO='), 3 CHNG_CMD CHAR (34) VARYING, LEN FIXED BIN (15) BASED (ADDR(CHNG_CMD)); CHNG_OPTIONS.LL = CSTG(CHNG_OPTIONS)-2; DCL 1 CHNG_FEEDBACK, 3 LEN FIXED BIN (31) INIT (104), 3 ZZ FIXED BIN (15) INIT (0), 3 TEXT CHAR (100) INIT (''); DCL 1 PROFS_DATA, 3 BDWLEN FIXED BIN (31), 3 BDWZZ FIXED BIN (15) INIT (0), 3 MESSAGE_LINE(60), 5 LENGTH FIXED BIN (15), 5 ZZ FIXED BIN (15) INIT ((60)(0)), 5 TEXT CHAR (84);
CHNG_OPTIONS будет использоваться для передачи параметров для JES SPOOL API в расширенной CHNG команде.
CHNG_FEEDBACK будет содержать ответ от JES SPOOL API.
PROFS_DATA будет содержать данные, пересылаемые на почту.
Итак, для начала заполним структуру с опциями:
PROFS_NODE = 'IBMMAIL'; PROFS_ID = 'INTERNET'; PRFNODEV = SUBSTR(PROFS_NODE,1,INDEX(PROFS_NODE || ' ',' ')-1); PROFSIDV = SUBSTR(PROFS_ID,1,INDEX(PROFS_ID || ' ',' ')-1); CHNG_CMD='DEST(' || PRFNODEV || '.' || PROFSIDV || '),CLASS(B) ';
Дальнейшая логика работы проста до невозможности:
1) Выполняем CHNG команду, используя альтернативный PCB
2) Заполняем структуру с данными для отсылки
3) Выполняем ISRT и PURG команда, отсылая подготовленные данные
CALL PLITDLI(#5, 'CHNG', MOD_PCB, ' ', CHNG_OPTIONS, CHNG_FEEDBACK); CALL FILL_MESSAGE_STRUCTURE(); CALL PLITDLI(#3, 'ISRT', MOD_PCB, ADDR(PROFS_DATA)); CALL PLITDLI(#2, 'PURG', MOD_PCB);
Процедура заполнения текста письма выглядит следующим образом:
FILL_MESSAGE_STRUCTURE: PROC; DCL COUNT FIXED BIN(31); PROFS_DATA = ''; PROFS_DATA.BDWLEN=CSTG(PROFS_DATA)-2; DO COUNT=1 TO 60; PROFS_DATA.MESSAGE_LINE(COUNT).LENGTH= CSTG(PROFS_DATA.MESSAGE_LINE(COUNT)); PROFS_DATA.MESSAGE_LINE(COUNT).TEXT=''; END; PROFS_DATA.MESSAGE_LINE(1).TEXT = '/INTERNET'; PROFS_DATA.MESSAGE_LINE(2).TEXT = '/TO ' || 'адрес получателя'; PROFS_DATA.MESSAGE_LINE(3).TEXT = '/SUBJECT ' || 'заголовок письма'; PROFS_DATA.MESSAGE_LINE(4).TEXT = '/END'; PROFS_DATA.MESSAGE_LINE(5).TEXT = 'Первая строка с телом письма'; END FILL_MESSAGE_STRUCTURE;
Последующие элементы массива PROFS_DATA.MESSAGE_LINE.TEXT (6 и так далее до предела, установленного при объявлении структуры - в данном случае 60) нужно последовательно заполнять строками отсылаемого письма.
Для запуска можно использовать задание, аналогичное тому, которое использовалось в публикации Отсылка IMS триггеров из PL/I. PSB так же можно использовать из предыдущего примера.
Добрый день! Не совсем
Добрый день!
Не совсем понятно какой job на компиляцию/линковку/исплднение
если можно, скиньте его kolyachkoandrew@gmail.com
Компиляция/ликновка -
Компиляция/ликновка - средствами SCLM, с параметрами по умолчанию. Задание на исполнение тоже без доп. параметров. То есть все 1 к 1 с другими программами, которые не используют JES SPOOL API
спасибо
спасибо
Отправить комментарий