Serviços de Informática MainFrame Training

JCL e UTILITÁRIOS

SISTEMA OPERACIONAL OS/390 JCL E UTILITÁRIOS

QUADRO OS/390

LINGUAGEN S DE PROGRAMA ÇÃO Cobol Natural Pl/I

BASES DE DADOS Vsam Sequenci al Particion ado

BANCOS EDITOR UTILITÁR DE ES IOS DADOS Adabas DB2 IMS/DBD C Roscoe Tso Idcams Icegener Adrdssu Sort

SEGURA NÇA Racf TopSecret

ENDUSER Cics

1

Serviços de Informática MainFrame Training

JCL e UTILITÁRIOS

DEFINIÇÕES SOBRE SISTEMA CONSIDERAÇÕES 2

Serviços de Informática MainFrame Training

JCL e UTILITÁRIOS

Sistema é um conjunto de programas, softwares, aplicativos e utilitários que relacionam-se dentro de um mesmo assunto. Ex.: Programas de folha de ponto, imposto de renda, seguros, férias, 13o. salário referem-se ao sistema de ‘Folha de pagamento. Programas de balanço, balancete, saldos, débitos créditos, referem-se ao sistema de ‘Contabilidade’. O Analista de Sistemas é o profissional responsável pela implantação de um sistema. Ele faz o levantamento na área a ser informatizada, com base nos controles manuais existentes e das necessidades do negócio. Ele deve estar atento ás legislações e deve procurar conhecer ao máximo o setor, e ter a sensibilidade para que o sistema ser implantado atenda ás necessidades do negócio. Não deverá ser crítico nem se deixar levar pelo gosto pessoal. Depois de ter todo o mapeamento necessário, faz uma prévia do virá a ser o ‘sistema’ a ser implantado. Depois de exaustivas apresentações, reuniões e brain-stormings, o sistema começa então a ser implantado. É aí que entra a figura do Programador. Ele deverá atender ás necessidades levantadas pelo Analista e então os programas desenvolvidos começarão a ser testados um a um. Chega então a fase crucial que é a da montagem do sistema, como se fosse um quebra-cabeças. Os programadores envolvidos quase nunca sabem ou conhecem todo o processo. Geralmente cumprem as especificações determinadas pelo Analista de Sistemas. COMO MONTAR UM SISTEMA Imaginemos um sistema em fase de implantação. O Analista obviamente saberá a ordem em que os programas deverão ser executados. Com base nestas seqüências ele então montará o ‘fluxo do sistema’, que será um dos documentos a serem enviados para a produção.

3

Serviços de Informática MainFrame Training

JCL e UTILITÁRIOS

Fluxo hipotético:

PROG001

PROG003

PROG004

PROG009

PROG011

PROG008

PROG021 PROG012 PROG010

PROG022

Fig. 01

4

Serviços de Informática MainFrame Training

JCL e UTILITÁRIOS

Com base no fluxo da fig. 01 podemos fazer algumas constatações: Se o PROG001 não processar ok, nenhum outro programa poderá processar. Quando o PRG009 terminas ok, 2 outros programas poderão processar. O PROG022 depende do fim ok de 2 outros programas. Repare nas seqüências: PROGR001 + PROGR003 + PROG009 PROGR011 + PROGR021 Com base nestas informações, poderemos montar 2 pacotes de programas que processarão numa mesma seqüência lógica. A este pacote denominamos JOB. Também poderemos montar um outro JOB com PROGR008 + PROG010 ou PROGR008 + PROGR012. COMPONENTES DO SISTEMA OPERACIONAL CATÁLOGO DO SISTEMA OPERACIONAL x VTOC Imagine a cena: você chega a um hotel onde irá encontrar-se com alguém hospedado. Você não sabe onde ele se encontra. Você se identifica á recepção do hotel que consulta um catálogo. Após encontrar o hóspede que que você procura, a recepcionista então te indica pegar um elevador e se dirigir ao 15o. andar, no apartamento 1506. Você se encaminha e ao tocar a campainha você cumpriu seu roteiro. Catálogo do hotel ---> catálogo do sistema operacional. Elevador ---> canal Numeração dos apartamentos ---> VTOC Campainha ---> Header do arquivo. CATÁLOGO POOL DE DISCOS

VTOC

5

Serviços de Informática MainFrame Training

JCL e UTILITÁRIOS

O catálogo do sistema contém a informação de todos os arquivos existentes no sistema. Ele recebe a solicitação do vinda do cartão DD, procura o arquivo no catálogo, encontra o disco onde está o arquivo. Chegando no disco, procura pela VTOC onde há um catálogo interno contendo todas as informações daquele volume com o endereço físico do registro dentro do disco. O sistema então lê o registro em blocos para a memória do computador.

ESTRUTURA DE ARQUIVOS O mainframe trabalha básicamente com 3 tipos de arquivos que já vem embutido quando se adquire o sistema operacional: sequencial, VSAM e particionado. Opcionalmente uma empresa pode também trabalhar com banco de dados como ADABAS, DB2 e IMS/DB. Antes porém, vamos a uma pequena analogia. Quando você almoça, você usa um garfo, certo ? Repare que o garfo tem um tamanho anatômico que permitirá que você coma tranquilo e no tempo certo. Se você tentasse comer enfiando o prato de uma só vez na boca não conseguiria. Se você usasse palito para alcançar os grãos de arroz levaria horas para almoçar, certo ? A mesma coisa acontece no mainframe. O sistema para ser bem aproveitado 'engole' de uma só vez 6

Serviços de Informática MainFrame Training

JCL e UTILITÁRIOS

uma quantidade de registros do tamanho da sua capacidade de transmissão do canal que leva os dados do disco até a memória. Isto chamamos de blocagem. ARQUIVO SEQUENCIAL Pode ser fixo ou variável. REGISTRO FIXO O registro fixo possui a mesma quantidade campos e bytes em todo o registro com o mesmo lay-out. Veja o exemplo: 129398547ADELMO 3.730,002M 637374839MARIA SERPENTINA 340,000F 283747487SERGIO BRAGANÇA 320,001M O lay-out do arquivo é: 1 – 10 = código do funcionário 11 – 49 = nome do funcionário 50 – 76 = salário 77 = quantidade de dependentes 78 = sexo Percebemos que é um arquivo fixo pois o lay-out é o mesmo para todos os registros. A blocagem vai ser calculada pelo sistema. Neste caso temos um arquivo de 78 posições. A blocagem ideal fica sempre em torno de 32.000 bytes. Portanto quanto maior o tamanho do registro, menor é a quantidade de registros a serem enviados para a memória. Mas a quantidade de dados será a mesma. Detalhe: o sistema não quebra registros. REGISTRO VARIÁVEL Imaginemos os seguintes registros: 8374RUA XAVIER DE TOLEDO BRAGANÇA, 720 BLOCO 16 AP 17 SUITE 12 2938RUA Z, 9 CONTADOR RECEPCIONISTA OFFICE-BOY

