DEV Community 👩‍💻👨‍💻

Cover image for Mainframe vs Distribuída - parte I - Ambiente
rogeriosug
rogeriosug

Posted on • Updated on

Mainframe vs Distribuída - parte I - Ambiente

 

Desenvolvedores que trabalham exclusivamente com mainframe podem sentir alguns impactos quando começam a explorar o universo da computação distribuída.

Este post é o primeiro de uma série para auxiliar os devs nesta transição e perceberem que muitos dos conceitos conhecidos no mainframe estão presentes na distribuída: mudam-se a panela e o fogão, mas o sabor da comida continua o mesmo.


Sobre esta série de posts

Nome inspirado em famoso filme dos anos 80, a ideia do "Retroceder nunca, Abendar jamais" é abordar a relação de conceitos comuns entre mainframe e distribuída. Nas situações que não forem possíveis fazer um de-para, a abordagem será trazer conceitos que sejam próximos.

O objetivo final é apresentar nomenclaturas utilizadas na baixa plataforma e que na alta plataforma possuem outros nomes e, assim, facilitar a transição de quem quer conhecer mais sobre outras tecnologias.

Este texto não tem a intenção de ser um guia exaustivo de conversão dos conceitos da alta plataforma para a baixa, ele tem o objetivo de dar algumas noções iniciais e auxiliar nos estudos. Nos comentários abaixo, fiquem à vontade para sugerir correções e complementar com mais informações.

No final existe um glossário e também um índice com os tópicos da série. Esta série está em evolução e novos tópicos surgirão.


Ambiente

 

Sistema Operacional

Todo hardware precisa de um sistema operacional que possa gerir os recursos disponíveis. No mainframe são conhecidos o MVS, OS/390 e atualmente um dos mais predominante é o z/OS.

Na distribuída, atualmente, os mais conhecidos são o Windows, Linux e macOS.

A grande diferença é a arquitetura: no mainframe os usuários interagem com o sistema operacional em sessões virtuais através de terminais como os emuladores de terminais 3270. Já na distribuída os usuários interagem diretamente com o sistema operacional.

Existem funcionalidades comuns entre os sistemas operacionais, por exemplo da mesma maneira que o z/OS possui o RACF que gerencia permissões de autenticação e acesso, os sistemas operacionais da distribuída também possuem a implementação desta funcionalidade. Este mesmo conceito de segurança também existe nas plataformas de cloud, como o IAM da AWS.

 

Interface gráfica e não tão gráfica

No mainframe, assim que o desenvolvedor faz login no TSO, ele pode invocar linhas de comando como CLIST e REXX ou então pode chamar uma interface como o ISPF (ou PDF). Outra interface conhecida no mainframe é o ROSCOE.

Menu Utilities Compilers Options  Status  Help
------------------------------------------------------------------------------
                           ISPF Primary Option Menu
Option ===>

0  Settings      Terminal and user parameters            User ID .: USER
1  View          Display source data or listings         Time. . .: 00:00
2  Edit          Create or change source data            Terminal.: 3278
3  Utilities     Perform utility functions               Screen. .: 1
4  Foreground    Interactive language processing         Language.: ENGLISH
5  Batch         Submit job for language processing      Appl ID .: PDF
6  Command       Enter TSO or Workstation commands       TSO logon: ACCT
7  Dialog Test   Perform dialog testing                  TSOprefix: USER
8  LM Facility   Library administrator functions         System ID: SC04
9  IBM Products  IBM program development products        MVS acct.: ACCNT#
10 SCLM          SW Configuration Library Manager        Release .: ISPF 5.2
11 Workplace     ISPF Object/Action Workplace
M  More          Additional IBM Products

Enter X to Terminate using log/list defaults

F1=Help F2=Split F3=Exit F7=Backward F8=Forward F9=Swap F10=Actions F12=Cancel
Enter fullscreen mode Exit fullscreen mode

Ao fazer um paralelo com a distribuída, existem as interfaces conhecidas por terminais que permitem interagir por linha de comando da mesma maneira que o TSO faz
E paralelo ao ISPF existem as interfaces gráficas, também conhecidas como GUI (Graphical User Interface), que são as telas em "janelas" que estamos acostumados a utilizar no dia-a-dia no Windows, Mac ou Linux.

Exemplos de terminais de linha de comando são: bash, sh, powershell, entre outros.
bash example

Exemplo de interface gráfica:
macOS graphical interface example

Existem outras funcionalidades semelhantes entre os dois mundos. Tanto o sistema operacional do mainframe quanto os da distribuída possuem gerenciadores de arquivos ou, no caso do mainframe, datasets. No ISPF os datasets podem ser visualizados na opção 1 (View) ou então na opção 3.4 (Utilities > DSLIST)

