Apostila Laboratrio
Rua Fiao da Sade, 145 4 andar Vl. Da Sade Cep 04144-020 So Paulo -SP Fone/Fax: 11- 5581.6803 intercompany@grupointercompany.com.br
SUMARIO
INSTRUES GERAIS PARA TODOS OS LABORATRIOS .................................... 3 LAB.1: REVISO DOS PR-REQUISITOS ................................................................ 5 LAB.2: PROGRAMA INICIAL ESPECIFICADO NA USER PROFILE........................... 8 LAB.3: COMANDOS CALL/TRANSFER CONTROL................................................. 10 LAB.4: COMANDO CHGVAR, PARMETROS DE PROGRAMAS E DISPLAY FILES .............................................................................................................................. 11 LAB.5: PROGRAMAS SEMELHANTES AOS MENUS ............................................. 14 LAB.6: DEBUGGING .............................................................................................. 16 LAB.7: ACESSO AOS DADOS DA DATA AREA ..................................................... 23 LAB.8: ATRIBUTOS EXTERNOS, CVTDAT, %SST ................................................. 25 LAB.9: TRATAMENTO DE MENSAGENS ............................................................... 27 LAB.10: COMANDO SNDUSRMSG......................................................................... 33 LAB.11: MONITORAO DE MENSAGENS ........................................................... 35 LAB.12: PROGRAMAO COM MENS AGENS ...................................................... 38 LAB.13: MENSAGENS DO TIPO INQUIRY .............................................................. 44 LAB.14: FERRAMENTAS DE USURIO ................................................................. 48 LAB.15: COMANDO SUBMIT JOB E LOCAL DATA AREA...................................... 51 LAB.16: DATA QUEUE........................................................................................... 55 LAB.17: COMANDOS ............................................................................................. 58
2 | 60
Introduo
Com
uma
certa
freqncia,
voc
ter
que
copiar
um
membro
do
arquivo
Como o membro a ser copiado de uso geral, ele contm os caracteres 'xxx'. Substituir 'xxx' pelo nmero do grupo, para o novo membro a ser criado.
A sua USER PROFILE ser CLPxxx, e a sua PASSWORD tambm ser CLPxxx.
CLPLAB uma biblioteca do curso, que contm objetos que sero usados por todos os grupos.
Ler a descrio inteira de cada etapa do laboratrio, antes de comear cada passo.
Antes de codificar o programa, tentar executar a soluo apresentada, para verificar como o programa deve funcionar.
Estas solues tm o mesmo nome que o programa do aluno, mas os caracteres xxx so apresentados como 'XXX', e no com o nmero do grupo.
Voc pode ver as solues nos seguintes SOURCE FILES da biblioteca CLPLAB: QCLSRCI, QDDSSRCI e QCMDSRCI.
Ao digitar os comandos, usar as facilidades de HELP e PROMPT (F4), fornecidos pelo sistema.
3 | 60
Cada etapa do LAB pode solicitar a execuo de mais de uma instruo, portanto, ler cuidadosamente e checar os passos ao complet-los.
Laboratrio 1: Laboratrio 2: Laboratrio 3: Laboratrio 4: Laboratrio 5: Laboratrio 6: Laboratrio 7: Laboratrio 8: Laboratrio 9: Laboratrio 10: Laboratrio 11: Laboratrio 12: Laboratrio 13: Laboratrio 14: Laboratrio 15: Laboratrio 16: Laboratrio 17:
Reviso dos pr-requisitos Programa inicial especificado na user profile Comandos CALL/TRANSFER CONTROL Cmd CHGVAR, parm de programas e display files Programas semelhantes aos menus DEBUGGING Acesso aos dados da DATA AREA Atributos Externos, CVTDAT, %SST Tratamento de Mensagens Comando SNDUSRMSG Monitorao de mensagens Programaao com Mensagens Mensagens do tipo INQUIRY Ferramentas do Usurio Comando SUBMIT JOB e LOCAL DATA AREA DATA QUEUE Comandos
(obrigatrio) (obrigatrio) (opcional) (obrigatrio) (obrigatrio) (obrig + opc) (opcional) (obrigatrio) (obrigatrio) (obrigatrio) (obrigatrio) (opcional) (opcional) (opcional) (opcional) (opcional) (opcional)
4 | 60
Laboratrio 1
Ler todas as mensagens aps a execuo dos comandos, para certificar-se de que eles foram executados corretamente. Se aparecer um sinal '+' direita da mensagem, colocar o cursor na linha da mensagem e usar a tecla PAGE DOWN para ver o resto das mensagens.
Como este LAB pr-requisito para os demais, necessrio complet-lo corretamente antes de passar para os outros LABs.
1.
Usar o comando CRTLIB (CREATE LIBRARY), para criar a biblioteca do seu grupo, CLPxxx.
2.
Usar o comando CHGCURLIB (CHANGE CURRENT LIBRARY), para especificar a sua biblioteca como 'biblioteca corrente'.
3.
Usar o comando CPYF (COPY FILE), para copiar o arquivo chamado APPVEND, da biblioteca C LPLAB, para um arquivo com o mesmo nome na sua biblioteca. Especificar a opo CRTFILE(*YES) no comando CPYF.
4.
Usar o comando CRTDUPOBJ (CREATE DUPLICATE OBJECT), para duplicar um programa chamado DBLREFRESH, da biblioteca CLPLAB, para um programa com o mesmo nome na sua biblioteca. Especificar o tipo do objeto: *PGM.
5.
Usar o comando CRTSRCPF (CREATE SOURCE PHYSICAL FILE), para criar os seguintes SOURCE FILES: QCLSRC QDDSSRC QCMDSRC
6.
Usar o comando CRTOUTQ (CREATE OUTPUT QUEUE), para criar uma fila de sada chamada CLPxxx.
5 | 60
7.
Criar uma JOB DESCRIPTION chamada CLPxxx, usando o seguinte comando: CRTJOBD JOBD(CLPxxx) OUTQ(CLPxxx) TEXT('TEAM xxx JOB DESCRIPTION') PRTTXT('TEAM xxx') INLLIBL(CLPxxx CLPLAB QTEMP QGPL) LOG(4 00 *SECLVL) LOGCLPGM(*YES)
8.
Alterar a USER PROFILE para utilizar a nova JOB DESCRIPTION. CHGPRF JOBD(CLPxxx)
9.
Executar o comando SIGNOFF e entrar no sistema novamente, para utilizar a nova JOB DESCRIPTION.
10. Usar o comando DSPLIB (DISPLAY LIBRARY), para mostrar todos os objetos da sua biblioteca. Ela deve conter os seguintes objetos: DBLREFRESH(*PGM) CLPxxx(*OUTQ) APPVEND(*FILE) QCLSRC(*FILE) QCMDSRC(*FILE) QDDSSRC(*FILE) CLPxxx(*JOBD)
11. Codificar um programa CL chamado TESTxxx no SOURCE FILE QCLSRC da sua biblioteca. Para isto, voc pode usar as seguintes ferramentas: dar o comando STRPDM para usar o PROGRAMMER DEVELOPMENT MENU, ou dar o comando STRPGMMNU para usar o PROGRAMMER'S MENU, ou dar o comando STRSEU para usar o SOURCE ENTRY UTILITY
O SOURCE TYPE deve ser CLP e no CL. Digitar o seu nome e nmero do grupo nos locais indicados na mensagem do programa.
O programa deve conter as seguintes instrues: PGM SNDMSG MSG('<seu nome>, TIME xxx, COMPLETOU O LAB !!!') +
6 | 60
TOMSGQ(QSYSOPR) ENDPGM
12. Compilar o programa TESTxxx. 13. Executar o programa TESTxxx (CALL nome_do_programa). 14. Se o programa foi executado corretamente, a mensagem deve estar na fila de mensagem do operador, QSYSOPR. Usar o comando DSPMSG para verificar se a mensagem chegou no seu destino correto. (Na fila de mensagem do operador do sistema QSYSOPR).
7 | 60
Laboratrio 2
ESPECIFICADO
NA
1. 2.
Criar um ambiente para o programador, a ser utilizado durante o curso. Escrever um programa CL, que executa as seguintes funes: Especifica uma biblioteca corrente para o JOB. Altera a LIBRARY LIST e a fila de sada (OUTPUT QUEUE) 'default' para o JOB. Mostra a tela correspondente ao PROGRAMMER'S MENU ou PDM.
1.
Usar o comando CHGCURLIB (CHANGE CURRENT LIBRARY), para especificar a sua biblioteca CLPxxx, como 'biblioteca corrente'.
2.
Codificar um programa chamado CLPxxx no SOURCE FILE QCLSRC da sua biblioteca para: a) Usar o comando CHGCURLIB, para alterar a biblioteca corrente do seu JOB para CLPxxx. NOTA: No LAB 1, voc criou uma JOB DESCRIPTION especificando a biblioteca CLPLAB na LIBRARY LIST. Depois, especificou a JOB DESCRIPTION na USER PROFILE atravs do comando CHGPRF. Este comando poderia ter assinalado a biblioteca CLPxxx como biblioteca corrente da PROFILE. b) Alterar os atributos do JOB, atravs deste comando: CHGJOB OUTQ(CLPxxx) PRTTXT('TEAM xxx') + LOG(4 00 *SECLVL) LOGCLPGM(*YES)
8 | 60
* comando STRPDM: inicializa o PROGRAMMER DEVELOPMENT MANAGER (PDM). * comando CALL QCMD: chama uma tela para entrada de comandos (COMMAND ENTRY SCREEN) * comando STRPGMMNU: inicializa o PROGRAMMER'S MENU.
Obs: No especificar os trs comandos ao mesmo tempo. 3. 4. 5. Compilar o programa CLPxxx. Executar o programa: CALL CLPxxx. Executar o comando DSPJOB. Selecionar as opes do menu referentes aos atributos de definio do JOB (opo 2), e LIBRARY LIST do JOB (opo 13). As informaes mostradas devem refletir as alteraes feitas pelo programa. 6. Quando o seu programa estiver correto, usar o comando CHGPRF (CHANGE PROFILE), para torn-lo o programa inicial da sua PROFILE: parmetro INLPGM do comando CHGPRF. 7. 8. 9. IMPORTANTE: Qualificar o nome do seu programa no comando CHGPRF. Executar o comando SIGNOFF Entrar no sistema fornecendo o usurio e a PASSWORD.
Se voc tiver algum problema para entrar no sistema novamente, chamar o instrutor. Usar o comando DSPJOBLOG para verificar se o programa executou corretamente.
9 | 60
Laboratrio 3
1. 2.
Iniciar o LAB, executando o PGMA (CALL PGMA) da CLPLAB. Sero enviadas algumas mensagens do programa: Informando qual programa est sendo executado. Pedindo que voc verifique a pilha de programas, atravs do comando DSPJOB (opo 11 - PROGRAM STACK). Pedindo que voc escolha a prxima ao: CALL - Executar o prximo programa. TFRCTL - Transferir o controle para o prximo programa. RETURN - Voltar para o programa anterior.
3.
Testar as vrias aes em combinaes diferentes, analisando a pilha de programas aps cada ao.
10 | 60
Laboratrio 4
DE
Aps completar este LAB, o aluno estar familiarizado com as seguintes funes:
Parmetros de programa Formatos de tela (DISPLAY FILES) Comando CHGVAR para efeito de clculo Comando CHGVAR para converso de tipo de dado Comandos IF/ELSE, DO, GOTO, SNDF, RCVF Expresses lgicas e aritmticas
Neste exerccio, voc ir codificar um programa para executar as funes de uma calculadora (somente as operaes bsicas).
O operador (usurio), dever entrar com dois nmeros e um cdigo da operao ('+' = adio, '- ' = subtrao, '*' = multiplicao, e '/' = diviso). O programa dever responder com uma sentena, contendo o resultado do clculo.
Por exemplo, se o operador entrar com os nmeros 3 e 4, e o operador de multiplicao '*', a seguinte resposta deve ser enviada:
CALCxxx: Programa principal ADDxxx : SUBxxx : MLTxxx : DIVxxx : Programa de adio Programa de subtrao (opcional) Programa de multiplicao (opcional) Programa de diviso (opcional)
11 | 60
O programa CALCxxx usa o formato de tela (DISPLAY FILE) CALCDSPF para mostrar a tela inicial e o resultado aps o clculo. O DDS para o CALCDSPF e mostrado a seguir:
1.
Copiar o membro CALCDSPF do SOURCE FILE CLPLAB/QDDSSRC para um membro com o mesmo nome no seu SOURCE FILE, CLPxxx/QDDSSRC.
2. 3.
Compilar o DISPLAY FILE CALCDSPF na sua biblioteca. Codificar um programa chamado CALCxxx para executar as seguintes funes:
a) Usar o comando DCLF para declarar o DISPLAY FILE CALCDSPF. b) Usar o comando DCL para declarar outras variveis necessrias ao programa. c) Usar o comando SNDF para enviar o formato QUESFMT para a Workstation. d) Usar o comando RCVF para ler o formato QUESFMT. e) Se o operador teclar F3 (EXIT), terminar o programa.
f)
Se o operador entrar com um cdigo de operao vlido, chamar o programa apropriado (ADDxxx, SUBxxx, MLTxxx ou DIVxxx), passando os seguintes parmetros (na forma de variveis CL):
Primeiro nmero digitado pelo usurio Segundo nmero digitado pelo usurio Resultado (Este valor dever ser retornado pelo programa chamado) Frase (este campo deve ser retornado pelo programa chamado. Deve ser uma das seguintes literais:
'PLUS', 'MINUS', 'MULTIPLIED BY', 'DIVIDED BY' O resultado uma sentena, similar quela mostrada anteriormente na figura 7. Esta sentena deve ser construda e movida para o campo &RESPONSE do formato ANSFMT. g) Se o operador entrar com um cdigo de operao invlido, mover a seguinte mensagem para o campo &RESPONSE: 'INVALID OPERATION CODE'
12 | 60
h) Usar o comando SNDF (SEND FILE), para enviar o formato ANSFMT para o operador. Este formato contm o campo &RESPONSE. O formato ANSFMT foi definido com as especificaes de DDS CLRL(*NO) e OVERLAY, ou seja, no apaga o formato anterior ao enviar a tela. i) Voltar para o item d, para ler o formato QUESFMT novamente. Obs: Voc pode ler o formato novamente, sem regrav-lo. 4. Codificar o programa ADDxxx, para executar as seguintes funes:
a) Receber os parmetros passados pelo programa CALCxxx. b) Declarar as variveis necessrias. c) Executar a operao de adio, e mover o resultado para a varivel apropriada. d) Mover a literal 'PLUS' para a varivel utilizada para a frase.
5. 6.
Compilar e testar os programas CALCxxx e ADDxxx. Se o programa ADDxxx estiver correto, codificar e testar os demais programas SUBxxx, MLTXXX, e DIVxxx para executar as outras operaes aritmticas.
7.
Entrar com um cdigo de operao invlido, para teste da mensagem 'INVALID OPERATION CODE'.
13 | 60
Laboratrio 5
1.
Copiar o membro APD01XXX do SOURCE FILE CLPLAB/QDDSSRC para o membro APD01xxx no seu SOURCE FILE CLPxxx/QDDSSRC.
2.
o indicador associado a FUNCTION KEY 3 (F3) o nome do formato de registro (RECORD FORMAT) o nome do campo de entrada para a opo do menu
3. 4.
Compilar o formato da tela (DISPLAY FILE), gerando o objeto na sua biblioteca. Codificar um programa chamado APL01xxx para executar as seguintes funes:
a. b.
c.
Com base na opo ou FUNCTION KEY escolhida pelo operador, tomar a ao apropriada:
F3:
RETURN
14 | 60
d.
5. 6.
Compilar o programa APL01xxx na sua biblioteca. Executar o programa: CALL APL01xxx, e testar todas as opes.
---------------------------------------------- 13130 15864 21178 24001 94613 - 24133 25256 30188 33333 94946 - 34681 45892 56330 56567 96431 - 63200 63218 63410 65321 - 72302 73013 84210 88714 ----------------------------------------------
15 | 60
Laboratrio 06
DEBUGGING
Este laboratrio obrigatrio.
Colocar um job em modo debug e especifica breakpoints Gerar dump no programado atravs da opo "D" que aparece em mensagens de erro do tipo inquiry.
Os programas utilizados nesse laboratrio so similares aos utilizados no laboratrio 4 que trata de operaes aritmticas com dois nmeros.
No utilizao de display file para receber os nmeros. Os nmeros so passados atravs de parmetros (CALL PARM()).
Os smbolos +, -, * e / foram substitudos por ADD, SUB, MLT e DIV respectivamente. Alm disso, temos a operao PCT (percentage) que calcula a percentagem do primeiro nmero em relao ao segundo.
Onde xxx o nmero do seu grupo, n1 e o primeiro nmero, operao pode ser ADD, SUB, MLT, DIV e PCT e n2 o segundo nmero.
16 | 60
1.
Copie os programas fontes CALCBUGxxx, ADDBUGxxx, SUBBUGxxx, MLTBUGxxx, DIVBUGxxx e PCTBUGxxx do arquivo de fontes (Source file) CLPLAB/QCLSRC para o seu arquivo de fontes CLPxxx/QCLSRC. Altere xxx pelo nmero do seu grupo.
2.
3.
ERRO 1
1.
Sabemos que ADD uma operao vlida. Mesmo assim, voc receber a mensagem "Invalid Operation Code". 2. Execute a verso correta da aplicao (lib CLPLAB): CALL PGM(CALCNOBUG) PARM(4 ADD 3)
3.
debug) a execuo do
4.
Escolha a tecla de funo para executar o programa. Novamente voc receber a mensagem "Invalid Operation Code".
5.
6.
Encontre o erro.
17 | 60
Dica:
Coloque um breakpoint antes e outro aps o comando que envia a mensagem "Invalid Operation Code". Use a tecla de funo apropriada para executar o programa. Quando o programa parar no breakpoint, exiba a varivel &OP.
Corrija o erro editando o programa fonte do objeto *PGM CALCBUGxxx e recompile o programa.
ERRO 2
1.
O programa produzir o resultado aritmtico correto. Porm o verbo ser "PLUS PERCENT OFF" ao invs de "PLUS".
2.
Execute o seguinte comando para analisar (to debug) a execuo do programa CALCBUGxxx: STRISDB PGM(CLPxxx/CALCBUGxxx) IN PGM(*CMD) CMD(CALL PGM(CLPxxx/CALCBUGxxx) PARM(4 ADD 3)
3.
Encontre o erro
Dicas:
- Coloque breakpoints antes e depois do CALL do program ADDBUGxxx - Utilize a tecla de funo apropriada para TRABALHAR COM UMA LISTA DE PROGRAMAS - Escolha opo apropriada para alterar o programa ADDBUGxxx a lista de programas - Escolha a opo apropriada para alterar o programa ADDBUGxxx: - Coloque breakpoints no programa ADDBUGxxx antes e aps a varivel &VERB em cada breakpoint.
18 | 60
- Corrija o erro editando o programa fonte o objeto * PGM CALCBUGxxx e recompile o programa. - Execute novamente: CALL CALCBUGxxx PARM(4 ADD 3) Dessa vez o programa deve funcionar corretamente.
ERRO 3
1.
Execute novamente o programa CALCBUGxxx especificando uma subtrao: CALL CALCBUGxxx PARM(4 ADD 3)
2.
3.
Execute o seguinte commando para analisar (to debug) a execuo do programa CALCBUGxxx: STRISDB PGM(CLPxxx/CALCBUGxxx) INVPGM(*CMD) CMD(CALL PGM(CLPxxx/CALCBUGxxx) PARM(4 SUB 3))
4.
Encontre o erro
Dicas:
Coloque breakpoints antes e depois do CALL do programa SUBBUGxxx. Utilize a tecla de funo apropriada para trabalhar com uma lista de programas. Escolha opo apropriada para adicionar o programa SUBBUGxxx a lista de programas. Escolha a opo apropriada para alterar o programa SUBBUGxxx. Coloque breakpoints no programa SUBBUGxxx antes e aps da varivel &RESULT ser alterada. Pressione a tecla de funo que executa o programa. Utilize a tecla de funo apropriada para e xibir o valor da varivel &RESULT em cada breakpoints.
Corrija o erro editando o programa fonte do objeto *PGM CALCBUGxxx e recompile o programa.
19 | 60
Execute o programa novamente: CALL CALCBUGxxx PARM(4 SUB 3) Dessa vez o programa deve funcionar corretamente.
ERRO 4
1.
Execute
novamente
programa
CALCBUGxxx
especificando
uma
Os procedimentos necessrios para descobrir o erro so semelhantes aos executados anteriormente. Por isso, essa parte do laboratrio opcional.
ERRO 5
1.
Execute novamente o programa CALCBUGxxx especificando uma diviso: CALL CALCBUGxxx PARM(4 DIV 3)
Voc receber a mensagem MCH1202 seguida pela mensagem CPF9999 (Function Check)
2.
3.
4.
5.
Exiba o dump do programa DIVBUGxxx e repare que a varivel &DIVIDEND deveria ter um valor decimal mas no tem.
Os procedimentos necessrios para descobrir o erro so semelhantes aos executados anteriormente. Por isso, essa parte do laboratrio opcional.
ERRO 6
20 | 60
1.
Execute novamente o programa CALCBUGxxx especificando PCT: CALL CALCBUGxxx PARM(4 PCT 3)
2.
Quando voc receber as duas mensagens de erro causadas por decimal data erro, faa o seguinte:
a. b.
Use a tecla Help (F1) para verificar o segundo nvel da mensagem. Responda "D" para obter o dump.
3.
4.
Exiba
dump
do
programa
PCTBUGxxx
repare
que
varivel
5.
Execute o seguinte comando para analisar (to debug) a execuo do programa CALCBUGxxx STRISDB PGM(CLPxxx/CALCBUGxxx) INVPGM(*CMD) CMD(CALL PGM(CLPxxx/CALCBUGxxx) PARM(4 PCT 3))
6.
Utilize a tecla de funo apropriada para trabalhar com uma lista de programas
7.
8.
9.
programa PCTBUGxxx. O
11. Use o comando ISDB Dsp (Display) para exibir o contedo da varivel &ONEHUNDRED.
O FORMATO DO COMANDO NO FOI EXPLICADO. Use a opo HELP do menu para encontrar detalhes do comando Dsp (Display). Repare que esse comando est destacado (highlighted). Coloque o cursor sobre esse comando e pressione a tecla enter. Verifique as informaes adicionais do comando, inclusive a sintaxe.
21 | 60
12. Use o comando ISBD Chg (change) para alterar a varivel &ONEHUNDRED para um valor decimal vlido.
17. Repare que o comando CALL PCTBUGxxx tem apstrofes no valor 100. Ou seja, um dado do tipo caracter.
19. Corrija o erro editando o programa fonte do objeto *PGM CALCBUGxxx e recompile o programa.
22 | 60
Laboratrio 7
1.
O ms de janeiro 'JANUARY', comea na posio 1, 'FEBRUARY' comea na posio 11, e assim por diante.
Verificar o contedo da DATA AREA usando o comando DSPDTAARA (DISPLAY DATA AREA).
2.
Copiar o fonte do DISPLAY FILE MONTHS da CLPLAB/QDDSSRC, para a sua biblioteca CLPxxx/QDDSSRC.
3.
4.
Caso contrrio, usar o nmero do ms digitado pelo usurio, para extrair o nome do ms da DATA AREA. Voc ter que calcular a posio inicial para recuperar o nome do ms, a ser utilizado no comando RTVDTAARA (RETRIEVE DATA AREA). Para calcular a posio inicial, voc pode usar a seguinte expresso: POSIO INICIAL = (10 * NMERO DO MS) - 9
23 | 60
5. 6.
24 | 60
Laboratrio 8
Aps completar este Laboratrio, o aluno estar familiarizado com as seguintes funes:
Recuperar os atributos de job e user profile; Converso de formato de data; Utilizar a funo % SUBSTRING; Converso de tipo de dado; Utilizao do prompt com seleo de parmetros
Neste exerccio, voc utilizar tcnicas para calcular o nmero de dias que faltam para sua password ser alterada, e enviar uma mensagem para a fila de mensagens da workstation.
1.
Codificar um programa CL chamado INL01xxx para executar as seguintes funes a Declarar as variveis necessrias:
a) Use os comandos RTVJOBA para recuperar a data do seu job (no formato default do sistema), e RTVUSRPRF para recuperar a data em que a sua password foi alterada pela ltima vez (formato *YMD), armazene os valores em variveis CL.
c) Utilize a funo %SUBSTRING para separar o ano e o nmero de dias das duas datas, e converta as variveis de carter para decimal.
25 | 60
d) Calcule o nmero de dias entre a data do seu job e a data para alterao de sua password. No clculo no leve em considerao a possibilidade de anobissexto.
e) Use o prompt seletivo para enviar uma mensagem do tipo break contendo o resultado do clculo.
2.
O texto da mensagem deve ser "Your password was last changed nnnnn days ago", onde nnnnn o resultado do seu Clculo. O texto da mensagem deve ser mostrado no prompt de modo protegido.
3.
O usurio deve informar a workstation message queue que vai receber a mensagem.
4.
5.
6.
Executar o comando CHGJOB para alterar a data do seu job para uma data futura dentro do ano corrente.
7.
8.
Altere novamente a data do seu job, mas desta vez para um ano futuro.
9.
26 | 60
Laboratrio 9
TRATAMENTO DE MENSAGENS
Este LAB OBRIGATRIO.
Aps completar este LAB, voc estar familiarizado com as seguintes funes:
Reconhecer mensagens do tipo BREAK. Reconhecer mensagens externas do tipo STATUS. Reconhecer mensagens enviadas para o seu programa. Manipular mensagens da fila de mensagens do usurio e da WORKSTATION. Ver as informaes adicionais associadas com a mensagem, incluindo o texto de mensagem de segundo nvel. Forar o seu JOB, para produzir o JOB LOG. Ver as informaes do JOB LOG. Ajustar o nvel de MESSAGE LOGGING, que determina quais mensagens do programa sero direcionadas para a JOB LOG. Utilizar o comando DSPJOB, para mostrar o nvel de MESSAGE LOGGING corrente, e usar o comando CHGJOB para alter-lo. Usar o comando DSPMSG para ver as mensagens da fila do usurio e da WORKSTATION. Limpar a fila de sada (OUTPUT QUEUE), usando a opo 4 da tela fornecida pelo comando WRKOUTQ.
Cada WORKSTATION tem uma fila de mensagem, que o sistema usa para receber as mensagens. A fila de mensagem da WORKSTATION criada automaticamente pelo sistema, e tem o mesmo nome da WORKSTATION. Da mesma forma, cada usurio tem uma fila de mensagem com o mesmo nome da USER PROFILE.
Neste exerccio, voc ver que as mensagens podem ser enviadas para outras filas de mensagem. Voc ter que manipular as filas de mensagem, para remover mensagens individuais, e para ver informaes adicionais disponveis para cada mensagem. Voc
27 | 60
ver como produzir uma JOB LOG, ajustar o nvel da MESSAGE LOGGING da JOB LOG, e como ver as informaes da JOB LOG.
O LAB dividido em 4 partes. Voc pode executar cada parte quantas vezes for necessrio. J que o exerccio envia mensagens para a fila da WORKSTATION, voc pode remover todas as mensagens antes de iniciar cada parte. (Executar o comando DSPMSG para ver a fila de mensagem da WORKSTATION, e selecionar a FUNCTION KEY para remover todas as mensagens).
1.
2.
A sua WORKSTATION deve mostrar que existe uma mensagem na fila. (Verificar o indicador de mensagem ligado). Usar o comando DSPMSG para ver as mensagens. Ir aparecer uma tela toda preenchida com mensagens. O comando DSPMSG tem como default o parmetro START(*LAST). Isto significa que ele mostra primeiro, a ltima pgina de mensagens. Usar a tecla PAGE UP, para ver as mensagens anteriores.
3.
Encontrar a mensagem que comea com 'LAB MESSAGE 2', e remover somente essa mensagem, movendo o cursor sob a linha da mensagem e pressionando a FUNCTION KEY (F11).
4.
Encontrar a mensagem que diz: 'Can you display second level text for this message?'. Mostrar o texto de segundo nvel e outras informaes associadas com est mensagem, movendo o cursor sob a linha da mensagem e pressionado a tecla HELP. Anlisar as vrias partes da mensagem. Pressionar a tecla ENTER, para retornar a lista de mensagens de primeiro nvel.
5.
As mensagens podem ser vistas atravs do SYSTEM REQUEST. Pressionar SYSTEM REQUEST e depois teclar ENTER. Escolher a opo 4 para ver as mensagens.
28 | 60
6.
7.
Este o final da PARTE A. Voc pode refazer a PARTE A (Neste caso, remover todas as mensagens da fila de mensagens da WORKSTATION antes de reexecutar o LAB) ou voc pode prosseguir, fazendo a PARTE B.
1.
Notar que essa mensagem interrompeu o seu trabalho. Esta uma mensagem do tipo BREAK. Ler a mensagem e teclar ENTER. Este programa envia tambm uma mensagem do tipo STATUS, para o programa chamado. Alguns programas, tais como o PROGRAMMER'S MENU, mostram mensagens do tipo STATUS para o usurio, enquanto outros programas no. Se a mensagem do tipo STATUS no aparecer, ento voc chamou o programa MGL01, a partir de um programa que no mostra este tipo de mensagem.
NOTA: Antes de iniciar est parte do LAB, usar o comando WRKACTJOB, para ver se o subsistema CLPBATCH est inicializado. Caso contrrio, solicitar ao instrutor que o incialize, ou inicializ-lo atravs do comando:
STRSBS CLPLAB/CLPBATCH
1.
Para executar a PARTE C, usar o seguinte comando: CALL MGL01 C ou CALL PGM(MGL01) PARM(C)
Voc ser notificado de que existe uma mensagem aguardando na fila de mensagem.
2.
Trata-se de uma mensagem do tipo INQUIRY, que fica aguardando at que voc responda.
29 | 60
3.
Colocar a sua resposta e pressionar ENTER. A sua WORKSTATION ir indicar que existe uma mensagem na fila.
4.
Ver a mensagem, usando a FUNCTION KEY 10 (F10). Se voc esperar muito tempo para dar a sua resposta, o sistema ir responder automaticamente para voc. Se isso acontecer, remover todas as mensagens, e reexecutar a parte C.
5.
1.
Para executar a PARTE D, usar o seguinte comando: CALL MGL01 D ou CALL PGM(MGL01) PARM(D)
2.
Vrias mensagens aparecero na tela. Voc poder usar a tecla HELP, para ver as mensagens truncadas e as teclas PAGE UP/PAGE DOWN para ver todas as mensagens.
3.
Posicionar o cursor na primeira mensagem, e pressionar a tecla HELP para ver o texto de mensagem de segundo nvel. Fazer o mesmo para a segunda mensagem.Voc precisar dessas informaes mais tarde.
4.
Estas mensagens so enviadas para a fila de mensagem do programa, e so tratadas de maneira diferente das mensagens vistas anteriormente. Ao invs de aparecerem na tela da WORKSTATION, elas podem aparecer na JOB LOG dependendo de algumas condies. Estas mensagens e outras mensagens geradas por condies de erro, aparecero na JOB LOG. No comando SIGNOFF, voc pode forar a impresso da JOB LOG. Como a JOB LOG e til para a determinao de problemas, voc ir forar a impresso da JOB LOG para verificar o contedo.
5.
30 | 60
Encontrar tambm, a fila de sada (OUTPUT QUEUE) default para o JOB. Voc precisar dessas informaes para identificar a sua JOB LOG.
6.
7.
Terminar o seu JOB, forando a impresso da JOB LOG, atravs do seguinte comando: SIGNOFF LOG(*LIST)
8.
9.
Usar o comando WRKSPLF, para encontrar o SPOOL FILE correspondente a impresso da JOB LOG do JOB anterior.
10. Selecionar o opo 5 para ver o contedo da JOB LOG. Usar as 3 partes do nome do JOB, anotadas no item 5, para checar se voc est vendo a JOB LOG correta.
Usar a coluna MESSAGE ID para encontrar as identificaes de mensagem que comeam com os caracteres 'UXT'. Estas so mensagens externas do tipo STATUS. Como a JOB LOG tem 132 posies, voc pode usar o comando WINDOW no campo de controle (CONTROL). Por exemplo, voc pode especificar W25, para ver os dados a partir da posio 25; W1 ir mostrar os dados a partir da posio 1.
Notar especialmente o texto de mensagem de segundo nvel para as mensagens 'UXT0243'.Verificar o comando que ser usado como filtro.
Continuar olhando as mensagens na JOB LOG. Cada identificador de mensagem, seguido por um nvel de severidade de dois dgitos (SEV). Notar o grau de severidade associado com cada uma das mensagens UXTxxxx. Notar tambm, que a primeira e ltima mensagem na LOG, informam a data e hora em que o JOB foi inicializado e terminado. A ltima mensagem informa tambm a razo pela qual o JOB terminou.
Quando voc terminar a anlise na JOB LOG, limpar o campo de controle (CONTROL), e pressionar ENTER para retornar.
31 | 60
11. Para filtrar algumas mensagens, v para a tela do COMMAND ENTRY (CALL QCMD), e usar o comando CHGJOB para eliminar mensagens com grau de severidade menor que 20.
12. Executar a PARTE D novamente: CALL MGL01 D. Notar que as mensagens ainda aparecem, pois ainda no esto sendo filtradas.
13. Usar o comando DSPJOB, e anotar a identificao completa do JOB. Voc precisar dessas informaes para identificar a sua JOB LOG.
16. Usar o comando WRKSPLF para olhar a JOB LOG listada para o JOB anterior. O que aconteceu com as mensagens UXT com grau de severidade menor que 20 ?
Se os passos foram executados corretamente, voc no dever ver essas mensagens na JOB LOG, aps a execuo do comando CHGJOB, exceto para a mensagem CPF1164, informando que o JOB foi completado.
32 | 60
Laboratrio 10
COMANDO SNDUSRMSG
Este LAB obrigatrio.
Aps completar este LAB, o aluno estar familiarizado com as seguintes funes:
Criar uma fila de mensagem. Codificar o comando SNDUSRMSG em um programa, para enviar uma mensagem do tipo INQUIRY, e receber uma resposta. Alterar o DELIVERY MODE da fila de mensagem, de forma que todas as mensagens enviadas para a mesma assumam uma resposta DEFAULT.
Neste LAB, voc ir criar uma fila de mensagem chamada OPERxxx. Voc ir codificar um programa que envia uma mensagem do tipo INQUIRY para a OPERxxx, recebe a resposta e envia a resposta de volta, de forma que voc possa ver a resposta recebida pelo programa.
Inicialmente, a fila de mensagem OPERxxx ter DELIVERY MODE NOTIFY e, neste caso, voc mesmo ter que dar a resposta. Posteriormente, voc ter que alterar o DELIVERY MODE para DEFAULT,para que a resposta seja dada automaticamente.
1.
Remover
todas
as
mensagens
da
fila
de
mensagem
do
usurio
da
WORKSTATION.
2.
Usar o comando CRTMSGQ (CREATE MESSAGE QUEUE), para criar uma fila de mensagem chamada OPERxxx na sua biblioteca.
3.
33 | 60
b) Usar o comando SNDUSRMSG para enviar uma mensagem do tipo INQUIRY para a fila de mensagem OPERxxx, e receber a resposta na varivel &REPLY. Definir Y ou N (letra maiscula) como respostas vlidas, e especificar N como a resposta DEFAULT. Texto da mensagem a ser enviada: 'A fita BACKUP est montada?'.
c) Usar o comando SNDMSG para enviar a resposta (&REPLY), para a fila de mensagem do usurio: TOUSR(*REQUESTER).
4.
5.
Executar o programa MGL05xxx. O sistema ir enviar uma mensagem dizendo que voc est esperando uma resposta a uma mensagem na fila de mensagem OPERxxx. O programa ir aguardar uma resposta, mas voc no poder responder neste JOB.
6.
Usar o SYSTEM REQUEST e teclar ENTER, para obter o menu do SYSTEM REQUEST.
7.
Selecionar a opo 4 para mostrar as mensagens da fila OPERxxx. a) No comando DSPMSG, especificar: b) MSGQ(CLPxxx/OPERxxx).
8.
Digitar a resposta: Y.
9.
10. Verificar a fila de mensagem do usurio atravs do comando DSPMSG. a) Voc dever ver a resposta: Y
11. Usar o comando CHGMSGQ (CHANGE MESSAGE QUEUE), para alterar o DELIVERY MODE da fila de mensagem OPERxxx para 'DEFAULT'.
12. Executar o programa MGL05xxx novamente. Desta vez, voc no ir ver a mensagem dizendo que voc est aguardando uma resposta para uma mensagem na fila OPERxxx, pois foi enviada a resposta DEFAULT.
13. Usar o comando DSPMSG, para verificar a fila de mensagem do usurio. Voc pode notar que a resposta DEFAULT 'N', foi enviada.
34 | 60
Laboratrio 11
MONITORAO DE MENSAGENS
Este LAB obrigatrio.
Aps completar este LAB, o aluno estar familiarizado com as seguintes funes:
Determinar o identificador de uma mensagem do tipo ESCAPE. Usar o comando MONMSG (MONITOR MESSAGE), para monitorar uma mensagem enviada a um programa, e tomar a ao apropriada, especificada no exerccio.
Neste LAB, voc ir codificar um programa, para copiar um arquivo para impressora. Se o arquivo estiver alocado exclusivamente por outro JOB, o programa ir gerar uma mensagem do tipo ESCAPE, e ir terminar. Voc dever forar uma falha, e diagnosticar o erro como se ele fosse inesperado.
Depois, voc ir modificar o programa, para monitorar essa mensagem do tipo ESCAPE, manipulando o problema antes que ele chegue ao usurio.
1.
Codificar
um
programa
CL,
chamado
APL90xxx,
para
copiar
arquivo
2.
3.
No necessrio obter um HARDCOPY. Basta checar a sada do programa atravs do comando WRKSPLF para verificar se ele foi executado corretamente.
35 | 60
4.
Usar a funo SYSTEM REQUEST, para iniciar um JOB secundrio na sua WORKSTATION. Teclar SYSTEM REQUEST, ENTER, escolher a opo 1 para iniciar um JOB alternativo.
5.
6.
Executar o comando DSPJOB, e selecionar a opo 12 para mostrar os LOCKS. Na tela 'DISPLAY JOB LOCKS', usar a opo 5 (DISPLAY JOB MEMBER LOCKS), para mostrar os LOCKS do membro do arquivo APPVEND.
7.
8.
Atravs
de
uma
tecla
de
funo
(FUNCTION
KEY)
do
9.
a) Usar a tecla HELP, para olhar o texto de mensagem de segundo nvel. Anotar o identificador da mensagem de erro. b) Selecionar a resposta 'D' a mensagem do tipo INQUIRY, para obter um DUMP do programa. c) Usar o comando DSPJOB ou WRKSPLF, para ver o DUMP do programa. Verificar o identificador da mensagem que causou o termino do programa. Notar que esse identificador o mesmo que aquele anotado no item a.
36 | 60
d) Usar o comando DSPJOB, e selecionar a opo 10 para olhar a JOB LOG. Nesta tela, usar a FUNCTION KEY 10 (F10), para verificar as mensagens detalhadas. Novamente, notar que o identificador da mensagem e o mesmo que aquele anotado no item a. e) Retornar a tela do COMMAND ENTRY. Posicionar o cursor sob o comando CALL APL90xxx, e usar o F10 para olhar as mensagens detalhadas.
Se necessrio, usar as teclas (PAGE UP/PAGE DOWN), para encontrar o comando. Notar, novamente o identificador da mensagem erro.
Agora voc conhece vrias maneiras para obter informaes sobre uma mensagem de erro, e encontrar aquela que deve ser monitorada.
11. Modificar o programa APL90xxx, para monitorar a mensagem que causou o trmino do programa. Quando monitorada, tomar a ao apropriada, enviando a seguinte mensagem para o usurio: 'ARQUIVO APPVEND EST EM USO. TENTE MAIS TARDE'.
13. Executar o programa APL90xxx. O arquivo ainda deve estar alocado pelo JOB secundrio. Voc recebeu a sua mensagem, ao invs da mensagem do tipo ESCAPE, gerada pelo sistema?
15. Deslocar o arquivo, atravs do seguinte comando: DLCOBJ OBJ((CLPxxx/APPVEND *FILE *EXCL))
37 | 60
Laboratrio 12
A parte B no pr-requisito para a parte C. Se voc tiver problemas de tempo, executar a parte C, ao invs da parte B.
Aps completar este LAB, o aluno estar familiarizado com as seguintes funes:
Criao de um arquivo de mensagens (MESSAGE FILE). Adio de mensagens com dados de substituio, no arquivo de mensagens. Uso de mensagens pr-definidas em um programa CL. Uso do comando SNDUSRMSG em um programa CL, para se comunicar diretamente com o usurio, atravs da poro externa (*EXT) da fila de mensagem do JOB.
Envio de mensagens de um programa, para a fila de mensagem do programa chamador, e recepo do contedo da mensagem em variveis CL. Criao de um formato de tela (DISPLAY FILE) e um programa para mostrar as mensagens da fila de mensagem do programa, usando a tcnica de subfile.
Neste LAB, ser utilizado um programa, que apresenta um menu com opes, atravs do DISPLAY FILE APD91Axxx. Na parte A, voc dever codificar um programa que chamado quando o operador seleciona a opo 5 do menu.
Em cada parte sucessiva do LAB, voc ir duplicar o fonte do DISPLAYFILE e os dois programas da parte anterior, alterando somente a identificao de cada parte. Por exemplo: Na parte B, deve ser utilizado o DISPLAY FILE APD91Bxxx, e os programas APL91Bxxx e APL92Bxxx.
38 | 60
c) Executar o comando para mostrar a descrio das mensagens, para verificar se elas foram adicionadas corretamente.
d) Copiar o membro APD91Axxx do SOURCE FILE CLPLAB/QDDSSRC para o seu SOURCE FILE CLPxxx/QDDSSRC, substituindo 'xxx' pelo nmero do grupo.
f)
Copiar o membro APL91Axxx do SOURCE FILE CLPLAB/QCLSRC para o seu SOURCE FILE CLPxxx/QDDSSRC, SUBSTITUINDO 'xxx' pelo nmero do grupo.
a. Declarar o DISPLAY FILE APD91Axxx. b. Substituir os caracteres 'xxx' do programa chamado na opo 5, pelo nmero do seu grupo.
i)
Codificar
um
programa
APL92Axxx,
que
ser
chamado
pelo
programa
APL91Axxx quando a opo 5 for selecionada. Este programa dever usar o comando SNDUSRMSG (SEND USER MESSAGE), para enviar a mensagem pr-definida de cdigo UAP0001 como uma mensagem informativa MSGTYPE(*INFO), para o usurio TOMSGQ(*) ou TOMSGQ(*EXT).
j)
l)
Modificar o programa APL92Axxx para enviar as trs mensagens. Para a mensagem UAP0003, fornecer o seguinte dado no parmetro MSGDTA: '1948.81'
39 | 60
1.
Duplicar os fontes utilizados na parte A, alterando a identificao do LAB para B. Por exemplo: Copiar o fonte APL92Axxx para APL92Bxxx
2.
Modificar o DISPLAY FILE APD91Bxxx, para incluir um campo de sada com 50 posies alfanumricas chamado MSG. Este campo dever comear na linha 24, coluna 2.
3.
4.
Modificar o programa APL92Bxxx para usar o comando SNDPGMMSG, para enviar a mensagem UAP0001 para a fila de mensagem do programa chamador: TOPGMQ(*PRV *). No enviar as mensagens UAP0002 e UAP0003
5.
6.
a.
Usar o comando RCVMSG para receber a mensagem enviada pelo programa APL92Bxxx. Mover o texto de mensagem de primeiro nvel, para o campo adicionado ao DISPLAY FILE, especificando
b.
Alterar o nome do programa chamado na opo 5 para APL92Bxxx, e o nome do DISPLAY FILE para APD91Bxxx.
7.
40 | 60
8.
Testar o programa de aplicao. O contedo da mensagem UAP0001 deve aparecer no campo MSG do DISPLAY FILE.
1.
Duplicar os fontes utilizados nas partes A ou B, alterando a identificao do LAB para C. Por exemplo: Copiar o fonte APL92Bxxx para APL92Cxxx
2.
a) Enviar as trs mensagens pr-definidas (UAP0001, UAP0002,UAP0003) para a fila de mensagem do programa chamador. Para a mensagem UAP0003, usar a constante '801.48' no parmetro MSGDTA.
b) Enviar
uma
quarta
mensagem, com o
CPF9898,
com 'FIM
o DAS PARA
tipo
NOTIFY
MENSAGENS APL91Cxxx',
ENVIADAS
APL92Cxxx
definida no arquivo de mensagem QSYS/QCPFMSG, que tem como campo de substituio, o texto de mensagem de primeiro nvel. Isso permite que voc envie uma mensagem improvisada, fornecendo o texto da mensagem no parmetro MSGDTA.
3.
4.
Modificar o DISPLAY FILE APD91Cxxx. (Opcionalmente, voc pode copiar o DDS da soluo:
SOURCE FILE:
CLPLAB/QDDSSRCI
a) Codificar as KEYWORDS necessrias, para utilizar o SUBFILE no seu DISPLAY FILE. Verificar o exemplo apresentado no caderno do aluno. O SUBFILE dever usar a linha 24.
41 | 60
c) Como voc est enviando dois formatos simultaneamente (o formato do SUBFILE e o formato FMT91), voc dever utilizar a KEYWORD OVERLAY para o formato FMT91 (o segundo formato que mostrado).
Esta KEYWORD ir prevenir que o primeiro formato seja apagado antes que o segundo seja enviado.
5.
6.
b) Monitorar a mensagem CPF9898 a nvel de programa (comando MONMSG a nvel de programa). Quando for detectada a chegada da mensagem atravs do comando MONMSG, mostrar o SUBFILE e retornar a instruo que envia o formato FMT91.
c) Informar o nome do programa 'APL91Cxxx' para a varivel do formato do SUBFILE, associada a KEYWORD SFLPGMQ. Na soluo, o nome da varivel e &MENUPGMQ.
d) Mover '1' para a varivel lgica associada ao indicador do SUBFILE, que condiciona as KEYWORDS SFLDSP, SFLDSPCTL, SFLEND, e SFLINZ. Na soluo, o nome da varivel &IN51.
e) Remover todas as instrues que se referem a varivel &MSG. Esta varivel deve ter sido removida do DISPLAY FILE.
f)
g) Alterar o nome do programa chamado quando a opo 5 for selecionada para APL92Cxxx.
7.
42 | 60
8.
9.
O SUBFILE de mensagem mostrado quando a opo 5 selecionada ? Testar as teclas HELP e PAGE UP/PAGE DOWN.
10. Esta tcnica pode ser utilizada para mostrar mensagens de erro inesperadas. Modificar o programa APL91Cxxx:
a) Em adio ao envio do SUBFILE quando a mensagem CPF9898 for detectada, mostrar o SUBFILE tambm, quando o programa receber a mensagem de FUNCTION CHECK CPF9999.
b) Forar uma mensagem de FUNCTION CHECK, alterando o nome do programa a ser chamado quando a opo 4 for selecionada.
12. Fazer o teste da modificao efetuada, selecionando a opo 4 da aplicao. As mensagens foram mostradas atravs do SUBFILE?
13. Tentar a opo 5 novamente. As mensagens informativas foram mostradas novamente atravs do SUBFILE?
43 | 60
Laboratrio 13
Configurar seu job para utilizar default reply em mensagens do tipo inquiry. Adicionar mensagens num arquivo de mensagens de usurio (Uset message file). Alm disso, usar o comando OVRMSOF. Configurar o atributo do job para utilizar a System reply list.
1.
Copie seu programa fonte APL90xxx (La 11 Monitor Message) para um novo membro chamado APL93xxx.
2.
Remova o comando que monitora a mensagem. O programa dever ficar somente com o comando CPYF para copiar o arquivo APPVEND para a impressora.
3.
4.
5.
6.
7.
8.
Na tela Display Job Locks, selecione a opo 5 para exibir os membros alocados para o arquivo APPVEND. O dados do arquivo APPVEND devem aparecer com *EXCL.
9.
44 | 60
CALL APL93xxx. O sistema enviar uma mensagem do tipo inquiry informando que o arquivo APPVEND esta alocado e exclusivamente por outro job.
11. Use a tecla HELP para verificar o segundo nvel do texto da mensagem. Note que o erro que voc recebeu CPA070. Essa uma mensagem genrica. O erro que causou a mensagem CPA0701 CPF2952, que aparece no primeiro nvel do texto da mensagem CPA0701. A mensagem CPF2952 a mensagem que voc monitorou no laboratrio 11. Quais so as respostas vlidas para a mensagem CPA0701?
12. Assuma a resposta default para a mensagem CPA0701 pressionando a tecla enter sem digitar uma resposta.
13. Voc ainda deve estar na tela Command Entry. Posicione o cursor no comando CALL APL93 xxx e pressione F10 para detalhar as mensagens. Se necessrio, Use Page up/ Page down para encontrar o comando. Voc ver a resposta default para a mensagem CPA0701.
14. Use o comando WRKMSGD para exibir a descrio inteira da mensagem CPA0701 do message file QCPFMSG. Note que a resposta default "C" que a mesma resposta que o seu job assumiu.
15. Execute CHGJOB INQMSGRPY(*DFT) para especificar que a resposta default da message descriptio deve ser assumida automaticamente pela mensagens do tipo inquiry do seu job interativo.
17. Posicione o cursor abaixo do comando CALL APL93xxx e pressione a tecla F10 para detalhar as mensagens. Se necessrio use as teclas Page up/ Page Down para encontrar o comando. Voc ver que a resposta default "C" foi assumida.
18. Retorne para o primeiro job usando a funo System Request. Execute Signoff ou libere o arquivo APPVEND atravs do comando abaixo:
45 | 60
1.
2.
3.
Use WRKRPYLE para exibir as entradas da System Reply List. Recupere o Message ID CPA0700 e seu default "D. Message IDs que terminam com "00" indica que a entrada equivale ao intervalo de mensagens de "00" at "99".
4.
Execute CHGJOB INQMSGRPY(*SYSRPYL) para especificar que o system deve procurar a resposta para mensagens do tipo inquiry na system reply list.
5.
6.
7.
Use System Request para retornar para o primeiro job. Execute Signoff ou libere o arquivo APPVEND conforme abaixo:
1.
Execute
CHGJOB
INQMSGRPY(*DFT)
para
especificar
default
reply
para
2.
3.
Use o comando MRGMSGF para copiar a mensagem CPA0701 do message file (MYQCPFMSG) para "I".
4.
Use o comando OVRMSGF para informar ao sistema que as mensagens sero procuradas no message file MYQCPFMSG antes de procurar no message file do sistema (QCPFMSG).
46 | 60
5.
6.
7.
8.
9.
Use "F10=Include Detailed Messages" para verificar detalhes da sua job log.
10. Use a tecla F1=Help na linha que informa que CPF2952 foi recebida pelo programa APL93xxx.
11. Voc ver que a resposta assumida pelo sistema para a mensagem CPA0701 foi "I".
47 | 60
Laboratrio 14
FERRAMENTAS DE USURIO
Viso Geral do Laboratrio
Importante: se voc precisar deletar um physical file, e este tiver logical files associados, os logical files devem ser deletados primeiro.
Neste laboratrio voc codificar um programa utilitrio para deletar o physical e todos os logical files associados.
O usurio ir chamar um programa passando dois parmetros: o nome do physical file a ser deletado e a biblioteca. O programa executar o comando DSPDBR para obter o nome dos logical files associados, as informaes devem ser gravadas em um arquivo de sada parmetro OUTPUT=OUTFILE). Cada registro do arquivo de sada contm o nome de um logical file correspondente. Antes de deletar cada logical file o programa deve enviar uma mensagem pedindo a confirmao da deleo.
1.
Execute o programa DBLREFRESH que esta na biblioteca do instrutor (CLPLAB) passando como parmetro o nome da sua bilbioteca CLPxxx.
Este programa cria o physical file e os logical files necessrios para execuo deste lab.
2.
Verifique o contedo da sua biblioteca (DSPLIB LIB(CLPxxx), o programa deve ter criado os seguintes objetos:
FILE DESCRIPTION
48 | 60
Logical file with key of purchase YTD. Logical file with key of vendor number. Logical file with key of salesperson. Physical file of vendor records.
3.
a.
4.
5.
a) Declare o arquivo fornecido pelo sistema QADSPDBR. Este arquivo tem o formato que ser usado pelo comando DSPDBR para gerar o arquivo de sada.
b) Use o comando DSPDBR para gera um arquivo de sada chamado DBP01xxx na sua biblioteca, contendo o relacionamento entre o physical file e os logical files associados. Se os arquivos DBP01xxx vo existir ele ser gerado automaticamente pelo comando DSPDBR, se ele a existir o default e o sistema limpar e gravar as novas informaes. Este arquivo tem o mesmo formato que o arquivo fornecido pelo sistema QADSPDBR.
c) Use o comando SNDUSRMSG para enviar a seguinte mensagem para os usrios: "The nest display shows the logical files that depend on the physical file you wish delete".
d) Use novamente o comando DSPDBR, mas desta vez com o parmetro OUTPUT(*).
e) Use o commando OVRDBF, para que, mesmo que o programa declare o arquivo QADSPDBR, ele leia os dados a partir do arquivo DBO01xxx da sua biblioteca CLPxxx.
f)
Quando encontrar o fim do arquivo, desvie para o passo "j", caso contrrio execute:
49 | 60
6.
Use o comando SNDUSRMSG para enviar uma mensagem do tipo inquiry para o usuario "do you wish to delete file <library/file-name>? Y=yes, N=no".
h) Use o campo &WHRELI no lugar da biblioteca, e o campo &WHREFI no lugar do arquivo, para montar o texto da mensagem. Os campos 8 WHRELI e 8 WHREFI fazem parte do formato do arquivo QADSPDBR, e por isso no o i f necessrio declar-los.
7.
8.
DLTF &WHRELI/&WHREFI
9.
i)
Agora que a mensagem CPF0864 foi monitorada, use o comando DLTF para deletar o physical file que foi informado quando o programa foi chamado, e finalize o programa.
a) Execute
programa
DBL01xxx.
CALL
DBL01xxx
PARM(CLPxxx
APPVEND2).
50 | 60
Laboratrio 15
Submeter um JOB para a fila de JOBS (JOB QUEUE), atravs do comando SMBJOB. Mostrar e alterar o contedo da LOCAL DATA AREA (*LDA). Recuperar informaes da LOCAL DATA AREA, e mover para variveis CL.
Neste LAB, voc ir utilizar o comando SBMJOB (SUBMIT JOB), para submeter um JOB BATCH. As informaes sero passadas para o JOB BATCH, atravs da LOCAL DATA AREA (*LDA). Na primeira parte deste LAB, voc ir colocar algumas informaes na LDA, atravs de comandos especficos. Na segunda parte deste LAB, ser codificado um programa para colocar algumas informaes na LDA.
Este LAB simula uma aplicao na qual o operador submete um programa BATCH, para imprimir uma lista de pedido para um determinado cliente.
Voc ir enviar uma mensagem ao operador, informando que a lista de pedido est sendo impressa.
1.
Usar o comando WRKACTJOB para verificar se o subsistema batch CLPBATCH, est inicializado. Se no estiver, inicializ-lo atravs do comando:
STRSBS CLPBATCH
2.
Usar o comando DSPDTAARA (DISPLAY DATA AREA) para verificar o contedo da LOCAL DATA AREA. Ela contm algum valor?
51 | 60
3.
POSIES 1 a 5
POSIES 6 a 50
POSIES 51 a 60
NOME DA WORKSTATION
Nota: Digitar '&' e pressionar ENTER, para aumentar o tamanho do campo de entrada quando utilizar o PROMPT dos parmetros para o comando.
4.
Usar o comando DSPDTAARA (DISPLAY DATA AREA) para confirmar se o contedo da LOCAL DATA AREA est correto.
5.
Codificar um programa chamado BIL11xxx na sua biblioteca, para executar as seguintes funes:
a) Usar o comando CHGVAR ou RTVDTAARA para recuperar as informaes que foram colocadas na LOCAL DATA AREA, e mover para trs variveis CL.
b) Usar o comando SNDMSG para enviar a seguinte mensagem para a fila de mensagem da WORKSTATION:
'LISTA PARA O PEDIDO <nmero do pedido>, ENTRADO POR <seu nome> EST IMPRIMINDO'.
Usar a varivel que contm o nome da WORKSTATION, como o nome da fila de mensagem para a qual a mensagem dever ser enviada.
6.
7.
8.
Se o programa BIL11xxx estiver correto, submet-lo atravs do comando SBMJOB. Usar a sua JOB DESCRIPTION, CLPxxx. Voc dever receber a mesma mensagem.
52 | 60
1.
Limpar o contedo da LOCAL DATA AREA. Executar o comando DSPDTAARA para confirmar se ela no contm dados.
2.
POSIES 1 A 5 POSIES 6 A 50
3.
a) Usar o comando RTVJOBA para recuperar o atributo JOB. (mesmo nome da fila de mensagem da WORKSTATION) b) Usar o comando CHGVAR ou CHGDTAARA para colocar o nome do JOB, nas posies 51 a 60 da sua LOCAL DATA AREA. c) Usar o comando RTVSYSVAL para recuperar a hora do sistema. d) Usar o comando CHGVAR ou CHGDTAARA para colocar a hora na LOCAL DATA AREA, comeando na posio 61. e) Usar o comando SBMJOB, para submeter um JOB que chama o programa BIL21xxx (a ser codificado nos prximos passos do LAB).
4.
5.
a) Usar o comando CHGVAR ou RTVDTAARA para recuperar informaes da LOCAL DATA AREA, movendo para quatro variveis CL.
b) Usar o comando SNDMSG para enviar est mensagem para a fila de mensagem da WORKSTATION:
'LISTA PARA O PEDIDO <nmero do pedido>, ENTRADO POR <seu nome>, AS <hora> EST IMPRIMINDO'.
53 | 60
6.
7.
Usar o comando DSPDTAARA para mostrar o contedo da LOCAL DATA AREA. As informaes esto corretas?
Voc dever limp-la aps cada teste da aplicao, j que a informao da ltima execuo do programa ir permanecer na *LDA.
8.
Como est etapa opcional, nenhuma instruo adicional ser fornecida. Usar a criatividade para resolver este problema.
54 | 60
Laboratrio 16
DATA QUEUE
Aps completar esse laboratrio o aluno ser capaz de:
Codificar programas CL que l e grava dados numa data queue Codificar programas CL que espera por um tempo determinado ou indefinido por uma entrada de dados numa data queue. Codificar um programa que pode ser executado interativamente e comunicar atravs de uma data queue com um programa que est sendo executado em batch.
Nesse exerccio voc ira codificar um programa batch (BIL31xxx) que pode ser utilizado numa aplicao real. O operador ir fazer uma entrada de um pedido, mas a nica ao necessria ser enviar o nmero pedido para uma data queue. Um programa executando num job batch esperar por um numero de pedido, quando o pedido chegar, recebera esse nmero. O pedido no ser impresso imediatamente, mas o job ira enviar uma mensagem para o operador informando que um pedido foi processado.
1.
Use o comando WRKACTJOB para verificar se o subsistema CLPBATCH j foi iniciado. Se ainda no foi, procure seu instrutor.
2.
Crie uma data queue chamada BIQ30xxx na sua biblioteca. O tamanho mximo de entradas deve ser 15.
3.
Copie o membro fonte BID30xxx do arquivo CLPLAB/QDDSSRC para o seu arquivo de fontes CLPxxx/QDDSSRC, alterando o "XXX" pelo numero de seu grupo.
4.
5.
55 | 60
b) Use o comando RTVJOBA e recupere o nome do job para a varivel &WSID. Lembre que o nome do job igual ao nome da estao que igual ao nome da fila de mensagem da estao. Isso ser usado no programa BIL31xxx para enviar mensagem de volta ao usurio.
Use o comando SNDRCVF para permitir ao usurio receber a tela no formato BID30FMT1 do display file CLPxxx/BID30xxx.
Concatene o campo do tipo caractere que ser usado para atualizar a data queue. As 5 primeiras posies referem-se ao numero do pedido. As prximas 10 posies referemse ao nome da estao.
Use o programa QSNDDTAQ para enviar o campo acima para data queue BIQ30xxx. Se o usurio pressionar F6 termine o programa. Caso contrario, permita-o enviar outro pedido.
6.
Compile o programa.
Use o programa QRCVDTAQ para ler uma entrada da data queue CLPxxx/BIQ30xxx. Especifique que voc quer esperar pelo dado chegar na data queue por um tempo indeterminado. (Especifique um valor negativ no campo &WAIT). o
Se o numero for 99999 termine o programa apos executar o comando SNDMSG com TOMSGQ(&WSID) para enviar uma mensagem para a fila de mensagem da estao:
56 | 60
Para os pedidos diferentes de 99999, simule a impresso do pedido enviando a seguinte mensagem para a estao que gerou o pedido: "Invoice for order number <order-number> has been printed". Use o comando SNDMSG com TOMSGQ(&WSID) conforme mostrado acima.
7.
8.
a) Execute CALL BIL30xxx e entre com um pedido. b) Pressione F3 para terminar o programa. c) Execute o programa novamente e entre com outro pedido. Anote o numero do pedido que voc informou. d) Termine o programa pressionando a tecla F6. e) Execute CALL BIL31xxx f) Verifique o numero de pedido na mensagem indicando que o pedido foi impresso. Todos os nmeros de pedidos que no conferem, correspondem as entradas que ainda esto na data queue.
Se esse programa travar, pressione System Request e selecione a opo 2 para cancelar o ultimo comando.
9.
a) Use o comando SBMJOB para executar o comando CALL CLPxxx/BIL31xxx na job queue CLPLAB/CLPBATCH2. Especifique tambm a sua job description CLPxxx no comando SBMJOB. b) Use o comando WRKACTJOB para verificar se o job foi submetido corretamente. Anote o status do job. c) Execute o programa BIL30xxx e entre com vrios pedidos. d) Confira se os pedidos que voc solicitou foram impressos. e) Se o programa BIL31xxx nunca terminar, use o comando ENDJOB ou a opo apropriada da tela WRKACTJOB para cancelar o programa.
57 | 60
Laboratrio 17
COMANDOS
Apos completar esse laboratrio o aluno ser capaz de:
Criar um comando simples com parmetros Criar um comando com parmetros que no tem verificao de validade. Usar o comando CHGCMDDFT para alterar valores defaults de comandos.
Neste laboratrio voc ira codificar uma verso customizada do comando DSPOBJD Display Object Description. O comando da IBM DSPOBJD ser a base para o seu comando. Este comando deve ser bastante familiar para voc. Ento voc deve se concentrar no processo de criao de comando.
Codifique um programa chamado JxxxA para exibir a descrio de todos objetos da sua biblioteca CLPxxx.
1.
Use o SEU para copiar o fonte do comando da parte A. Nomeie o novo membro como JxxxB
58 | 60
2.
Modifique o fonte do comando para permitir ao operador entrar com o tipo do objeto. A keyword deve ser de 10 posies do tipo caractere. Para simplificar nomeie a keyword como OBJTYPE.
3.
Use o SEU para copiar o fonte da parte A. Nomeie o novo fonte como JxxxB.
4.
Modifique o programa JxxxB para aceitar o parmetro OBJTYPE e usar seu valor no comando DSPOBJD.
Quando o comando funcionar corretamente, entre como um tipo de objeto que voc sabe que causara um erro. Por exemplo, *PROGRAM (no existe esse tipo de objeto no AS400, o correto *PGM).
Modifique o seu fonte de comando para restringir os valores para o parmetro OBJTYPE. Esse parametro podera assumir os seguintes valores: *PGM, *FILE, *OUTQ, *JOBD, *DTAARA, *MSGF, *CMD e *ALL.
Teste o comando.
Execute o comando novamente e informe um tipo de objeto que esta na lista de restrio.
Execute o comando outra vez e informe um tipo de objeto que no esta na lista de restrio. Por exemplo, *DTAQ. O que aconteceu?
Execute o comando novamente e informe um tipo de objeto que no existe. Por exemplo, *PROGRAM.
59 | 60
Use o comando CHGCMDDFT para alterar o valor default para *PGM ao invs de *ALL, do comando que voc criou.
Verifique se as alteraes acima tiveram efeito. Digite JxxxB e pressione a tecla F4.
60 | 60