7

Serviços de Informática MainFrame Training

JCL e UTILITÁRIOS

Considerando o seguinte lay-out: 1-4 código 5-80 endereço Repare que se o registro for fixo haverá um desperdício de bytes quando o endereço for curto. Neste caso o Analista de Sistemas poderá adotar o registro variável. Deverá ser informado a cláusula RECORD FORMAT IS VARIABLE no lugar de FIXED. Para o cartão DD, deverá ser informado o tamanho máximo (no nosso exemplo 80) acrescido de 4. Portanto 84. Estes 4 bytes a mais são para controle do registro. ARQUIVOS PARTICIONADOS São arquivos que possuem um diretório interno e membros que podem ser parâmetros, programas, procedures, jobs, etc. Não são usados como base de dados e sim como bibliotecas do sistema. ARQUIVOS VSAM Existem 3 tipos de arquivos VSAM: KSDS, RRDS e ESDS. Estes 2 últimos são utilizados muito raramente e por isso não será objeto de nosso estudo. Vamos nos fixar em KSDS, que é 99% das utilizações. -São arquivos que trabalham com chaves. -São base de dados para o CICS mas também podem ser usados batch, mas não devem ser usados simultâneamente. -Possui 2 arquivos inter-relacionados mas separados físicamente. Um INDEX e um DATA. O index (ou chave) é a base para o acesso ao data. -Não pode ter chaves dIDElicadas. -O acesso pode ser randômico(ideal) ou sequencial. No acesso randômico o sistema procura a chave do registro para então acessar o data, onde conterá o restante das informações. Já o sequencial acessa todos os registro como se fosse um arquivo sequencial puro. -O IDCAMS é um utilitário criado para manutenção deste tipo de arquivo que estudaremos mais tarde. -Os arquivos VSAM deverão ser definidos antes da sua utilização, seja ele utilizado para leitura ou gravação através deste utilitário. -Pode também ser fixo ou variável. -Não existe blocagem como no arquivo sequencial mas um formato de alocação especial através de cálculos especiais. -O cluster é a junção dos arquivos de INDEX e DATA.

8

Serviços de Informática MainFrame Training

JCL e UTILITÁRIOS

INTERFACES COM O SISTEMA O sistema operacional possui interfaces que podem ser utilizadas para interagir com o sistema ou para movimentação de dados. Os exemplos mais comuns são ROSCOE e TSO como editores de texto e o CICS para gerenciador de dados. ROSCOE e TSO – Embora tenham interfaces diferentes o objetivo é o mesmo. Colocar o usuário dentro do sistema. Através destes aplicativos pode-se por exemplo criar JCL, editar programas, acessar arquivos, compilar programas, submeter jobs etc. É sempre utilizado por usuários internos. CICS – Customer information control system. Como o próprio nome indica, é utilizado para acessar informações, inserir dados, deletar dados etc. Tem sempre como base de dados arquivos do tipo VSAM. A interface é criada pela equipe de desenvolvimento e cada tela está associada a uma transação. Quando o usuário acessa o sistema e valida seu user, ele então poderá utilizar as transações que lhe são permitidas. Uma transação CICS pode acessar um ou mais arquivos VSAM.

9

Serviços de Informática MainFrame Training

JCL e UTILITÁRIOS

10

Serviços de Informática MainFrame Training

JCL e UTILITÁRIOS

J.C.L. DEFINIÇÃO DE UM JOB Um job (serviço) é composto por um ou mais programas que serão processados dentro de uma seqüência. Se esta seqüência for quebrada por alguma anormalidade, interrompe-se o fluxo, repara-se o erro e faz a retomada. Uma interrIDEção causada pelo programa chamamos de ABEND. Esta retomada (ou restart) poderá ser feita desde o início, a partir do ponto que houve a ocorrência, em algum ponto anterior do Job, ou até mesmo de algum job anterior. Pode também ser necessário a recIDEeração de algum arquivo que tenha sido o causador do término anormal. Um seqüência de jobs em cadeia chamamos de rotina. Observações muito importantes sobre um JOB: Um job é composto de pelo menos um programa. Este programa poderá ser um desenvolvido na empresa ou até mesmo um utilitário. Um job SEMPRE (obrigatoriamente) começa com um cartão ‘JOB’, que irá se ‘apresentar’ para o sistema operacional e disponibilizar as filas e prioridades dentro do sistema A cada programa ou utilitário denominamos STEP. Cada step é representado por um cartão chamado ‘EXEC’. O cartão EXEC é responsável por chamar o programa compilado e linkeditado. (Podendo ser também um utilitário) Dentro de cada cartão EXEC teremos cartões ‘DD’ que irão disponibilizar os dispositivos necessários para o funcionamento do programa. DESENHO BÁSICO DE UM JOB //XXXXXXX JOB XXXXXXXXXXXXXXXXXXXXXXX //XXXXXXX EXEC XXXXXXXXXXXXXXXXXXXXXX //XXXXXXX DD XXXXXXXXXXXXXXXXXXXXXXX //XXXXXXX DD XXXXXXXXXXXXXXXXXXXXXXX //XXXXXXX DD XXXXXXXXXXXXXXXXXXXXXXX //XXXXXXX.....EXEC XXXXXXXXXXXXXXXXXXXXXXX //XXXXXXX DD XXXXXXXXXXXXXXXXXXXXXXX //XXXXXXX DD XXXXXXXXXXXXXXXXXXXXXXX //XXXXXXX DD XXXXXXXXXXXXXXXXXXXXXXX //XXXXXXX.....DD XXXXXXXXXXXXXXXXXXXXXXX //XXXXXXX.....EXEC XXXXXXXXXXXXXXXXXXXXXXX //XXXXXXX DD XXXXXXXXXXXXXXXXXXXXXXX 11

Serviços de Informática MainFrame Training

JCL e UTILITÁRIOS

//XXXXXXX DD //XXXXXXX DD //XXXXXXX.....DD //

XXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXX

