REXX

Получаем список файлов библиотеки в REXX

Буквально сегодня столкнулся с банальной задачей получения списка файлов в библиотеке при помощи REXX. Однако, поиск решения оказался несколько более сложным, чем казалось ранее =) Хотя решение и оказалось совсем простым.

Итак, смотрим код:

/*REXX*/
ADDRESS tso
INPUT  = 'полный путь библиотеки'
X = OUTTRAP(MEMS.)
"LISTDS '"INPUT"' MEM"
X = OUTTRAP(OFF)
DO I=7 TO MEMS.0
  MEMS.I = STRIP(MEMS.I)
  SAY 'MEMBER:'MEMS.I
END
EXIT

Список создается непосредственно в результате выполнения команды TSO LISTDS. Первые 6 строк результата - дополнительные данные, после которых следует список файлов.

Как Вы догадались, имена файлов достаются в цикле из массива MEMS.

Чтение DB2 таблиц из REXX

Сегодня я хочу рассказать Вам о том, как можно организовать работу с DB2, используя язык REXX.

Для выполнения SQL команд нужно использовать функцию DSNREXX. Пример использования:

/**********************************************************************/
/* Connect to DB2 system                                              */
/**********************************************************************/
ConnectDB2:
  ADDRESS DSNREXX 
  "CONNECT" db2sys
RETURN

Команда DSNREXX должна быть доступна для работы - это можно обеспечить так:

"SUBCOM DSNREXX"
IF RC THEN
   S_RC = RXSUBCOM('ADD','DSNREXX','DSNREXX')

Общая логика REXX программы, обращающейся к DB2, следующая:
1. Подключаемся к DB2 подсистеме
2. Выполняем DB2 команды
3. Отключаемся от DB2 подсистеме

Банально, не правда ли? =)

Итак, сам текст REXX программы, которой в качестве аргумента передается имя DB2 подсистемы:

/* REXX */
trace 'o'
Parse Upper Arg db2sys