Ir ao conteúdo
  • Cadastre-se

(Duvida Cobol) Como realizar quebra de linha e percorrer registros da Sysin


Posts recomendados

Boa Noite, estou fazendo o seguinte exercício que consta em:

  1. Ler 20 registros a partir da Sysin(Regvenda)
  2. Os registros já devem estar classificados por código
  3. Mostrar o valor total de vendas, consolidados por filial (quebra simples)
  4. No final exibir total e parar processamento

Assim a Sysout seria por exemplo:

Relatorio Consolidado Por FilialFilial                   Total Vendas99                       Z.ZZZ.ZZ9,99...                      .............                      ..........TOTAL GERAL:             ZZ.ZZZ.ZZ9,99

Meu programa (Coblib) ficou assim:

 IDENTIFICATION DIVISION.                                       *=======================*                                        PROGRAM-ID.   FTCOB008.                                        *AUTHOR.       VICTOR BORGHI GIMENEZ.                           *DATE-WRITTEN. 06/04/2015.                                      *--------------------------------------------------------------** OBJETIVO: RECEBER DADOS DA SYSIN(ACCEPT)                      *           CALCULAR AS VENDAS REALIZADAS POR CADA FILIAL       *--------------------------------------------------------------**------------------> HISTORICO - MANUTENCAO <------------------** VERSAO  MES/ANO  NR.DOC  IDENT.  DESCRICAO                    * ------  -------  ------  ------  -------------------------   **  V01    ABR/2015 010001  SISTEMA MOSTRA SYSOUT                *--------------------------------------------------------------* ENVIRONMENT DIVISION.                                          *====================*                                           CONFIGURATION SECTION.                                           *---------------------*                                            SPECIAL-NAMES.                                                        DECIMAL-POINT IS COMMA                                            CURRENCY SIGN IS "R$ " WITH PICTURE SYMBOL "$"                    .                                                             INPUT-OUTPUT SECTION.                                            *---------------------*                                            DATA DIVISION.                                                   *=============*                                                    FILE SECTION.                                                    *------------*                                                     WORKING-STORAGE SECTION.                                         *-----------------------*                                          01  FILLER                 PIC X(35)        VALUE                     '**** INICIO DA WORKING-STORAGE ****'.                                                                                                                                                           *-----> VARIAVEIS AUXILIARES UTILIZADA NO PROCESSAMENTO            01  WS-AREA-AUX.                                                      05  WS-FIM                 PIC X(01).                             05  WS-CTLIDO              PIC 9(02).                             05  WS-VENDA-ANT           PIC 9(6)V99.                           05  WS-FILIAL-ANT          PIC 9(2)V99.                           05  WS-TOTALVENDAS         PIC 9(7)V99.                      *-----> ENTRADA - DADOS VIA SYSIN (NO JCL DE EXECUCAO)             01  WS-REGVENDA.                                                      05 WS-CODIGO.                                                        07 WS-FILIAL        PIC 9(2).                                     07 WS-DEPTO         PIC 9(2).                                     07 WS-NUM           PIC 9(3).                                  05 WS-NOME             PIC X(20).                                 05 WS-VENDA            PIC 9(6)V99.                           01  FILLER                 PIC X(35)         VALUE SPACES.       *-----> SAIDA - DADOS VIA SYSOUT                                                                                                     01 CAB1.                                                             03 FILLER PIC X(50) VALUE "RELATORIO CONSOLIDADO POR FILIAL".  01 CAB2.                                                             03 FILLER PIC X(50)  VALUE                                             "FILIAL                    TOTAL VENDAS".                 01 DEP.                                                              03 FILLER             PIC X(02).                                  03 FILIAL-DEP         PIC X(02).                                  03 FILLER             PIC X(02).                                  03 TOTALVENDAS-DEP    PIC Z.ZZZ.ZZ9,99.                                                                                          01  FILLER               PIC X(35)        VALUE                                                                                         '****** FIM DA WORKING-STORAGE *****'.                       *                                                                  PROCEDURE DIVISION.                                              *==================*                                              *--------------------------------------------------------------*  *    PROCESSO PRINCIPAL                                           *--------------------------------------------------------------*   000-FTCOB008.                                                                                                                           PERFORM 010-INICIAR                                               PERFORM 030-PROCESSAR UNTIL WS-FIM = 'S'                          PERFORM 090-TERMINAR                                              STOP RUN                                                          .                                                            *--------------------------------------------------------------*  *    PROCEDIMENTOS INICIAIS                                       *--------------------------------------------------------------*   010-INICIAR.                                                          DISPLAY CAB1                                                      DISPLAY CAB2                                                      PERFORM 025-LER-SYSIN                                             .                                                          *--------------------------------------------------------------**    LEITURA DADOS DA SYSIN                                     *--------------------------------------------------------------* 025-LER-SYSIN.                                                                                                                      ACCEPT WS-REGVENDA  FROM SYSIN                                                                                                  IF WS-REGVENDA = ALL '9'                                           MOVE   'S'     TO  WS-FIM                                    ELSE                                                               ADD 1  TO WS-CTLIDO                                          END-IF                                                          .                                                          *--------------------------------------------------------------**    PROCESSAR DADOS RECEBIDOS DA SYSIN ATE FIM DOS REGISTROS   *--------------------------------------------------------------* 030-PROCESSAR.                                                      PERFORM 032-SOMAR-REGISTROS                                       PERFORM 025-LER-SYSIN                                             .                                                            *--------------------------------------------------------------*  *                SOMAR REGISTROS POR CODIGO                       *--------------------------------------------------------------*   032-SOMAR-REGISTROS.                                                  PERFORM WS-REGVENDA FROM 1 TO 20 WHILE                            MOVE WS-FILIAL TO WS-FILIAL-ANT                                   MOVE WS-VENDA TO WS-VENDA-ANT                                       IF WS-FILIAL-ANT = WS-FILIAL                                         COMPUTE WS-TOTAL = WS-VENDA + WS-VENDA-ANT                     ELSE                                                                 MOVE WS-FILIAL TO FILIAL-DEP                                      MOVE WS-TOTALVENDAS TO TOTALVENDAS-DEP                            DISPLAY DEP                                                    END IF                                                          .                                                                                                                              *----------------------------------------------------------------**                     PROCEDIMENTOS FINAIS                        *----------------------------------------------------------------* 090-TERMINAR.                                                                                                                           DISPLAY ' *========================================*'             DISPLAY ' *   TOTAIS DE CONTROLE - FTCOB008*'                     DISPLAY ' *----------------------------------------*'             DISPLAY ' * REGISTROS LIDOS    - SYSIN  = ' WS-CTLIDO             DISPLAY ' *========================================*'             DISPLAY ' *----------------------------------------*'             DISPLAY ' *      TERMINO NORMAL DO FTCOB008*'                     DISPLAY ' *----------------------------------------*'             .                                                            *---------------> FIM DO PROGRAMA FTCOB008 <-------------------*  

E a massa de dados (Joblib):

-Warning- The UNDO command is not available until you change                 your edit profile using the command RECOVERY ON.         //GPAZ99J2 JOB ,MSGCLASS=X,CLASS=C,NOTIFY=GPAZ99,TIME=(0,20)//*****************************************************************//* LER DADOS DA SYSIN - REGISTRO COM '99...99' INDICA FIM DOS REG.//*****************************************************************//STEP1   EXEC PGM=FTCOB008                                        //STEPLIB DD DSN=GP.GERAL.LOADLIB,DISP=SHR                         //SYSIN   DD *                                                     0109111MARIA DAS GRACAS    00014050                                0101121FERNANDO RODRIGUES  01550000                                0101121SUELI MATHIAS       00024050                                0204121CASSIO DE SOUZA     01000000                                      ......................................................................000026 3010121LUCIANO TEIXEIRA    00128700                                     000027 5009121MICHEL COSTA BASTOS 00300000                                     000028 99999999999999999999999999999999999999                                  000029 //*                                                                     ****** **************************** Bottom of Data ****************************                *Total de 20 registros      

Só que compilando isso na Compcob está indo normalmente dando saída OK (Maxcc=0) mas na massa de dados segui as regras na hora de declarar as variáveis nos tamanhos solicitados mas a saída deu : 06.17.42 JOB01557 $HASP165 GPAZ99J2 ENDED AT N1 - ABENDED S806 U0000 CN(INTERNA

L).

Nesse caso gostaria de saber se a lógica que usei está correta e como eu poderia percorrer todos os registros somando dados das vendas de mesmas filiais, nesse caso se está certo o perform que estou utilizando ou teria que ser só por if?! Valeu!!

alguém??

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...