Fig. 02 Repare: temos neste exemplo um Job composto de 4 steps. Estes steps podem ser programas ‘caseiros’ e/ou utilitários (como o SORT e o IDCAMS) que serão visto adiante. Voltando a fig.01 poderá muito bem ser a seqüência 01 tendo um SORT entre os programas PROG003 e PROG009. Neste caso o PROG003 gerou um arquivo a ser lido pelo PROG009. Mas antes de utilizar, o PROG009 precisa reclassificar o arquivo para atender sua regra de negócio. A FUNÇÃO DO J.C.L. Quando mencionamos as palavras JOB, EXEC e DD, estamos falando de uma linguagem: JCL (Job control language ou linguagem de programação de serviços). A função do JCL é solicitar e informar recursos e dispositivos ao sistema operacional. Os cartões JOB, EXEC e DD obrigatoriamente deverão ter um NOME. Este nome será conhecido como JOBNAME, STEPNAME e DDNAME. São inserido logo após o ‘//’ e antes do cartão comando. Um exemplo típico de um JOB com um step apenas para ilustração. //IDE14KR JOB ‘(9983,98,978,09)’,’ADELMO’, // CLASS=6,MSGCLASS=U //STEP0101 EXEC PGM=MYPROGSS //ENTR01 DD DSN=IDEYA.CADCLI,DISP=SHR //SAIDA02 DD DSN=IDEYA.CADENT,DISP=(NEW,CATLG,DELETE), // UNIT=SYSDA,SPACE=(TRK,(5,1),RLSE), // DCB=(RECFM=FB,LRECL=80,BLKSIZE=0) //SYSOUT DD SYSOUT=* //PARM01 DD * PRINTALL 12

Serviços de Informática MainFrame Training

JCL e UTILITÁRIOS

//* //STEP0102 EXEC PGM=MYPROGXX,COND=(0,NE) //ENTR03 DD DSN=IDEYA.CADENT,DISP=SHR //ENTR04 DD DSN=IDEYA.CADRET,DISP=SHR //SAIDA03 DD DSN=IDEYA.CADSAI(+1),DISP=(NEW,CATLG,DELETE), // UNIT=SYSDA,SPACE=(TRK,(5,1),RLSE), // DCB=(GDG,RECFM=FB,LRECL=120,BLKSIZE=0) //RELATO DD SYSOUT=(R,,XPTO) // Fig.03 Neste exemplo temos um job com 2 steps apenas que irá executar um programa chamado ‘MYPROGRSS’ , e terá 2 arquivos de entrada sendo o primeiro em disco chamado pelo DDNAME ENTR01 e um parâmetro chamado PARM01 E uma saída chamado pelo DDNAME SAIDA02. Um outro step irá executar o programa MYPROGXX, que irá ler 2 arquivos e gerar um terceiro arquivo em GDG.

REGRAS BÁSICAS DE J.C.L. Não se esqueça que JCL é uma série de comandos que você está passando para o sistema operacional ‘entender’ o seu programa, como se fossem parâmetros. JAMAIS confunda JCL ERROR com ABEND. O primeiro é erro de sintaxe ou indisponibilidade de recursos. O segundo é falha de programa que em alguns caso pode até mesmo ser causado por recursos do sistema. Em caso de erro de JCL, o programa em questão não foi executado. Os cartões ‘//’ nas colunas 1 e 2 são obrigatórios em todo o JCL, exceto se houver algum parâmetro a ser passado pelo usuário (opção) ao programa. (Veja regra 6) Existem parâmetros obrigatórios e parâmetros opcionais. Com exceção do Account e programer-name do cartão Job, todos os outros parâmetros possuem o sinal ‘=’. O parâmetros vêm a esquerda e os sub-parâmetros á direita do sinal.] Os sub-parâmetros podem ser 1 ou mais de 1. Quando houver mais de 1 sub-parâmetro deverá estar entre aspas. Se o seu programa tem opção de processamento (ex: listagem total ou parcial), este opção (que na verdade também é um parâmetro), este

13

Serviços de Informática MainFrame Training

JCL e UTILITÁRIOS

poderá ser ‘passado’ após um cartão DD que contenha o comando ‘DD *’. Ao começar numa empresa peça sempre uma cópia da padronização da empresa. Nem sempre você poder ‘batizar’ seu programa, jobname, stepname etc com o nome que você quer. Existem regras, com certeza. CARTÃO JOB //IDE14KR JOB ‘(9983,98,978,09)’,’ADELMO’, // CLASS=6,MSGCLASS=U IDE14KR – É o JOBNAME. Deverá ter sempre uma padronização estabelecida pela área de produção da empresa. Procure saber a regra antes de fazer a denominação. Regra: Deverá ter de 1 a 8 caracteres (em geral sempre 8), sendo o primeiro alfabético. JOB – Nome do cartão de comando – Obrigatório. Sempre entre espaços em branco. ‘(9983,98,978,09)’: Informe-se com a produção pois isto varia de empresa para empresa. Pode nem ser obrigatório. Mas se for, deverá ser sempre o primeiro após o JOB. ‘ADELMO’ – Programer-name. Obrigatório. Para identificar o nome do usuário. Se não houver account, vem logo após o comando JOB. CLASS=Define a classe que será submetida na fila de JOBS. MSGCLASS=Define a classe de sysout (relatório) onde serão geradas todas as logs durante o tempo em que o job permanecer no sistema. Outros parâmetros usados poderão ser requeridos na empresa, mas não são obrigatório no cartão JOB, tais como TYPRUN, NOTIFY e outros.

O CARTÃO EXEC É composto do stepname, cartão comando (EXEC) e o nome do programa (ou utilitário) a ser chamado pelo JOB. Sintaxe: //STEP0101 EXEC PGM=MYPROGXX,COND=(0,NE) Neste caso, o MYPROGSS é um programa que deverá estar na biblioteca padrão do sistema. Antes de dar OPEN no programa o sistema irá verificar se o programa realmente existe. Em seguida irá verificar os 14

Serviços de Informática MainFrame Training

JCL e UTILITÁRIOS

