Advertisement
arthur393

CADASTRO CLIENTE COM EASTER EGG

May 10th, 2014
328
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
COBOL 14.46 KB | None | 0 0
  1.         IDENTIFICATION DIVISION.
  2.         PROGRAM-ID. BANCO-INLINE.
  3.         ENVIRONMENT DIVISION.
  4.         CONFIGURATION SECTION.
  5.         SPECIAL-NAMES.
  6.         DECIMAL-POINT IS COMMA.
  7.         INPUT-OUTPUT SECTION.
  8.         FILE-CONTROL.
  9.             SELECT CLIENTE ASSIGN TO DISK
  10.             ORGANIZATION INDEXED
  11.             ACCESS MODE DYNAMIC
  12.             RECORD KEY CD_CLIENTE-P
  13.             FILE STATUS ARQST.
  14.         DATA DIVISION.
  15.         FILE SECTION.
  16.  
  17.         FD CLIENTE LABEL RECORD STANDARD
  18.                DATA RECORD IS REG-CLIENTE
  19.                VALUE OF FILE-ID IS "CLIENTE.DAT".
  20.  
  21.         01 REG-CLIENTE.
  22.            02 CD_CLIENTE-P PIC 9(4).
  23.            02 NOME-P PIC X(30).
  24.            02 CPF-P PIC 9(11).
  25.            02 AGENCIA-P PIC 9(5).
  26.            02 CONTA-CORRENTE-P PIC X(10).
  27.            02 IDADE-P PIC 9(3).
  28.            02 SEXO-P PIC X(01).
  29.            02 SALDO-P PIC 9(5)V99.
  30.            02 DEPOSITO-P PIC 9(5)V99.
  31.            02 SALARIO-P PIC 9(5)V99.
  32.            02 LIMITE-P PIC 9(5)V99.
  33.  
  34.         WORKING-STORAGE SECTION.
  35.  
  36.         01 ESPACO PIC X(30) VALUE SPACES.
  37.         01 CPF-DIGITOS OCCURS 11 TIMES.
  38.             02 CPFDIG PIC 9(1) VALUE ZEROES.
  39.  
  40.         01 VARIAVEIS.
  41.              02 CD_CLIENTE PIC 9(4) VALUE ZEROES.
  42.              02 NOME PIC X(30) VALUE SPACES.
  43.              02 CPF PIC 9(11)   VALUE ZEROS.
  44.              02 SOMA1 PIC 9(3) VALUE ZEROS.
  45.              02 SOMA2 PIC 9(3) VALUE ZEROS.
  46.              02 RESTO1 PIC 9(2) VALUE ZEROS.
  47.              02 RESTO2 PIC 9(2) VALUE ZEROS.
  48.              02 DIGV1 PIC 9(1) VALUE ZEROS.
  49.              02 DIGV2 PIC 9(1) VALUE ZEROS.
  50.              02 I PIC 99 VALUE ZEROES.
  51.              02 AGENCIA PIC 9(5) VALUE ZEROES.
  52.              02 CONTA-CORRENTE PIC X(10) VALUE SPACES.
  53.              02 IDADE PIC 9(3) VALUE ZEROS.
  54.                88 IDADE-18-150 VALUE 18 THRU 150.
  55.              02 SEXO PIC X(01) VALUE SPACES.
  56.                88 FM VALUE "F" "M" "f" "m".
  57.              02 SALDO PIC 9(05)V99 VALUE ZEROS.
  58.              02 DEPOSITO PIC 9(5)V99 VALUE ZEROS.
  59.              02 SAQUE PIC 9(5)V99 VALUE ZEROS.
  60.              02 SALARIO PIC 9(5)V99 VALUE ZEROS.
  61.              02 LIMITE PIC 9(5)V99 VALUE ZEROS.
  62.              02 WS-CONT PIC X(1) VALUE SPACES.
  63.              02 ARQST PIC X(2).
  64.              02 OPCAO PIC X(1) VALUE SPACES.
  65.              02 SALVA PIC X(1) VALUE SPACES.
  66.              02 IGUAL PIC 9 VALUE ZEROS.
  67.  
  68.  
  69.  
  70.         01 MENSAGENS-DE-CRITICA.
  71.              02 MENSA1 PIC X(30) VALUE
  72.              "CODIGO INVALIDO <REDIGITE>".
  73.              02 MENSA2 PIC X(30) VALUE
  74.              "NOME INVALIDO <REDIGITE>".
  75.              02 MENSA3 PIC X(40) VALUE
  76.              "CPF INVALIDO <REDIGITE>".
  77.              02 MENSA4 PIC X(30) VALUE
  78.              "AGENCIA INVALIDA <REDIGITE>".
  79.              02 MENSA5 PIC X(50) VALUE
  80.              "CONTA CORRENTE INVALIDA <REDIGITE>".
  81.              02 MENSA6 PIC X(30) VALUE
  82.              "IDADE INVALIDA <REDIGITE>".
  83.              02 MENSA7 PIC X(30) VALUE
  84.              "SEXO INVALIDO <REDIGITE>".
  85.              02 MENSA8 PIC X(30) VALUE
  86.              "VALOR INVALIDO <REDIGITE>".
  87.              02 MENSA9 PIC X(40) VALUE
  88.              "SALARIO INVALIDO <REDIGITE>".
  89.              02 MENSA10 PIC X(30) VALUE
  90.              "OPCAO INVALIDA <REDIGITE>".
  91.              02 MENSA11 PIC X(30) VALUE
  92.              "FIM DE PROGRAMA".
  93.              02 MENSA12 PIC X(30) VALUE SPACES.
  94.  
  95.  
  96.         01 DATA-DO-SISTEMA.
  97.              02 ANO PIC 9(02) VALUE ZEROS.
  98.              02 MES PIC 9(02) VALUE ZEROS.
  99.              02 DIA PIC 9(02) VALUE ZEROS.
  100.  
  101.  
  102.         SCREEN SECTION.
  103.         01 EASTER-EGG-BATMAN.
  104.  
  105.  
  106.  
  107.              02 BLANK SCREEN.
  108.  
  109.        02 LINE 03 COLUMN 15 VALUE
  110.        "       _==/           i     i           \==_       ".
  111.        02 LINE 04  COLUMN 15 VALUE
  112.        "      /XX/            |\___/|            \XX\     ".
  113.        02 LINE 05  COLUMN 15 VALUE
  114.        "    /XXXX\           |XXXXX|            /XXXX\   ".
  115.        02 LINE 06  COLUMN 15 VALUE
  116.        "   |XXXXXX\_         _XXXXXXX_         _/XXXXXX|   ".
  117.        02 LINE 07  COLUMN 15 VALUE
  118.        "  XXXXXXXXXXXxxxxxxxXXXXXXXXXXXxxxxxxxXXXXXXXXXXX  ".
  119.        02 LINE 08  COLUMN 15 VALUE
  120.        " |XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX| ".
  121.        02 LINE 09  COLUMN 15 VALUE
  122.        " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ".
  123.        02 LINE 10  COLUMN 15 VALUE
  124.        " |XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX| ".
  125.        02 LINE 11  COLUMN 15 VALUE
  126.        "  XXXXXX/^^^^ \XXXXXXXXXXXXXXXXXXXXX/^^^^^\XXXXXX  ".
  127.        02 LINE 12  COLUMN 15 VALUE
  128.        "   |XXX|       \XXX/^^\XXXXX/^^\XXX/       |XXX|  ".
  129.        02 LINE 13  COLUMN 15 VALUE
  130.        "     \XX\      \X/    \XXX/    \X/       /XX/    ".
  131.        02 LINE 14  COLUMN 15 VALUE
  132.        "         \             \X/              /       ".
  133.        02 LINE 16 COLUMN 15 VALUE "HELLO, SIR WAYNE,".
  134.  
  135.        02 LINE 17 COLUMN 15 VALUE "YOUR CREDIT IS INFINITE.".
  136.  
  137.         01 TELA.
  138.              02 BLANK SCREEN.
  139.              02 LINE 02 COLUMN 28 VALUE
  140.  
  141.               "B A N C O  I N L I N E".
  142.              02 LINE 04 COLUMN 21 VALUE "CD.: ".
  143.              02 LINE 04 COLUMN 33 VALUE "NOME  ".
  144.              02 LINE 06 COLUMN 21 VALUE "CPF    ".
  145.              02 LINE 08 COLUMN 21 VALUE "AGENCIA    ".
  146.              02 LINE 10 COLUMN 21 VALUE "CONTA CORRENTE    ".
  147.              02 LINE 12 COLUMN 21 VALUE "IDADE    ".
  148.              02 LINE 14 COLUMN 21 VALUE "SEXO    ".
  149.              02 LINE 16 COLUMN 21 VALUE "DEPOSITO INICIAL    ".
  150.              02 LINE 18 COLUMN 21 VALUE "SALARIO    ".
  151.  
  152.       *     02 LINE 20 COLUMN 21 VALUE "CONTINUA (S/N) < >".
  153.              02 LINE 22 COLUMN 21 VALUE
  154.              "+----------------MENSAGEM----------------+ ".
  155.              02 LINE 23 COLUMN 21 VALUE "|".
  156.              02 LINE 23 COLUMN 62 VALUE "|".
  157.              02 LINE 24 COLUMN 21 VALUE
  158.              "+----------------------------------------+ ".
  159.  
  160.         PROCEDURE DIVISION.
  161.  
  162.  
  163.         ROT-INICIO.
  164.             PERFORM ABRE-ARQ.
  165.             PERFORM ROT-INCLUIR UNTIL OPCAO = "N".
  166.             CLOSE CLIENTE.
  167.             STOP RUN.
  168.  
  169.         ABRE-ARQ.
  170.             OPEN I-O CLIENTE.
  171.             IF ARQST NOT = "00"
  172.                 CLOSE CLIENTE
  173.                 OPEN OUTPUT CLIENTE.
  174.  
  175.         ROT-INCLUIR.
  176.              PERFORM ROT-ABERTURA.
  177.              PERFORM ROT-RECEBE.
  178.              PERFORM ROT-CONTINUA UNTIL OPCAO = "S" OR "N" OR "s" OR
  179.              "n".
  180.  
  181.  
  182.         ROT-ABERTURA.
  183.             DISPLAY TELA.
  184.             ACCEPT DATA-DO-SISTEMA FROM DATE.
  185.             DISPLAY  DIA "/" MES "/" ANO AT 0107.
  186.             MOVE SPACES TO SEXO NOME CONTA-CORRENTE ARQST.
  187.             MOVE ZEROS TO CD_CLIENTE I SOMA1 SOMA2
  188.             CPF AGENCIA IDADE DEPOSITO SAQUE
  189.             SALDO SALARIO LIMITE DIGV1 DIGV2 AGENCIA
  190.             RESTO1 RESTO2.
  191.             MOVE SPACE TO WS-CONT OPCAO SALVA SEXO-P.
  192.             MOVE SPACES TO NOME-P CONTA-CORRENTE-P.
  193.             MOVE ZEROS TO CPF-P CD_CLIENTE-P
  194.             AGENCIA-P IDADE-P SALDO-P SALARIO-P LIMITE-P.
  195.  
  196.         ROT-RECEBE.
  197.             PERFORM ROT-CODIGO UNTIL CD_CLIENTE > 0.
  198.             PERFORM ROT-NOME.
  199.             PERFORM ROT-CPF.
  200.             PERFORM ROT-AGENCIA.
  201.             PERFORM ROT-CONTA-CORRENTE.
  202.             PERFORM ROT-IDADE.
  203.             PERFORM ROT-SEXO.
  204.             PERFORM ROT-SALDO.
  205.             PERFORM ROT-DEPOSITO-INICIAL.
  206.             PERFORM ROT-SALARIO.
  207.             PERFORM ROT-LIMITE.
  208.             PERFORM ROT-GRAVA UNTIL SALVA = "S" OR = "N" OR = "s" OR
  209.             "n".
  210.  
  211.         ROT-CODIGO.
  212.             SET IGUAL TO 0.
  213.             ACCEPT CD_CLIENTE AT 0426 WITH PROMPT AUTO.
  214.             DISPLAY MENSA12 AT 2331.
  215.             MOVE CD_CLIENTE TO CD_CLIENTE-P.
  216.             IF CD_CLIENTE = ZEROES
  217.             THEN
  218.                 DISPLAY MENSA1 AT 2323
  219.             ELSE
  220.                READ CLIENTE NOT INVALID KEY
  221.                    DISPLAY "JA CADASTRADO" AT 2323
  222.                    PERFORM ROT-CODIGO
  223.                END-READ
  224.                    DISPLAY MENSA12 AT 2323
  225.             END-IF.
  226.       ******************************************************************
  227.       * JA-CADASTRADO.
  228.       *    DISPLAY "JA CADASTRADO" AT 2323.
  229.       *    SET IGUAL TO 1.
  230.       *    MOVE SPACE TO SEXO-P.
  231.       *    MOVE SPACES TO NOME-P CONTA-CORRENTE-P.
  232.       *    MOVE ZEROS TO CD_CLIENTE-P CPF-P
  233.       *    AGENCIA-P IDADE-P SALDO-P DEPOSITO-P SALARIO-P LIMITE-P.
  234.       *****************************************************************
  235.  
  236.         ROT-NOME.
  237.             ACCEPT  NOME WITH PROMPT AT 0439.
  238.             DISPLAY MENSA12 AT 2331.
  239.             MOVE NOME TO NOME-P
  240.             IF NOME-P = "BATMAN"
  241.                DISPLAY ERASE AT 0101
  242.                DISPLAY EASTER-EGG-BATMAN STOP RUN
  243.                DISPLAY MENSA11 AT 2323.
  244.  
  245.             IF NOME-P <> SPACES
  246.                  DISPLAY MENSA12 AT 2323
  247.             ELSE
  248.                  DISPLAY  MENSA2 AT 2323 PERFORM ROT-NOME.
  249.  
  250.         ROT-CPF.
  251.              ACCEPT CPF AT 0639 WITH PROMPT AUTO.
  252.              MOVE CPF TO CPF-P.
  253.              IF CPF = ZEROS OR CPF = 11111111111 OR CPF= 22222222222
  254.                          OR CPF = 33333333333 OR CPF= 44444444444
  255.                          OR CPF = 55555555555 OR CPF= 66666666666
  256.                          OR CPF = 77777777777 OR CPF= 88888888888
  257.                          OR CPF = 99999999999
  258.                 DISPLAY MENSA3 AT 2323 PERFORM ROT-CPF
  259.              ELSE
  260.                 PERFORM VARYING I FROM 1 BY 1 UNTIL I > 11
  261.                    COMPUTE CPFDIG(I) = FUNCTION MOD (CPF , 10)
  262.                    COMPUTE CPF = CPF / 10
  263.                 END-PERFORM
  264.       *# VERIFICACAO DO DIGITO 1
  265.                 COMPUTE SOMA1 = (CPFDIG(1)* 10) + (CPFDIG(2)* 9)
  266.                               + (CPFDIG(3)*  8) + (CPFDIG(4)* 7)
  267.                               + (CPFDIG(5)*  6) + (CPFDIG(6)* 5)
  268.                               + (CPFDIG(7)* 4) + (CPFDIG(8)* 3)
  269.                               + (CPFDIG(9)*  2)
  270.                    COMPUTE RESTO1 = FUNCTION MOD (SOMA1, 11)
  271.                IF RESTO1 < 2
  272.                    COMPUTE DIGV1 = 0
  273.                ELSE
  274.                    COMPUTE RESTO1 = 11 - RESTO1
  275.                    COMPUTE DIGV1  = RESTO1
  276.                END-IF
  277.       * VERIFICACAO DO DIGITO 2
  278.                COMPUTE SOMA2 =  (CPFDIG(1)* 11) + (CPFDIG( 2) * 10)
  279.                               + (CPFDIG(3)*  9) + (CPFDIG( 4) * 8)
  280.                               + (CPFDIG(5)*  7) + (CPFDIG( 6) * 6)
  281.                               + (CPFDIG(7)*  5) + (CPFDIG( 8) * 4)
  282.                               + (CPFDIG(9)*  3) + (CPFDIG(10)*  2)
  283.                COMPUTE RESTO2 = FUNCTION MOD (SOMA2, 11)
  284.  
  285.                  IF RESTO2 < 2
  286.                       COMPUTE DIGV2 = 0
  287.                  ELSE
  288.                       COMPUTE RESTO2 = 11 - RESTO2
  289.                       COMPUTE DIGV2  = RESTO2
  290.                  END-IF
  291.  
  292.                  IF CPFDIG(10) = DIGV1 AND CPFDIG(11) = DIGV2
  293.                  THEN NEXT SENTENCE
  294.  
  295.                  ELSE DISPLAY MENSA3 AT 2323 PERFORM ROT-CPF.
  296.       ******************************************************************
  297.       *         DISPLAY CPFDIG(10) AT 2323
  298.       *         DISPLAY DIGV1 AT 2324
  299.       *         DISPLAY CPFDIG(11) AT 2326
  300.       *         DISPLAY DIGV2 AT 2327
  301.       *****************************************************************
  302.              EXIT.
  303.  
  304.         ROT-AGENCIA.
  305.              ACCEPT  AGENCIA WITH PROMPT AT 0839.
  306.              DISPLAY  MENSA12 AT 2331.
  307.              MOVE AGENCIA TO AGENCIA-P.
  308.              IF AGENCIA <> SPACES
  309.                DISPLAY MENSA12 AT 2323
  310.              ELSE
  311.                DISPLAY MENSA4 AT 2323 PERFORM ROT-AGENCIA.
  312.  
  313.         ROT-CONTA-CORRENTE.
  314.              ACCEPT  CONTA-CORRENTE WITH PROMPT AT 1039.
  315.              DISPLAY MENSA12 AT 2331.
  316.              MOVE CONTA-CORRENTE TO CONTA-CORRENTE-P.
  317.              IF CONTA-CORRENTE = SPACES
  318.                DISPLAY MENSA5 AT 2323 PERFORM ROT-CONTA-CORRENTE
  319.              ELSE
  320.                DISPLAY MENSA12 AT 2323.
  321.  
  322.         ROT-IDADE.
  323.              ACCEPT  IDADE WITH PROMPT AT 1239.
  324.              DISPLAY  MENSA12 AT 2331.
  325.              IF IDADE-18-150
  326.                 DISPLAY MENSA12 AT 2323
  327.                 MOVE IDADE TO IDADE-P
  328.              NEXT SENTENCE
  329.              ELSE DISPLAY MENSA6 AT 2323 PERFORM ROT-IDADE.
  330.  
  331.  
  332.         ROT-SEXO.
  333.              ACCEPT  SEXO WITH PROMPT AT 1439.
  334.              DISPLAY MENSA12 AT 2331.
  335.              IF FM
  336.                 DISPLAY MENSA12 AT 2323
  337.                 MOVE SEXO TO SEXO-P
  338.              NEXT SENTENCE
  339.              ELSE DISPLAY MENSA7 AT 2323 PERFORM ROT-SEXO.
  340.  
  341.         ROT-DEPOSITO-INICIAL.
  342.              ACCEPT DEPOSITO WITH PROMPT AT 1639.
  343.              DISPLAY MENSA12 AT 2331.
  344.              IF DEPOSITO <=  0
  345.                DISPLAY MENSA8 AT 2323 PERFORM ROT-DEPOSITO-INICIAL
  346.                MOVE DEPOSITO TO DEPOSITO-P
  347.                COMPUTE SALDO  = DEPOSITO
  348.              ELSE
  349.                 DISPLAY MENSA12 AT 2323.
  350.  
  351.  
  352.         ROT-SALARIO.
  353.              ACCEPT SALARIO WITH PROMPT AT 1839.
  354.              DISPLAY MENSA12 AT 2331.
  355.              IF SALARIO <= 0
  356.                DISPLAY MENSA9 AT 2323 PERFORM ROT-SALARIO
  357.                MOVE SALARIO TO SALARIO-P
  358.              ELSE
  359.                 DISPLAY MENSA12 AT 2323.
  360.  
  361.         ROT-SALDO.
  362.              MOVE SALDO TO SALDO-P.
  363.       *     DISPLAY MENSA8 AT 2323 PERFORM ROT-SALARIO
  364.              DISPLAY MENSA12 AT 2323.
  365.  
  366.         ROT-LIMITE.
  367.                 COMPUTE LIMITE = SALDO * 1.10.
  368.                 MOVE LIMITE TO LIMITE-P.
  369.       *        DISPLAY MENSA8 AT 2323 PERFORM ROT-LIMITE
  370.                 DISPLAY MENSA12 AT 2323.
  371.  
  372.       ******************************************************************
  373.       * ROT-CONTINUA.
  374.       *     ACCEPT WS-CONT WITH PROMPT AT 2033
  375.       *     DISPLAY MENSA12 AT 2331.
  376.       *     IF WS-CONT = "S" OR "s" GO TO  ROT-INICIO.
  377.       *     IF WS-CONT = "N" OR "n" DISPLAY MENSA11 AT 2323 STOP RUN
  378.       *     ELSE DISPLAY MENSA12 AT 2323 GO TO ROT-CONTINUA.
  379.       ******************************************************************
  380.  
  381.         ROT-GRAVA.
  382.             DISPLAY "SALVAR (S/N)?   [ ]" AT 2323.
  383.             ACCEPT SALVA AT 2340.
  384.             IF SALVA = "S" OR "s"
  385.                 WRITE REG-CLIENTE INVALID KEY STOP RUN.
  386.  
  387.         ROT-CONTINUA.
  388.             DISPLAY "CONTINUA (S/N)? [ ]" AT 2323.
  389.             ACCEPT OPCAO AT 2340.
  390.             IF OPCAO = "S" OR = "N" OR = "s" OR "n"
  391.                 DISPLAY MENSA11 AT 2323
  392.             ELSE
  393.                 DISPLAY "DIGITE S OU N" AT 2323
  394.             END-IF.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement