# Easytrieve

EASYTRIEVE (Classic e Plus) é uma linguagem de programação de Terceira Geração, projetado para simplificar as tarefas típicas de programação, utilizada principalmente em sistemas comerciais, financeiros e administrativos para empresas e governos. É uma linguagem de programação, com recursos para acesso a arquivos e bases de dados, com comandos que trazem bastante facilidade principalmente para a geração de relatórios.

## Fundamentos da Linguagem

É uma linguagem imperativa projetada para tornar mais fácil a manipulação de arquivos e produção de relatórios. É recomendado para iniciantes em técnicas de processamento de dados, pois possui uma assimilação fácil. Em geral, um programa Easytrieve pode aceitar arquivos de entrada múltiplo (SAM / ISAM / VSAM), acesso a bancos de dados (TMF / ADABAS/DB2), realizar a manipulação de arquivos (leitura / gravação / tipo), dados do processo (alfanumérico / numérico / acondicionado / binário), e invocar programas em COBOL e Assembler.

## Classic v. Plus

Easytrieve (ou Easytrieve classic) é a primeira iteração da série Easytrieve e exige que o programador use uma estrutura rígida de programa e sintaxe. A segunda iteração Easytrieve era originalmente um produto independente, foi rebatizado como Easytrieve Plus. Easytrieve Plus inclui mudanças na estrutura do programa e sintaxe, o que torna muito mais poderoso e com uma iteração mais amigável com o programador. Easytrieve pode ser executado em mainframes ( z / OS , z / VM , z / VSE ), UNIX , Linux e Sistemas da Microsoft Windows

## Similaridade com Cobol

A sintaxe de um programa Easytrieve é ​​muito semelhante ao COBOL. Eles compartilham muitas palavras dos mesmos tipos de dados e reservado, como "MOVE", "ADD", "SUBTRACT", "MULTIPLY", "DIVIDE", "CALL", "CASE", and "IF". Além disso, as "PROCEDURES" podem serem criadas em Easytrieve para permitir a funcionalidade modularizada.
Podemos citar algumas diferenças entre os dois, como: a definição de variável, a leitura de arquivos e geração de relatórios. Como COBOL, o Easytrieve tem muitos dos mesmos tipos de variáveis ​​(alfanumérico, numérico, binário, compactado, etc). A maior diferença é que Easytrieve não usa números de nível.
Leitura de arquivos de entrada é feita muito mais fácil em Easytrieve porque o processo é automatizado. O programador apenas referencia as variáveis ​​a serem utilizadas. Easytrieve lê automaticamente a próxima linha e a lógica se repete.
Gerar um relatório é simples em Easytrieve. O programador pode especificar cada detalhe de um relatório, incluindo seus títulos, campos, espaçamento, a ordem de classificação, quebras de controle, etc.

## Estrutura da Linguagem

Cada programa Easytrieve contém a seguinte estrutura:
* ENVIRONMENT SECTION: Nesta parte, são estabelecidos os parâmetros para o programa. Uma área, opcional, de Ambiente (Environment), onde serão descritas as características de ambiente de instalação do Easytrieve. Também utilizada para estabilizar parâmetros do programa modificar as opções padrões de instalação e modalidade de operação.
* LIBRARY SECTION: Uma área, opcional, de Dados (Library), onde serão descritos os dados a serem processados pelo programa, os arquivos a serem utilizados, os campos associados e também qualquer campo de área de trabalho (auxiliares).
* ACTIVITY SECTION: Uma área, obrigatória, de Atividades (Activity), onde se define a lógica do programa, mais precisamente:
** Lê informações dos arquivos;
** Examina e manipula dados;
** gravação de dados em arquivos;
** impressão de relatórios;

## Convenções da Linguagem

* Letras Minúsculas – especificam valores que devem ser substituídos.
* Letras Maiúsculas – Palavras-chaves. Devem ser codificadas exatamente como aparecem.
* {chaves} - Um dos parâmetros indicados entre elas deve ser informado.
* [colchetes] – Indica parâmetros opcionais.
* ... - Reticências: indicam que o(s) parâmetro(s) anterior(es) a elas pode(m) ser repetido(s) várias vezes.
* W/S - campos iniciados com W ou S indicam que a variável é auxiliar (Ex: W-VALOR ou S-VALOR)

## Tipos de Variáveis

| Tipo | Descrição | Tamanho Máximo (em bytes) | Número de posições decimais |
| A | Alfanumérico | 254 | Inválido |
| N | Numérico | 18 | 0 a 18 |
| P | Compactado | 10 | 0 a 18 |
| B | Binário | 4 | 0 a 10 |
| U | Compactado sem sinal | 9 | 0 a 18 |

## Exemplos de Código
### Hello World

Outra forma:

### Programa Exemplo 001 - Programa completo

JOB DE EXECUÇÃO:
Na estrutura de um programa em Easytrieve, o que caracteriza a parte de procedimentos é um conjunto de ATIVIDADES, Cada atividade é declarada através de um statement JOB. Ou seja, é através de um JOB que executamos o nosso programa, onde definimos o tipo do programa que será executado(Easytrieve), qual será do programa a ser executado, da onde virão seus dados de entrada e onde serão gravados os dados de saída.
* Job explicativo para execução do Easytrieve.
PROGRAMA EXEMPLO 001
Na imagem abaixo temos um simples exemplo de um programa em Easytrieve, onde passamos os dados de entrada no próprio JOB e gravamos na saída, onde poderá ser visto na "SYSREL".
* Programa em Easytrieve.
Para melhor compreensão, veja as saídas em relatório produzidas pelo programa :
| SYSREL. | SYSPRINT. |