recursos solicitados pelos cartões DD para só então dar OPEN no programa e carrega-lo em memória. Todos os programas ao terminarem, emitem um código de retorno para o sistema operacional. Se for ‘0’ (zero) significa que terminou OK. O COND, neste caso será para checar se o(s) step(s) anterior(es) terminou(aram) ok. Os mais comuns: (0,NE) – Se todos os steps anteriores terminaram OK, pode processar este step. (2,LT) – Significa que este step aceita que um os steps anteriores emitam um return code igual a ‘0’ ou ‘1’. Regra básica: Comparar os return code anteriores e comparar com o parâmetro. Se for negativo, execute. Se for positivo não execute. Outros exemplos: (0,LT) não irá executar nunca pois não existe return code negativo. (0,EQ) só processa se algum step anterior der return code diferente de ‘0’. (EVEN) executa mesmo que algum step anterior tenha terminado anormalmente. (ONLY) executa somente se algum programa tenha terminado anormalmente. OBSERVAÇÃO: Em caso de erro de JCL o parâmetro COND não é respeitado. A interrIDEção ocorre de qualquer forma. O CARTÃO DD Acompanhando nosso exemplo na fig.03, vamos utilizar os cartões para as definições. Antes porém é bom lembrar que o cartão DD é utilizado para pedir ao sistema alocação de recursos físicos (dispositivos) para que o programa seja processado. Sintaxe: //ENTR01 DD DSN=IDEYA.CADCLI,DISP=SHR //SAIDA02 DD DSN=IDEYA.CADENT,DISP=(NEW,CATLG,DELETE), // UNIT=SYSDA,SPACE=(TRK,(5,1),RLSE), // DCB=(RECFM=FB,LRECL=80,BLKSIZE=0) DDNAME = (ENTR01) Tem que ser o mesmo que você especificou na select do seu programa. Confira sempre a padronização na sua instalação. DD = É o nome do cartão-comando. 15

Serviços de Informática MainFrame Training

JCL e UTILITÁRIOS

DSN = Parâmetro que irá dizer ao sistema qual o nome externo do arquivo em questão. Lembre-se que neste caso você está associando ENTRO1 ao arquivo IDEYA.CADCLI e SAIDA02 ao arquivo IDEYA.CADENT. O nome externo é o nome que o sistema conhece o arquivo. DISP = Informa o status do arquivo no sistema operacional. Sintaxe: NEW,CATLG,CATLG DISP=SHR,UNCTLG,UNCTLG OLD,DELETE,DELETE KEEP,KEEP PRIMEIRO SUB-PARÂMETRO – STATUS DO ARQUIVO SHR ---> Significa que o arquivo já existe e pode ser lido por recurso simultâneamente. OLD ---->Significa que o arquivo já existe e que o programa exclusividade na leitura. NEW ---->Arquivo novo, a ser criado neste momento. outro exige

SEGUNDO E TERCEIRO SUB-PARÂMETRO – AÇÃO A SER TOMADA EM CASO DE TÉRMINO NORMAL E TÉRMINO ANORMAL RESPECTIVAMENTE. CATLG --> Catalogue o arquivo. Óbviamente que esta opção deve estar sempre acompanhada de NEW no primeiro sub-parâmetro. Porque se o arquivo estiver sendo lido é porque já está catalogado. UNCATLG --> Descatalgoue o arquivo. Evite usar sempre. DELETE ---> Delete o arquivo. Se precisar deletar o arquivo use sempre esta opção. KEEP ---> Mantenha o arquivo do jeito que intacto (do que jeito que estava antes). LEMBRETES: -SEMPRE use o modelo da página anterior para entrada/saída. -Se o arquivo é de entrada(OLD ou SHR) não precisa especificar demais parâmetros, pois óbviamente já está catalogado e o sistema saberá encontrá-lo. Se for de saída você deverá usar os demais parâmetros do exemplo ENTR02.

16

Serviços de Informática MainFrame Training

JCL e UTILITÁRIOS

Exemplos inválidos: (SHR,CATLG,DELETE) ---> Se o arquivo é novo (SHR) como irá catalogar se já está catalogado ? O sistema não recataloga. (NEW,KEEP,DELETE) ---> Como manter um arquivo que ainda não existe ? Default: Se você colocar (SHR,KEEP,KEEP). Outros sub-parâmetros: UNIT= ----> Especifica o tipo de dispositivo onde você criará o arquivo. Geralmente disco é SYSDA. Confira sempre com um funcionário da sua seção ou com a equipe de produção. SPACE= ----> Espaço a ser utilizado. Lembre-se que não precisa ser preciso, mas quanto mais preciso melhor. É uma estimativa. O sistema irá checar se há disponibilidade para gravar seu arquivo. Se não houver, cancelará. Sintaxe: SPACE=(TRK,(5,2),RLSE). Repare que há sub-parâmetro dentro de sub-parâmetro. Neste caso permanece a regra de utilizar ' ( ) '. Neste exemplo estamos alocando 5 trilhas (TRK) na alocação primária, 2 trilhas de alocação secundária e liberando (RLSE) as trilhas não utilizadas. Poderia ser cilindros (CYL) ao invés de TRK mas não convém sua utilização. Para saber o número ideal considere que uma trilha comporta aproximadamente 56.000 bytes. Portanto neste caso estamos alocando 5 trilhas. Se não for suficiente esta alocação, o sistema alocará mais 2 trilhas (alocação secundária) até 16 vezes para atender a solicitação. Se ainda não for suficiente o programa cancelará. DCB= ---> Indica o formato do arquivo a ser gravado. Não necessário para arquivos a serem lidos, pois o catálogo guarda esta informações. Sintaxe: DCB=(RECFM=FB,LRECL=98,BLKSIZE=0) Obs.: A ordem dos sub-parâmetros não é obrigatória. Neste exemplo: Indica que o arquivo é FB (fixo blocado). Confira que o seu programa possui as cláusulas 'BLOCK 0' e 'RECORD FORMAT IS FIXED'. Outras 17 apenas DISP=SHR o sistema assume

Serviços de Informática MainFrame Training

JCL e UTILITÁRIOS

