AS/400 Capítulo 5: Ficheiros Físicos

Pode usar ficheiros físicos para definir tabelas, criar código executável, etc. Vamos ver agora os aspectos básicos necessários para trabalhar com ficheiros.

Após a criação de uma tabela em SQL vamos criar as restantes com código DDS.

Os ficheiros de sources são ficheiros que podem ter vários membros. Cada membro representa o código fonte de um objecto executável ou um objecto executável.

Podemos dizer que um ficheiro de sources é uma especie de pasta onde organizamos os vários ficheiros com o código propriamente dito e com os respectivos objectos executáveis (isto depois de se terem compilado os ficheiros fonte).

Por convenção os ficheiros source seguem um certo padrão:

  • QRPGLESRC – ficheiro que guarda os membros escritos em linguagem RPG-ILE
  • QDDSSRC – guarda os membros escritos em DDS
  • QRPGSRC – ficheiro que guarda os membros escritos na linguagem RPG tradicional.

Como é possivel ver os nomes começam sempre por Q e terminam em SRC. Não é obrigatório seguir estas definições, nem existe nenhum problema ao nível do sistema se existir, por exemplo, um membro RPG no ficheiro QDDSSRC, mas por uma questão de organização e por ser uma convenção plenamente estabelecida é aconselhável segui-la.

Vamos então criar o nosso ficheiro de sources de DDS para depois criarmos a nossas tabelas.

CRTSRCPF FILE(DEMO/QDDSSRC)

Se se encontrar na biblioteca DEMO não precisa especificá-la, escreva apenas o nome do ficheiro.

PDM (Programming Development Manager)

Vamos agora usar o utilitário PDM que nos ajuda a criar o código fonte e compilá-lo. O PDM utiliza o editor de texto SEU (Source Entry Utility), que mais à frente veremos como utilizar.

STRPDM

Deve surgir um ecrã semelhante a este:

Ecrã do PDM
Ecrã do PDM

Escolha a opção '3. Work with members', pois vamos criar alguns membros do ficheiro QDDSSRC. A opção 2 permite trabalhar com objectos executáveis e a 1 com bibliotecas.

O menu seguinte pede-lhe o nome do ficheiro com que pretende trabalhar e a biblioteca onde este se encontra. Insira QDDSSRC no ficheiro e DEMO na biblioteca.

Note que apesar de no PDM estar a ver ficheiro de uma dada biblioteca não está necessariamente colocado dentro dela. Pode estar na biblioteca DEMO1 a ver ficheiros da biblioteca DEMO2, por exemplo.

Criar ficheiro de sources
Criar ficheiro de sources

Deve-lhe surgir o menu onde pode encontrar todas as opções para trabalhar com os membros do ficheiro.

Listagem do ficheiro de sources
Listagem do ficheiro de sources

Vamos então criar o nosso primeiro membro. Carregue em F6 (como pode ver nas opções em baixo “F6=Create”). Escreva os dados como vê na imagem em baixo:

Criar um membro
Criar um membro

Trabalhar com o SEU (Source Entry Utility)

Ecrã do SEU:

Ecrã do SEU
Ecrã do SEU

A linguagem DDS e RPG são linguagens posicionais o que significa que cada elemento têm uma linha e coluna específica onde deve ser colocado. No entanto, o SEU dá uma ajuda a colocar cada opção no seu lugar. Se colocar o cursor numa linha qualquer e carregar F4 aparecer-lhe-á um prompt como o da figura seguinte onde puderá por os valores directamente e o SEU faz a colocação de cada campo no sítio correcto. Se quiser fechar o prompt carregue F12.

Trabalhar com SEU
Trabalhar com SEU

Inserir nova linha

Coloque um caracter 'i', sem plicas, em qualquer posição da coluna numerada à esquerda. Ao carregar ENTER é inserida uma nova linha imediatamente abaixo.

Apagar uma linha

Escreva o carácter 'd', sem plicas, em qualquer posição da coluna numerada à esquerda e prima ENTER.

Apagar um conjunto de linhas

Para apagar um conjunto de linhas seguidas de uma só vez insira, na coluna numerada à esquerda, 'dd' na primeira linha que quer apagar e na última, prima ENTER .

Sintaxe DDS

Vamos começar por definir o ficheiro SHOPS como está em baixo e de seguida apresenta-se detalhadamente as instruções linha a linha.

                                          UNIQUE
 R SHOPR
    ID_SHP              10P
    NAME_SHP            25A
   MANAGER_SH           50A
K ID_SHP

Linha 1

Temos de especificar o comando UNIQUE para a primeira linha da definição da tabela, para nos certificarmos que a chave primária tem um valor único para cada registo. Carregue em F4 e escreva unique no campo functions.

Linha 2

Definição do tipo de registo do ficheiro. O tipo de registo serve para identificar todas os campos do ficheiro, vamos ver um exemplo do seu uso mais à frente nos display files. Insira uma nova linha como explicado anteriormente e carrega em F4 novamente. A letra 'R' deve constar no campo Name Type e SHOPR no Name.

