Pipelines CMS - CMS Pipelines

Pipelines
Pipjarg1.jpeg
Paradigma Programação de fluxo de dados
Projetado por John P. Hartmann ( IBM )
Desenvolvedor IBM
Apareceu pela primeira vez 1986
Versão estável
1.1.12 / 0012 / 2020-06-03
Plataforma IBM z Systems
SO z / VM 7.1
Local na rede Internet http://vm.marist.edu/~pipeline
Influenciado por
Pipeline (Unix)

CMS Pipelines implementa o conceito de pipeline no sistema operacional VM / CMS . Os programas em um pipeline operam em um fluxo sequencial de registros. Um programa grava registros que são lidos pelo próximo programa no pipeline. Qualquer programa pode ser combinado com qualquer outro porque a leitura e a escrita são feitas por meio de uma interface independente do dispositivo.

Visão geral

CMS Pipelines fornece um comando CMS PIPE ,. A string do argumento para o PIPE comando é a especificação do pipeline. O PIPE seleciona programas a serem executados e os encadeia em um pipeline para bombear os dados.

Como os programas e utilitários CMS não fornecem uma interface stdin e stdout independente de dispositivo , o CMS Pipelines possui uma biblioteca interna de programas que podem ser chamados em uma especificação de pipeline. Esses programas integrados fazem interface com o sistema operacional e executam muitas funções utilitárias.

Os dados no CMS são estruturados em registros lógicos, em vez de um fluxo de bytes. Para dados textuais, uma linha de texto corresponde a um registro lógico. Em CMS Pipelines, os dados são passados ​​entre os estágios como registros lógicos.

Os usuários de CMS Pipelines emitem comandos de pipeline a partir do terminal ou em procedimentos EXEC. Os usuários podem escrever programas em REXX que podem ser usados ​​além dos programas integrados.

Exemplo

Um exemplo simples que lê um arquivo em disco, separa os registros que contêm a string "Hello" daqueles que não o fazem. Os registros selecionados são modificados acrescentando-se a string "Mundo!" para cada um deles; os outros registros são traduzidos para maiúsculas. Os dois fluxos são então combinados e os registros são gravados em um novo arquivo de saída.

PIPE (end ?) 
         < input txt 
       | a: locate /Hello/ 
       | insert / World!/ after
       | i: faninany
       | > newfile txt a
       ? a:
       | xlate upper
       | i:

Neste exemplo, o < estágio lê o arquivo de disco de entrada e passa os registros para o próximo estágio no pipeline. O locate estágio separa o fluxo de entrada em dois fluxos de saída. A saída primária de locate (registros contendo Hello) passa os registros para o insert palco. O insert estágio modifica os registros de entrada conforme especificado em seus argumentos e os passa para sua saída. A saída é conectada ao faninany que combina registros de todos os fluxos de entrada para formar um único fluxo de saída. A saída é gravada no novo arquivo de disco.

A saída secundária de locate (marcada pela segunda ocorrência do a: rótulo) contém os registros que não atenderam ao critério de seleção. Esses registros são traduzidos para maiúsculas (pelo xlate estágio) e passados ​​para o fluxo de entrada secundário de faninany (marcado pela segunda ocorrência do i: rótulo).

A topologia de pipeline neste exemplo consiste em dois pipelines conectados. O caractere final ( ? neste exemplo) separa os pipelines individuais no conjunto de pipelines. Os registros lidos do arquivo de entrada passam por qualquer uma das duas rotas da topologia do pipeline. Como nenhuma das rotas contém estágios que precisam armazenar registros em buffer, o CMS Pipelines garante que os registros cheguem na faninany ordem em que passaram locate .

O pipeline de exemplo é apresentado em 'forma de retrato' com os estágios individuais em linhas separadas. Quando um pipeline é digitado como um comando CMS, todos os estágios são escritos em uma única linha.

Características

O conceito de um pipeline simples é estendido das seguintes maneiras:

  • Um programa pode definir um pipeline de sub-rotina para executar uma função em todos ou em parte de seus dados de entrada.
  • Uma rede de pipelines que se cruzam pode ser definida. Os programas podem estar em vários pipelines simultaneamente, o que dá ao programa acesso a vários fluxos de dados.
  • Os dados passados ​​de um estágio para o próximo são estruturados como registros. Isso permite que os estágios operem em um único registro sem a necessidade de buffer arbitrário de dados para procurar caracteres especiais que separam as linhas individuais.
  • Os estágios normalmente acessam o registro de entrada no modo de localização e produzem os registros de saída antes de consumir o registro de entrada. Essa abordagem de etapa de bloqueio não apenas evita copiar os dados de um buffer para o próximo; também torna possível prever o fluxo de registros em pipelines de vários fluxos.
  • Um programa pode redefinir dinamicamente a topologia do pipeline. Ele pode se substituir por outro pipeline, pode inserir um segmento de pipeline antes ou depois de si mesmo, ou ambos. Um programa pode usar dados no pipeline para construir especificações de pipeline.

CMS Pipelines oferece vários recursos para melhorar a robustez dos programas:

  • Um erro de sintaxe na estrutura geral do pipeline ou em qualquer programa faz com que todo o pipeline seja suprimido.
  • O início dos programas no pipeline e a alocação dos recursos são coordenados pelo despachante do CMS Pipelines . Os programas individuais podem participar dessa coordenação para garantir que ações irreversíveis sejam adiadas até um ponto em que todos os programas nos pipelines tenham a chance de verificar os argumentos e estejam prontos para processar os dados. Quando o pipeline é encerrado, o despachante garante que os recursos sejam liberados novamente.
  • Erros que ocorrem durante o fluxo de dados no pipeline podem ser detectados por todos os programas participantes. Por exemplo, um arquivo de disco não pode ser substituído em tais circunstâncias.

História

John Hartmann, da IBM Dinamarca, iniciou o desenvolvimento de CMS Pipelines em 1980. O produto foi comercializado pela IBM como um produto separado durante os anos 80 e integrado no VM / ESA no final de 1991. Com cada lançamento do VM, o código do CMS Pipelines foi atualizado conforme bem até que foi funcionalmente congelado no nível 1.1.10 no VM / ESA 2.3 em 1997. Desde então, o nível mais recente do CMS Pipelines está disponível para download na página inicial do CMS Pipelines para usuários que desejam explorar a nova função.

O nível atual de CMS Pipelines está incluído nas versões z / VM novamente desde z / VM 6.4, disponível desde 11 de novembro de 2016.

Uma implementação de CMS Pipelines para TSO foi lançada em 1995 como BatchPipeWorks no produto BatchPipes / MVS . A implementação atualizada do TSO está disponível como uma Oferta de Serviço da IBM Dinamarca até 2010.

Ambas as versões são mantidas a partir de uma única base de código-fonte e comumente chamadas de CMS / TSO Pipelines . A especificação está disponível na edição do autor.

Veja também

Referências

  1. ^ VM e a comunidade VM, Melinda Varian
  2. ^ CMS / TSO Pipelines Edição do Autor Edição do Autor

links externos