opções possíveis: VB (variável blocado), FBA (fix blocado com caracter de impressão) e F (fixo sem blocagem. EVITE sempre) e PO (particionado) O tamanho do registro é 98. Se fosse variável deveria ser o tamanho do maior registro + 4. BLKSIZE= ---> Blocagem do registro. É o maior número de bytes trazidos para a memória de uma só vez. É sempre uma quantidade próxima de 32.000. Deixe sempre com '0', pois o sistema calcula automáticamente a blocagem ideal. SYSOUT= ---> Este cartão tem finalidade definir a classe em que o relatório será impresso. Como as empresas sempre tem mais que uma impressora, diversos recebedores, diversos tipos de formulários estas informações serão de utilizadas para fazer estas definições. Neste exemplo o relatório será emitida na classe 5 com tipo de formulário XPTO, que pode ser por exemplo uma fatura. GDG/GENERATION DATA GROIDE Imagine o seguinte step: //STEP0102 EXEC PGM=MYPROGXX,COND=(0,NE) //ENTR03 DD DSN=IDEYA.CADENT,DISP=SHR //ENTR04 DD DSN=IDEYA.CADRET,DISP=SHR //SAIDA03 DD DSN=IDEYA.CADSAI,DISP=(NEW,CATLG,DELETE), // UNIT=SYSDA,SPACE=(TRK,(5,1),RLSE), // DCB=(RECFM=FB,LRECL=120,BLKSIZE=0) //RELATO DD SYSOUT=(R,,XPTO) // Repare que o arquivo de saída referente ao DD SAIDA03 está tentando catalogar um arquivo. O que acontecerá se o arquivo já existir ? Isto é muito comum quando uma rotina tem uma certa frequência de processamento. Neste caso o sistema não irá catalogar o arquivo pois emitirá um erro de JCL – Direct acess dIDElicate e o step irá interromper. Você terá 2 saídas: deletar o arquivo previamente ou usar arquivos GDG. Os arquivos to tipo GDG permitem que você grave um mesmo arquivo com uma extensão que ele mesmo cria e controla. Tudo que você precisa fazer é entregar o controle ao GDG. Isto é feito através do utilitário IDCAMS e sempre feito pela equipe de produção. Veja como funciona para o arquivo exemplificado. IDEYA.CADSAI 18 GDGBASE LIM=05

Serviços de Informática MainFrame Training

JCL e UTILITÁRIOS

IDEYA.CADSAI.G004V00 IDEYA.CADSAI.G005V00 IDEYA.CADSAI.G006V00 IDEYA.CADSAI.G006V00 IDEYA.CADSAI.G007V00 Neste exemplo o pessoal da produção definiu o GDGBASE com 5 gerações. Ao completar o ciclo de 5 arquivos ele automaticamente libera a 6a. greação. Isto é muito útil pois evita-se ter que deletar um arquivo antes de cria-lo, permite ler um arquivo anterior etc. Portanto, para gravar siga o modelo abaixo: //STEP0102 EXEC PGM=MYPROGXX,COND=(0,NE) //ENTR03 DD DSN=IDEYA.CADENT,DISP=SHR //ENTR04 DD DSN=IDEYA.CADRET,DISP=SHR //SAIDA03 DD DSN=IDEYA.CADSAI(+1),DISP=(NEW,CATLG,DELETE), // UNIT=SYSDA,SPACE=(TRK,(5,1),RLSE), // DCB=(GDG,RECFM=FB,LRECL=120,BLKSIZE=0) //RELATO DD SYSOUT=(R,,XPTO) // O que há de diferente ? No dsname foi incluído ao final o parâmetro (+1) que indica acrescentar uma geração. No DCB foi incluído a opção GDG. Para ler este arquivo depois: //SAIDA03 DD DSN=IDEYA.CADSAI(0),DISP=SHR

Muito importante: GDG só vale para arquivos seqüenciais. Para ler o último arquivo não necessita escrever toda a extensão que ele criou. Basta apenas colocar (0) para ler a última versão. Para ler a penúltima versão coloque (-1) e assim por diante. Se ao ler o arquivo esquecer de colocar o parâmetro (0) o sistema irá ler TODOS os arquivos como se fosse apenas um.

19

Serviços de Informática MainFrame Training

JCL e UTILITÁRIOS

UTILITÁRIOS SORT/MERGE O DFSORT é um utilitário da IBM apropriado para fazer classificação de arquivos. Pode também ser usado para intercalação. Além disso, o DFSORT pode eliminar registros durante a cópia através de filtros, excluir campos, reformatar, sumarizar registro iguais, saltar registros, criar mais de uma saída etc. Seu uso é muito extenso e vamos tratar dos itens mais utilizados. Sintaxe: //IDE14KR JOB ‘(9983,98,978,09)’,’ADELMO’, // CLASS=6,MSGCLASS=U //STEP0101 EXEC PGM=SORT //SORTIN DD DSN=IDEYA.CADCLI,DISP=SHR //SORTOUT DSN=IDEYA.CADCLI.CLASS,DISP=(NEW,CATLG,DELETE), // UNIT=SYSDA,SPACE=(TRK,(5,1),RLSE), // DCB=(RECFM=FB,LRECL=80,BLKSIZE=0) //SYSOUT DD SYSOUT=* //SYSIN DD * SORT FIELDS=(13,10,BI,A),FORMAT=F //* OPÇÕES POSSÍVEIS: ALTSEQ DEBUG END INCLUDE INREC OMIT OPTION OUTFIL OUTREC RECORD SORT SUM

DD

20

Serviços de Informática MainFrame Training

JCL e UTILITÁRIOS

UTILITÁRIOS - SORT SORT-INCLUDE Sort com seleção do que você quer para gravar na saída //S01X04 EXEC PGM=SORT,COND=(0,NE),REGION=4096K //*---------------------------------------------------//* SORT POR BANCO, NUMPER //*---------------------------------------------------//SORTMSG DD SYSOUT=* //SORTWK01 DD UNIT=SYSDA,SPACE=(TRK,450) //SORTIN DD * A E B E A D B D X D B A A A //SORTOUT DD SYSOUT=* SORT FIELDS=COPY INCLUDE COND=(1,1,CH,EQ,C'A',AND,(9,1,CH,EQ,C'E',OR, 9,1,CH,EQ,C'A')) //* RESULTADO: A E A A OUTRO INCLUDE //SYSIN DD *,DCB=BLKSIZE=80 INCLUDE COND=(10,05,CH,EQ,C'00002',OR, 20,05,CH,EQ,C'00030') OPTION COPY EXEMPLO: ARQUIVO DE ENTRADA <...+....1....+....2....+....3. 21

Serviços de Informática MainFrame Training

JCL e UTILITÁRIOS

============================== 01 00001 00010 01 00002 00020 02 00000 00030 02 00000 00040 02 00005 00050 ARQUIVO DE SAIDA SÓ FICOU O QUE ESTAVA NA CONDIÇÃO <...+....1....+....2....+....3 ============================= 01 00002 00020 02 00000 00030 EXEMPLOS COM CAMPOS COMPACTADOS INCLUDE COND=(1,6,PD,NE,11000000000) EXEMPLOS COM CAMPOS COMPACTADOS INCLUDE COND=(1,6,PD,GT,12000000000) SORT-SOMA-REGS-NO-FINAL Sort para somar registros iguais //SYSIN DD *,DCB=BLKSIZE=80 INREC FIELDS=(1,30,C'0000000001') SORT FIELDS=(01,02,ZD,A), FORMAT=BI,FILSZ=E280000, DYNALLOC=(SYSDA,6) SUM FIELDS=(31,10,ZD) EXEMPLO: ARQUIVO DE ENTRADA 30 BYTES : <...+....1....+....2....+....3 ============================= 01 00001 00010 01 00002 00020 02 00003 00030 02 00004 00040 02 00005 00050 ARQUIVO DE SAIDA 40 BYTES COM A QTDE DE REGISTROS DE CADA CODIGO NO FINAL POS 31-40: 22

