Конвейеры CMS - CMS Pipelines

Трубопроводы
Pipjarg1.jpeg
ПарадигмаПрограммирование потока данных
РазработаноДжон П. Хартманн (IBM )
РазработчикIBM
Впервые появился1986
Стабильный выпуск
1.1.12/0012 / 2020-06-03
ПлатформаIBM z Systems
Операционные системыz / VM 7.1
Интернет сайтhttp://vm.marist.edu/~pipeline
Под влиянием
Конвейер (Unix)

Конвейеры CMS реализует трубопровод концепция под ВМ / CMS Операционная система. Программы в конвейере работают с последовательным потоком записей. Программа записывает записи, которые считываются следующей программой в конвейере. Любую программу можно комбинировать с любой другой, потому что чтение и запись выполняются через интерфейс, не зависящий от устройства.

Обзор

Конвейеры CMS предоставляет команду CMS, ТРУБА. Строка аргумента команды PIPE - это спецификация конвейера. PIPE выбирает программы для запуска и объединяет их в конвейер для прокачки данных.

Поскольку программы и утилиты CMS не обеспечивают независимость от устройства стандартный ввод и стандартный вывод интерфейс, Конвейеры CMS имеет встроенную библиотеку программ, которую можно вызывать в спецификации конвейера. Эти встроенные программы взаимодействуют с операционной системой и выполняют множество служебных функций.

Данные на CMS структурированы в виде логических записей, а не потока байтов. Для текстовых данных строка текста соответствует логической записи. В Конвейеры CMS данные передаются между этапами как логические записи.

CMS Пользователи конвейеров выдают команды конвейера с терминала или в процедурах EXEC. Пользователи могут писать программы на REXX которые можно использовать в дополнение к встроенным программам.

пример

Простой пример, который читает файл с диска, отделяет записи, содержащие строку «Hello», от тех, которые этого не делают. Выбранные записи изменяются путем добавления строки «World!» каждому из них; остальные записи переводятся в верхний регистр. Затем два потока объединяются, и записи записываются в новый выходной файл.

ТРУБА (конец?)  новый файл txt a? а: | xlate верхний | я:

В этом примере < stage читает файл входного диска и передает записи следующему этапу конвейера. В найти stage разделяет входной поток на два выходных потока. Первичный выход найти (записи, содержащие Hello) передает записи в вставить сцена. В вставить stage изменяет входные записи, как указано в его аргументах, и передает их на свой выход. Выход подключен к Faninany который объединяет записи из всех входных потоков в единый выходной поток. Вывод записывается в новый дисковый файл.

Вторичный выпуск найти (отмечен вторым появлением а: label) содержит записи, не соответствующие критерию выбора. Эти записи переводятся в верхний регистр ( xlate stage) и передается во вторичный входной поток Faninany (отмечен вторым появлением я: метка).

Топология конвейера в этом примере состоит из двух связанных конвейеров. В конечный символ? в этом примере) разделяет отдельные конвейеры в наборе конвейеров. Записи, прочитанные из входного файла, проходят через любой из двух маршрутов топологии конвейера. Поскольку ни один из маршрутов не содержит этапов, требующих буферизации записей, Конвейеры CMS обеспечивает поступление записей в Faninany в том порядке, в котором они прошли найти.

Пример конвейера представлен в «портретной форме» с отдельными этапами на отдельных строках. Когда конвейер набирается как команда CMS, все этапы записываются в одной строке.

особенности

Концепция простого конвейера расширяется следующим образом:

  • Программа может определить конвейер подпрограмм для выполнения функции для всех или части входных данных.
  • Можно определить сеть пересекающихся трубопроводов. Программы могут находиться в нескольких конвейерах одновременно, что дает программе доступ к нескольким потокам данных.
  • Данные, передаваемые от одного этапа к другому, структурируются как записи. Это позволяет этапам работать с одной записью без необходимости произвольной буферизации данных для сканирования специальных символов, разделяющих отдельные строки.
  • Этапы обычно обращаются к входной записи в режиме поиска и создают выходные записи перед тем, как использовать входную запись. Такой подход с пошаговой блокировкой не только позволяет избежать копирования данных из одного буфера в другой; это также позволяет прогнозировать поток записей в многопоточных конвейерах.
  • Программа может динамически переопределять топологию конвейера. Он может заменить себя другим конвейером, он может вставить сегмент конвейера до или после себя, или и то, и другое. Программа может использовать данные в конвейере для построения спецификаций конвейера.

Конвейеры CMS предлагает несколько функций для повышения надежности программ:

  • Синтаксическая ошибка в общей структуре конвейера или в какой-либо одной программе приводит к подавлению всего конвейера.
  • Запуск программ в конвейере и распределение ресурсов координируется Конвейеры CMS диспетчер. Отдельные программы могут участвовать в этой координации, чтобы гарантировать, что необратимые действия будут отложены до момента, когда все программы в конвейерах получили возможность проверить аргументы и были готовы обрабатывать данные. Когда конвейер завершается, диспетчер снова обеспечивает высвобождение ресурсов.
  • Ошибки, возникающие во время потока данных в конвейере, могут быть обнаружены всеми участвующими программами. Например, в таких обстоятельствах нельзя заменить файл на диске.

История

Джон Хартманн из IBM в Дании начал разработку Конвейеры CMS в 1980 г.[1] Продукт был продан IBM как отдельный продукт в 80-х годах и интегрированный в VM / ESA в конце 1991 года. С каждым выпуском VM Конвейеры CMS код также был обновлен до тех пор, пока он не был функционально заморожен на уровне 1.1.10 в VM / ESA 2.3 в 1997 году. С тех пор последний уровень Конвейеры CMS был доступен для загрузки с Домашняя страница CMS Pipelines для пользователей, желающих изучить новую функцию.

Текущий уровень Конвейеры CMS снова включен в выпуски z / VM, начиная с версии z / VM 6.4, доступной с 11 ноября 2016 г.

Реализация Конвейеры CMS для TSO был выпущен в 1995 году как BatchPipeWorks в BatchPipes / MVS товар. Современная реализация TSO была доступна в качестве предложения услуг от IBM в Дании до 2010 года.

Обе версии поддерживаются из единой базы исходного кода и обычно называются CMS / TSO конвейеры. Спецификация доступна в авторской редакции.[2]

Смотрите также

использованная литература

внешние ссылки