Linhas 3, 4 e 5

Definem os campos da tabela. Na linha 3, por exemplo, ID_SHP é o Name, 10 é a Length do campo (deve estar alinhado à direita), P é o tipo de dados que vão ser guardados (Data Type), neste caso um valor numérico.

Os tipos de dados mais comuns:

Para mais informações sobre os tipos de dados carregue em F1 quando tiver o cursor no campo Data Type.Ou consulte a Referência ILE RPG.

Linha 6

Definição do campo chave, com 'K' no Name Type e o nome do campo exactamente como foi definido acima no campo Name. Para definir mais que uma chave basta definir uma linha começada por 'K' para cada uma das chaves.

Quando tiver o seu ficheiro completo carregue em F3 para sair e confirme que quer guardar as alterações.

Funções úteis DDS

Se quiser usar alguma destas funções deve colocá-la no campo functions.

CHECK

  • CHECK(AB): Permite que o campo tenha o valor nulo. (Allow Blank).
  • CHECK(ME): Obriga a que seja inserido um valor no campo (Mandatory Enter).
  • CHECK(MF): Obriga a que todos os caracteres do campo sejam preenchidos (Mandatory Fill).

COMP

Permite fazer comparações de valores. A sintaxe é COMP(operador-relacional valor). Onde o operador relacional pode tomar os seguintes valores:

  • NL (not less than)
  • GT (greater than)
  • NG (not greater than)
  • LE (less than or equal to)
  • GE (greater than or equal to)

DATFMT

Especifica o formato que uma data irá tomar. As possibilidade são:

  • *ISO: yyyy-mm-dd
  • *EUR: dd.mm.yyyy
  • *USA: mm/dd/yyyy
  • *MDY: mm/dd/yy
  • *DMY: dd/mm/yy
  • *YMD: yy/mm/dd

TIMFMT

Especifica o formato que uma hora irá tomar. As possibilidade são:

  • *ISO: hh.mm.ss
  • *EUR: hh.mm.ss
  • *USA: hh:mm AM/PM
  • *HMS: hh:mm:ss

RANGE

Define o valor máximo e mínimo que um campo pode tomar.

Exemplos:

  • Para um campo numérico: RANGE(4 9)
  • Para um campo não numérico: RANGE('4' '9')

VALUES

Permite especificar todos os valores válidos num campo.

Exemplo:

  • Para um campo numérico: VALUES(4 5 6 7 8 9)
  • Para um campo não numérico: VALUES('a' 'b' 'c' 'd')

DFT

Especifica um valor por defeito.

REFFLD

Define que um campo está a referenciar outro de outra tabela. Nestes casos não se define nem o tipo de dados nem o comprimento e coloca-se um 'R' no campo Ref do prompt.

Exemplo:

CARD_MOV R REFFLD(ID_CRD DEMO/CARDS)

Compilação de ficheiros

Para criar o objecto que vai realmente guardar os dados (como já foi dito atrás, este ficheiro guarda só o codigo fonte) escolha a opção '14-Compilar' para o ficheiro que acabou de criar.

Listagem do ficheiro
Listagem do ficheiro

Este tutorial não vai incidir sobre a análise dos ficheiros resultantes da compilação, mas se se quiser aventurar e tentar analisar os ficheiros pode fazê-lo escrevendo o comando WRKSPLF (Work Spool File) no prompt. As mensagens mais importantes da compilação aparecem usualmente no final do ficheiro com o mesmo nome que o ficheiro que acabou de compilar (a compilação mais recente aparece mais abaixo na lista).

Uma maneira rápida de verificar se a compilação foi bem sucedida é confirmar a criação do ficheiro. Para isso vá à opção '2-Work with Objects' do menu inicial do PDM e coloque as opções como estão descritas na imagem seguinte e pressione Enter.

PDM: Trabalhando com objectos
PDM: Trabalhando com objectos

Agora verifique se existe na lista um membro com o nome SHOPS (o mesmo que deu ao membro com o código fonte).

Tenha no entanto atenção que isto só funciona correctamente para a primeira compilação, porque um objecto mantém-se sempre com os dados da última compilação bem sucedida. Portanto se for alterar o seu ficheiro e compilá-lo novamente, mesmo que a compilação resulte em erro, o ficheiro continua a existir no sistema. Pode no entanto apagá-lo antes da compilação (no mesmo menu onde vai verificar a sua existência), assim certifica-se que o ficheiro resultou da última compilação.

Tem agora toda a informação necessária para conseguir criar ficheiros DDS. Crie o ficheiro CARDS e MOVEMENTS, usando os nomes que são dados no modelo de dados, pois vamos usá-los mais a frente. Quanto terminar, ou se surgir alguma dúvida, pode consultar os ficheiros com o resultado final.

Para informações mais pormenorizadas sobre os ficheiros DDS visite os recursos da IBM.

Artigos relacionados