Serviços de Informática MainFrame Training

JCL e UTILITÁRIOS

<...+....1....+....2....+....3....+....4 =============================== T O P = 01 00001 00010 000000000B 02 00003 00030 000000000C

23

Serviços de Informática MainFrame Training

JCL e UTILITÁRIOS

UTILITÁRIOS - SORT SORT-SOMA-EM-UMA-COLUNA Sort para somar campos em uma coluna //SYSIN DD *,DCB=BLKSIZE=80 SORT FIELDS=(01,2,CH,A), FILSZ=E60000,DYNALLOC=(SYSDA,6) INCLUDE COND=(01,2,CH,EQ,C'01') SUM FIELDS=(10,5,ZD,20,5,ZD) // EXEMPLO: ARQUIVO DE ENTRADA  POS CAMPO CODIGO VALOR-1 VALOR-2 <...+....1....+....2....+.. ========================== 01 00001 00010 01 00002 00020 02 00003 00030 02 00004 00040 RESULTADO: SOMENTE CODIGO = 01 SE QUISER SOMAR TODOS OS CODIGOS RETIRAR DO SORT O INCLUDE <...+....1....+....2....+ ======================== 01 0000C 0003{

24

Serviços de Informática MainFrame Training

JCL e UTILITÁRIOS

UTILITÁRIOS - SORT SORT-SOMA-REGS-NO-FINAL-E-COLUNA Sort para somar campos em uma coluna e regs iguais no final //SYSIN DD *,DCB=BLKSIZE=80 INREC FIELDS=(1,30,C'0000000001') SORT FIELDS=(01,02,ZD,A), FORMAT=BI,FILSZ=E280000, DYNALLOC=(SYSDA,6) SUM FIELDS=(31,10,ZD,10,05,ZD) EXEMPLO: ARQUIVO DE ENTRADA 30 BYTES: <...+....1....+....2....+....3 ============================= 01 00001 00010 01 00002 00020 02 00003 00030 02 00004 00040 02 00005 00050 ARQUIVO DE SAIDA 40 BYTES: SOMOU A QTDE NAS POS 31-40 E O VALOR POS 10-15 <...+....1....+....2....+....3....+....4 =============================== T O P = 01 0000C 00010 000000000B 02 0001B 00030 000000000C SORT-COPY Sort para copiar arquivos //SYSIN DD *,DCB=BLKSIZE=80 OPTION COPY

25

Serviços de Informática MainFrame Training

JCL e UTILITÁRIOS

UTILITÁRIOS - SORT SORT-ELIMINA-ZEROS Sort para eliminar campos com zeros //SYSIN DD *,DCB=BLKSIZE=80 OMIT COND=(10,05,CH,EQ,C'00000') OPTION COPY EXEMPLO: ARQUIVO DE ENTRADA <...+....1....+....2....+....3 ============================= 01 00001 00010 01 00002 00020 02 00000 00030 02 00000 00040 02 00005 00050 ARQUIVO DE SAIDA <...+....1....+....2....+....3 ============================= 01 00001 00010 01 00002 00020 02 00005 00050 SORT-ELIMINA-DUPLICIDADE Sort para eliminar duplicidades //SYSIN DD *,DCB=BLKSIZE=80 SORT FIELDS=(01,02,CH,A) SUM FIELDS=NONE EXEMPLO: ARQUIVO DE ENTRADA

26

Serviços de Informática MainFrame Training

JCL e UTILITÁRIOS

<...+....1....+....2....+. ========================= 01 00001 00010 01 00002 00020 02 00003 00030 02 00004 00040 RESULTADO: SÓ FICA O PRIMEIRO REGISTRO <...+....1....+....2....+. ========================= 01 00001 00010 02 00003 00030 UTILITÁRIOS - SORT SORT-ELIMINA-REGISTROS Sort para eliminar registros //SYSIN DD *,DCB=BLKSIZE=80 OMIT COND=(20,05,CH,GT,C'00030') OPTION COPY EXEMPLO: ARQUIVO DE ENTRADA: <...+....1....+....2....+....3 ============================= 01 00001 00010 01 00002 00020 02 00000 00030 02 00000 00040 02 00005 00050 ARQUIVO DE SAIDA <...+....1....+....2....+....3. ============================== 01 00001 00010 01 00002 00020 02 00000 00030 27

Serviços de Informática MainFrame Training

JCL e UTILITÁRIOS

28

Serviços de Informática MainFrame Training

JCL e UTILITÁRIOS

PROCEDURE CATALOGADA Muitas empresas preferem utilizar procedure catalogadas ao invés de JOBS extensos. É uma opção bem saudável pois evita-se manutenções e permite passar parâmetros para as procedures. Veja o exemplo de um JOB antes e depois da conversão em procedure catalogada (ou simplesmente PROC). Antes: //IDE14KR JOB ‘(9983,98,978,09)’,’ADELMO’, // CLASS=6,MSGCLASS=U //STEP0101 EXEC PGM=MYPROGSS //ENTR01 DD DSN=IDEYA.CADCLI,DISP=SHR //SAIDA02 DD DSN=IDEYA.CADENT,DISP=(NEW,CATLG,DELETE), // UNIT=SYSDA,SPACE=(TRK,(5,1),RLSE), // DCB=(RECFM=FB,LRECL=80,BLKSIZE=0) //SYSOUT DD SYSOUT=* //PARM01 DD * PRINTALL //* //STEP0102 EXEC PGM=MYPROGXX,COND=(0,NE) //ENTR03 DD DSN=IDEYA.CADENT,DISP=SHR //ENTR04 DD DSN=IDEYA.CADRET,DISP=SHR //SAIDA03 DD DSN=IDEYA.CADSAI(+1),DISP=(NEW,CATLG,DELETE), // UNIT=SYSDA,SPACE=(TRK,(5,1),RLSE), // DCB=(GDG,RECFM=FB,LRECL=120,BLKSIZE=0) //RELATO DD SYSOUT=(R,,XPTO) DEPOIS: O job (chamada) vai executar uma procedure chamada IDE01P04 que está na biblioteca padrão do sistema. Os parâmetros podem ser passados pelo JOB ou pelo cartão PROC. //IDE14KR JOB ‘(9983,98,978,09)’,’ADELMO’, // CLASS=6,MSGCLASS=U //PROC001 EXEC IDE01P04,CLIENTE=’IDE14’,SAIDA=’CADRET’