--------------------------  UTILITY SELECTION MENU  ----------------------------
OPTION ===> 4

    1  LIBRARY     - Compress or print data set.  Print index listing.
                       Print, rename, delete, or browse members
    2  DATASET     - Allocate, rename, delete, catalog, uncatalog, or
                       display information of an entire data set
    3  MOVE/COPY   - Move, copy, or promote members or data sets
    4  DSLIST      - Print or display (to process) list of data set names
                       Print or display VTOC information
    5  RESET       - Reset statistics for members of ISPF library
    6  HARDCOPY    - Initiate hardcopy output
    8  OUTLIST     - Display, delete or print held job output
    9  COMMANDS    - Create/change an application command table
   10  CONVERT     - Convert old format messages/menu panels to new format
   11  FORMAT      - Format definition for formatted data Edit/Browse
   12  SUPERC      - Compare data sets (Standard dialog)
   13  SUPERCE     - Compare data sets (Extended dialog)
   14  SEARCH-FOR  - Search data sets for strings of data
Enter fullscreen mode Exit fullscreen mode
-----------------------------  DATA SET LIST UTILITY  --------------------------
OPTION ===>

  blank - Display data set list *              P  - Print data set list
  V     - Display VTOC information only        PV - Print VTOC information only

Enter one or both of the parameters below:
  DSNAME LEVEL  ===>  PREFIX
  VOLUME        ===>


  INITIAL DISPLAY VIEW   ===>  VOLUME  (VOLUME,SPACE,ATTRIB,TOTAL)
  CONFIRM DELETE REQUEST ===>  YES    (YES or NO)

* The following line commands will be available when the list is displayed

B - Browse data set        C - Catalog data set        F - Free unused space
E - Edit data set          U - Uncatalog data set      = - Repeat last command
D - Delete data set        P - Print entire data set
R - Rename data set        X - Print index listing
I - Data set information   M - Display member list
S - Information (short)    Z - Compress data set       TSO command or CLIST
Enter fullscreen mode Exit fullscreen mode
DSLIST - DATA SETS BEGINNING WITH PREFIX ---------------------------  ROW 1 OF 9
COMMAND ===>                                                    SCROLL ===> PAGE
COMMAND      NAME                                      MESSAGE            VOLUME
-------------------------------------------------------------------------------
         PREFIX.$10$09$5                                                  MAR87B
         PREFIX.$15$38$5                                                  OCT87A
         PREFIX.ABDRVR7.ISPPLIB                                           FEB87B
         PREFIX.CURRENT.BILLS                                             TSO007
         PREFIX.MEMO.TEXT                                                 NOV87C
         PREFIX.MY.CLIST                                                  TSO005
         PREFIX.SAMPLE.TEXT                                               MIGRAT
         PREFIX.TEST.COBOL                                                MIGRAT
         PREFIX.TEST.DATA                                                 NOV87C
*************************** END OF DATA SET LIST *******************************
Enter fullscreen mode Exit fullscreen mode

De forma semelhante podemos visualizar os arquivos na distribuída tanto pela linha de comando (bash) ...
Image description

... quanto pela interface gráfica

Image description

Spoiler: não se preocupe com os comandos do terminal por enquanto, voltaremos nele futuramente

Aqui vale destacar a diferença estrutural entre datasets (mainframe) e arquivos (distribuída):

datasets: são formado por qualificadores de no máximo 8 caracteres e separados por "." (ponto) e o tamanho máximo do nome não pode exceder 44 caracteres. Exemplo: USERZOS.ARQUIVO.TESTE.EXEMPLO. Os datasets ainda podem ser PARTITIONED e permitem ter MEMBERS dentro deles, na distribuída, é como se fossem arquivos dentro de uma pasta

 

arquivos: são estruturados em pastas e sub-pastas. Os nomes dos arquivos geralmente são compostos por um prefixo e um sufixo (extensão), onde este sufixo indica o tipo de arquivo (.exe, .txt, .sh, .jpeg, .mp3).

Não é obrigatório que um arquivo tenha prefixo ou um sufixo, mas precisa pelo menos ter um deles. Exemplo: /pasta/sub-pasta/arquivo.txt, /pasta/sub-pasta/.gitignore, /pasta/sub-pasta/config


Como podemos ver, existem muitas similaridades entre as plataformas alta e baixa. Explore e faça este exercício.

Esta primeira parte da série é apenas para quebrar o gelo e abrir caminho para conhecermos outros conceitos em comum.

Nos próximos posts veremos que ferramentas de terceiros ou built-in do mainframe também possuem um similar na distribuída. Exemplos destas ferramentas são o CHANGEMAN, ENDEVOR, TSO EDITOR, DFSORT, FILE-AID, IEFBR14, ICEGENER, EASYTRIEVE, entre outras.

Mudam-se a panela e o fogão, mas o sabor da comida continua o mesmo.


Glossário

baixa plataforma: computação distribuída
alta plataforma: mainframe


Índice

  • Ambiente (este post)
  • Ferramentas
  • Linguagens de programação. Exemplo: Cobol vs Python (em breve)
  • Setup de ambiente Python: Hello World! (em breve)

Top comments (0)

Image description

Join the One Year Club

You can earn this badge by being a registered member of the DEV Community for at least one year. Create an account and get started today.