29

Serviços de Informática MainFrame Training

JCL e UTILITÁRIOS

A PROCEDURE CATALOGADA //IDE01P04 PROC VOIDE=’SHR’ //STEP0101 EXEC PGM=MYPROGSS //ENTR01 DD DSN=&CLIENTE..IDE0.CADCLI,DISP=SHR //SAIDA02 DSN=&CLIENTE..IDE0.CADENT,DISP=(NEW,CATLG,DELETE), // UNIT=SYSDA,SPACE=(TRK,(5,1),RLSE), // DCB=(RECFM=FB,LRECL=80,BLKSIZE=0) //SYSOUT DD SYSOUT=* //PARM01 DD * PRINTALL //* //STEP0102 EXEC PGM=MYPROGXX,COND=(0,NE) //ENTR03 DD DSN=&CLIENTE..IDE0.CADENT,DISP=&VOIDE //ENTR04 DD DSN=&CLIENTE..IDE0.&SAIDA,DISP=SHR //SAIDA03 DSN=&CLIENTE..IDE0.CADSAI(+1),DISP=(NEW,CATLG,DELETE), // UNIT=SYSDA,SPACE=(TRK,(5,1),RLSE), // DCB=(GDG,RECFM=FB,LRECL=120,BLKSIZE=0) //RELATO DD SYSOUT=(R,,XPTO)

DD

DD

Modelo de um define CLUSTER: //IDE14KR JOB ‘(9983,98,978,09)’,’ADELMO’, // CLASS=6,MSGCLASS=U //STEP0101 EXEC PGM=IDCAMS //SYSIN DD * DELETE (IDEYA.CADENC) PURGE CLUSTER IF MAXCC = 8 THEN SET MAXCC = 0 DEFINE CLUSTER NAME (IDEYA.CADENC)VOL (VOL001) CYL (15 5) KEY (12 5) RECORDSIZE (250 250) FREESPACE (20 5) BUFFERSPACE (6192) SHAREOPTIONS (2,3) NOEMBEDED 30

Serviços de Informática MainFrame Training

JCL e UTILITÁRIOS

DATA(NAME(IDEYA.CADENC.DATA)) INDEX(NAME(IDE14.IDEO.CADENC.INDEX)) /* // Existem vários outros parâmetros que não estudaremos agora pois não são foco do nosso estudo. Estes são os principais. Lembre-se que ao definir um arquivo ele ainda não está 'populado' isto é, ainda não contém dados, apenas o 'esqueleto' do arquivo. Para popular o arquivo deverá ser feito através de arquivos sequenciais carregados pelo utilitário IDCAMS (parâmetro repro) ou por introdução manual através do CICS.

Para carregar um arquivo VSAM a partir de um sequencial usando o utilitário IDCAMS com opção repro: //IDE14KR JOB ‘(9983,98,978,09)’,’ADELMO’, // CLASS=6,MSGCLASS=U //STEP0101 EXEC PGM=IDCAMS //DD01 DD DSN=IDEYA.CADENC.SEQ,DISP=SHR //DD02 DD DSN=IDEYA.CADENC,DISP=SHR //SYSIN DD * REPRO INFILE(DD01) OUTFILE (DD02) REUSE /* O PARÂMETRO REUSE DELETA DADOS QUE PORVENTURA EXISTIREM NO ARQUIVO. ROSCOE Entidades Linha de comandos – Situada acima da linha pontilhada, são 3 linhas onde poderão ser inseridos comandos do aplicativo. Área de display – abaixo da linha pontilhada, é a área onde será exibido o resultado do comando executado. Não é possível interferir na área de display.

31

Serviços de Informática MainFrame Training

JCL e UTILITÁRIOS

AWS – É a área que sobrepõe a área de display quando esta é chamada. É a área de work onde o usuário poderá trabalhar. Acessado pelo cursor. Roslib – Bilioteca particular do usuário que poderá ser acessada pela linha de comando. Detalhe: o Roscoe não é caracter sensitivo. Isto é, pode-se usar letras maiúsculas ou minúsculas. DETALHE: Os atalhos do Windows ‘Control+c’ e ‘Control+V’ também funcionam nos emuladores. UTILIZAÇÃO NA LINHA DE COMANDO A D IDENGO.BIRA01.+ ------ Exibe todos os datasets do sistema c que comecem com IDENGO.BIRA01.+ Ex. do resultado. SEARCH ARGUMENT TYPE IDENGO.BIRA01.+ CATALOG.MVSICFM.VPR ICF DATA SET NAME EXT IDENGO.BIRA01.COBLIB IDENGO.BIRA01.COBLIB2 IDENGO.BIRA01.DBRMLIB.DATA IDENGO.BIRA01.JCLDATA IDENGO.BIRA01.LOADLIB IDENGO.BIRA01.MAPLIB IDENGO.BIRA01.PGMS MATCHES CATALOG NAME 7 STATUS TRKS IN-USE %USED 101 97 2 4 3 1 16 2 13 1 99 7 8 1 75 6 8 1 75 21 28 1 75 3 4 1

105 150

A D IDENGO.+ ---- Irá exibir todos os arquivos do sistema que comecem com IDEngo. (É sempre bom após a visualização, liberar o dataset através do comando - ‘D D’. A J 9999 -------- onde 9999 é o número do job que foi submetido.

A L + ---- Exibe o conteúdo da Roslib A L AM* ----- Exibe todos os membros da Roslib que comecem com AM...

32

Serviços de Informática MainFrame Training

JCL e UTILITÁRIOS os jobs ativos (em processamento)

DIS A --- Exibe todos independente de quem submeteu.

DIS JOAQ* -- Exibe todos os jobs começados com independente de estar em wait para execução, em processamento ou encerrado.

‘JOAQ’

EXP DSN=IDENGO.BIRA01.COBLIB(PGM0128) --- Exporta o conteúdo da AWS para a biblioteca IDENGO.BIRA01.COBLIB com o nome de PGM0128. IMP DSN=IDENGO.BIRA01.COBLIB(PGM0128) --- Importa o membro PGM0128 da biblioteca EXP DSN=IDENGO.BIRA01.COBLIB diretamente para a AWS. STA CMD ------ Exibe os últimos comandos emitidos na linha de comando. Basta digitar o numero da msg e ela aparecerá na linha De comando novamente. S(AVE) PGM025 --- Salva o atual conteúdo da AWS na Roslib como PGM025. F(ETCH) PGM025 -- Busca o programa PGM025 na Roslib e traz para AWS. Este comando necessita do comando ‘A’ em seguida para habilitá-lo na AWS. U * --- Faz IDEdate na Roslib do arquivo que foi trazido por último. (no exemplo acima, PGM025). O COMANDO NA AWS E /BANANA/LARANJA/ --- Altera todas as palavras ‘banana’ para ‘laranja’ em todo conteúdo da aws.

33

Serviços de Informática MainFrame Training

JCL e UTILITÁRIOS

E /BANANA/LARANJA/ 15 28 -- Altera ‘banana’ para ‘laranja’ da linha 15 até a linha 28. E 12 25 /BANANA/LARANJA/ -- Altera todo conteúdo de ‘banana’ para ‘laranja’ entre as colunas 12 e 25. SORT FIELDS=(1,12,BI,A) -- Classifica todo o conteúdo da AWS começando na coluna 1 até a coluna 12, em ordem binária ascendente. R 1 1 -- Renumera as linhas a partir da linha 1 de começando do número 1. R 1 10 - Renumera as linhas a partir da linha 1 de 10 em 10. COMANDOS DE LINHAS Os comandos de linhas são executados (numeradas), desde que esteja na AWS. nas linhas à esquerda

> APPLID(ROSCOE) USER(M01,AMAURYM) > DSN() SCRL FULL COLS 00001 00073 PAU(M01.SDN) LINE 000001 > IDENGO.AMAURYM.ARQMOV > <...+....1....+....2....+....3....+....4....+....5....+....6....+....7... =============================== T O P ================================= 000001 OIJSADJOIADFDFJKLDFAKJLÇFADJKÇLFADJKJKLA 000002 JPIASDFJDAFSJKLKJSADFLJKLÇFADSKJLÇFDSAJK 000003 OIJASDFJKOADFSJKLFADSJKLAFDSJKLKJLÇFADSJ ============================ B O T T O M ============================== 1) - Neste exemplo acima, temos 3 linhas. SIDEonhamos que necessitemos manipula-las. > APPLID(ROSCOE) USER(M01,AMAURYM) D PENDING > AWS() SCRL FULL COLS 00001 00072 PAU(M01.SDN) A<ROS1> > <...+....1....+....2....+....3....+....4....+....5....+....6....+....7.. 34

Serviços de Informática MainFrame Training

JCL e UTILITÁRIOS O P

================================ T ================================= 000001 OIJSADJOIADFDFJKLDFAKJLÇFADJKÇLFADJKJKLA 0R0002 JPIASDFJDAFSJKLKJSADFLJKLÇFADSKJLÇFDSAJK 000003 OIJASDFJKOADFSJKLFADSJKLAFDSJKLKJLÇFADSJ ============================= B O T ============================== A letra ‘R’na linha 2 fará com que ela seja dIDElicada. Resultado:

T

O

M

APPLID(ROSCOE) USER(M01,AMAURYM) D PENDING AWS() SCRL FULL COLS 00001 00072 PAU(M01.SDN) A<ROS1> <...+....1....+....2....+....3....+....4....+....5....+....6....+....7.. ================================ T O P ================================= 000001 OIJSADJOIADFDFJKLDFAKJLÇFADJKÇLFADJKJKLA 000002 JPIASDFJDAFSJKLKJSADFLJKLÇFADSKJLÇFDSAJK 000003 JPIASDFJDAFSJKLKJSADFLJKLÇFADSKJLÇFDSAJK 000004 OIJASDFJKOADFSJKLFADSJKLAFDSJKLKJLÇFADSJ ============================= B O T T O M ============================== 2) - A letra ‘C’ fará que com a linha seja copiada. Neste caso, deverá ser colocada também a letra ‘A’ na linha acima da qual a linha deverá ser copiada. 3) - Se você quiser dIDElicar todas as linhas de 2 até 6, coloque ‘RR’ na linha 2 e ‘RR’ na linha 6. 4) - Se você quiser copiar da linha 5 até 8 para debaixo da linha 33, coloque ‘CC’ na linha 5 e na linha 8 e apenas um ‘A’ na linha 33. Se você quiser juntar as linhas 1 com a linha 2, coloque ‘M’ na linha 1 e ‘O’ na linha 2 ================================ T ================================= 0M00001 OIJSADJOIADFDFJ 0O0002 ADFLJKLÇFADSKJLÇFDSAJK 000003 OIJASDFJKOADFSJKLFADSJKLAFDSJKLKJLÇFADSJ O P

35

Serviços de Informática MainFrame Training

JCL e UTILITÁRIOS O T T O M

============================= B ============================== e o resultado será este:

================================ T ================================= 000002 OIJSADJOIADFDFJ ADFLJKLÇFADSKJLÇFDSAJK 000003 OIJASDFJKOADFSJKLFADSJKLAFDSJKLKJLÇFADSJ ============================= B O T ============================== ‘I’ ----- Para inserir uma nova linha logo abaixo. ‘I12’ --- Insere 15 linhas a partir daquela linha. ‘D’ -- Deleta a linha corrente. ‘D6’ ----- Deleta esta linha e as próximas 5. ‘DB’ ---- Deleta todas as linhas abaixo desta.

O

P

T

O

M

‘TS’ ---- Para quebrar uma linha (dividir em dois). Coloque este comando na linha, depois coloque o cursor no ponto para ser quebrado e dê ‘enter’. ‘)2’ -- Faz com que esta linha seja ‘empurrada’ para esquerda em 2 colunas. ‘(9’ --- Faz com que esta linha seja movida para esquerda em 9 colunas (pode haver truncamento em ambos os casos). Obs.: se quiser repetir o comando num determinado range de linhas, utilize ‘))9’ na linha inicial e ‘))’ na linha final ‘*’ ---- Colocando um asterisco numa linha fará com que ela suba para a primeira da página. COMANDOS DE CONTROLE DE PÁGINA PF8 ---- Avança 1 página (tanto na aws como em display) PF7 ---- Volta 1 página PF10 -- Move conteúdo para esquerda 36

Serviços de Informática MainFrame Training

JCL e UTILITÁRIOS

15 + PF10 -- Move 15 colunas para esquerda PF11 -- Move conteúdo para direita 6 + PF11 -- Move 6 colunas para direita M + PF8 -- Avança até o final do texto. TOP + PF7 -- Volta ao inicio do texto. POINT L 345 -- Posiciona o cursor na linha 345 to texto (passa a ser a primeira do editor)

37

Sign up to vote on this title
UsefulNot useful