Skip to content

Instantly share code, notes, and snippets.

@nenodias
Last active September 1, 2020 13:18
Show Gist options
  • Save nenodias/3c933bba14bdfc6351fef28a3672adf4 to your computer and use it in GitHub Desktop.
Save nenodias/3c933bba14bdfc6351fef28a3672adf4 to your computer and use it in GitHub Desktop.
Cobol Operations
IDENTIFICATION DIVISION.
PROGRAM-ID. CRUD.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT ARQUIVO-FUNCIONARIO ASSIGN TO
"ARQUIVO-FUNCIONARIO-IDX.DAT" ORGANISATION IS INDEXED
RECORD KEY IS FUNCIONARIO-CODIGO ACCESS MODE IS DYNAMIC.
DATA DIVISION.
FILE SECTION.
FD ARQUIVO-FUNCIONARIO LABEL RECORDS ARE STANDARD.
01 FUNCIONARIO-REGISTRO.
05 FUNCIONARIO-CODIGO PIC 9(5).
05 FUNCIONARIO-NOME PIC X(20).
05 FUNCIONARIO-ENDERECO PIC X(50).
05 FUNCIONARIO-TELEFONE PIC X(15).
05 FUNCIONARIO-EMAIL PIC X(100).
05 FILLER PIC X VALUE "-".
WORKING-STORAGE SECTION.
01 RESPOSTA PIC X.
01 FINAL-ARQUIVO PIC X.
PROCEDURE DIVISION.
PROGRAM-BEGIN.
PERFORM MENU UNTIL RESPOSTA = "S".
PROGRAM-DONE.
STOP RUN.
MENU.
DISPLAY "OPERACAO".
DISPLAY "1 - CADASTRAR REGISTROS".
DISPLAY "2 - LER REGISTROS".
DISPLAY "3 - LER POR CODIGO".
DISPLAY "4 - ATUALIZAR REGISTRO POR CODIGO".
DISPLAY "5 - EXCLUIR REGISTRO POR CODIGO".
DISPLAY "S - SAIR".
ACCEPT RESPOSTA.
IF RESPOSTA = "1" THEN
PERFORM CADASTRAR-REGISTRO.
IF RESPOSTA = "2" THEN
PERFORM LER-REGISTRO.
IF RESPOSTA = "3" THEN
PERFORM LER-POR-CODIGO.
IF RESPOSTA = "4" THEN
PERFORM ATUALIZAR-REGISTRO-POR-CODIGO.
IF RESPOSTA = "5" THEN
PERFORM EXCLUIR-REGISTRO-POR-CODIGO.
IF RESPOSTA = "S" THEN
PERFORM PROGRAM-DONE.
* INSERCAO
CADASTRAR-REGISTRO.
OPEN I-O ARQUIVO-FUNCIONARIO.
MOVE "S" TO RESPOSTA.
PERFORM ADICIONA-REGISTRO UNTIL RESPOSTA = "N".
CLOSE ARQUIVO-FUNCIONARIO.
ADICIONA-REGISTRO.
INITIALIZE FUNCIONARIO-REGISTRO.
DISPLAY "INFORME O CODIGO".
ACCEPT FUNCIONARIO-CODIGO.
DISPLAY "INFORME O NOME".
ACCEPT FUNCIONARIO-NOME.
DISPLAY "INFORME O ENDERECO".
ACCEPT FUNCIONARIO-ENDERECO.
DISPLAY "INFORME O TELEFONE".
ACCEPT FUNCIONARIO-TELEFONE.
DISPLAY "INFORME O EMAIL".
ACCEPT FUNCIONARIO-EMAIL.
WRITE FUNCIONARIO-REGISTRO INVALID KEY
DISPLAY "CODIGO: " FUNCIONARIO-CODIGO
" IDENTIFICADOR JA FOI UTILIZADO"
END-WRITE.
DISPLAY "DESEJA ADICIONAR OUTRO REGISTRO (S/N)?"
ACCEPT RESPOSTA.
LER-POR-CODIGO.
OPEN INPUT ARQUIVO-FUNCIONARIO.
DISPLAY "CODIGO BUSCADO:".
ACCEPT FUNCIONARIO-CODIGO.
MOVE "S" TO RESPOSTA.
READ ARQUIVO-FUNCIONARIO RECORD
INVALID KEY MOVE "N" TO RESPOSTA
END-READ.
IF RESPOSTA = "S" THEN
PERFORM EXIBIR-REGISTRO
ELSE
DISPLAY "REGISTRO " FUNCIONARIO-CODIGO
" NAO ENCONTRADO"
END-IF.
CLOSE ARQUIVO-FUNCIONARIO.
* LEITURA
LER-REGISTRO.
OPEN INPUT ARQUIVO-FUNCIONARIO.
MOVE "N" TO FINAL-ARQUIVO.
PERFORM LER-PROXIMO-REGISTRO.
PERFORM EXIBIR-REGISTRO
UNTIL FINAL-ARQUIVO = "S".
CLOSE ARQUIVO-FUNCIONARIO.
LER-PROXIMO-REGISTRO.
READ ARQUIVO-FUNCIONARIO RECORD AT END
MOVE "S" TO FINAL-ARQUIVO.
EXIBIR-REGISTRO.
DISPLAY "CODIGO: "FUNCIONARIO-CODIGO.
DISPLAY "NOME: "FUNCIONARIO-NOME.
DISPLAY "ENDERECO: "FUNCIONARIO-ENDERECO.
DISPLAY "TELEFONE: "FUNCIONARIO-TELEFONE.
DISPLAY "EMAIL: "FUNCIONARIO-EMAIL.
DISPLAY "==================="
PERFORM LER-PROXIMO-REGISTRO.
ATUALIZAR-REGISTRO-POR-CODIGO.
PERFORM LER-POR-CODIGO.
IF RESPOSTA = 'S' THEN
DISPLAY "EDITAR REGISTRO: " FUNCIONARIO-CODIGO
DISPLAY "ALTERAR O NOME?(S/N)"
ACCEPT RESPOSTA
IF RESPOSTA = 'S' THEN
DISPLAY "INFORME O NOME"
ACCEPT FUNCIONARIO-NOME
END-IF
DISPLAY "ALTERAR O ENDERECO?(S/N)"
ACCEPT RESPOSTA
IF RESPOSTA = 'S' THEN
DISPLAY "INFORME O ENDERECO"
ACCEPT FUNCIONARIO-ENDERECO
END-IF
DISPLAY "ALTERAR O TELEFONE?(S/N)"
ACCEPT RESPOSTA
IF RESPOSTA = 'S' THEN
DISPLAY "INFORME O TELEFONE"
ACCEPT FUNCIONARIO-TELEFONE
END-IF
DISPLAY "ALTERAR O EMAIL?(S/N)"
ACCEPT RESPOSTA
IF RESPOSTA = 'S' THEN
DISPLAY "INFORME O EMAIL"
ACCEPT FUNCIONARIO-EMAIL
END-IF
OPEN I-O ARQUIVO-FUNCIONARIO
MOVE "S" TO RESPOSTA
REWRITE FUNCIONARIO-REGISTRO INVALID KEY
MOVE "N" TO RESPOSTA
END-REWRITE
IF RESPOSTA = 'S' THEN
DISPLAY "REGISTRO: " FUNCIONARIO-CODIGO
" ATUALIZADO"
ELSE
DISPLAY "ERRO AO REGRAVAR REGISTRO: "
FUNCIONARIO-CODIGO
END-IF
CLOSE ARQUIVO-FUNCIONARIO
MOVE 'N' TO RESPOSTA
END-IF.
EXCLUIR-REGISTRO-POR-CODIGO.
PERFORM LER-POR-CODIGO.
IF RESPOSTA = 'S' THEN
DISPLAY "EXCLUIR REGISTRO: " FUNCIONARIO-CODIGO
"(S/N)?"
ACCEPT RESPOSTA
IF RESPOSTA = 'S' THEN
OPEN I-O ARQUIVO-FUNCIONARIO
MOVE 'S' TO RESPOSTA
DELETE ARQUIVO-FUNCIONARIO RECORD INVALID KEY
MOVE 'N' TO RESPOSTA
END-DELETE
IF RESPOSTA = 'S' THEN
DISPLAY "REGISTRO: " FUNCIONARIO-CODIGO
" EXCLUIDO COM SUCESSO"
ELSE
DISPLAY "ERRO AO EXCLUIR REGISTRO: "
FUNCIONARIO-CODIGO
END-IF
CLOSE ARQUIVO-FUNCIONARIO
END-IF
MOVE 'N' TO RESPOSTA
END-IF.
IDENTIFICATION DIVISION.
PROGRAM-ID. CRUD.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT OPTIONAL ARQUIVO-CLIENTE ASSIGN TO
"ARQUIVO-CLIENTE.DAT" ORGANISATION IS SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD ARQUIVO-CLIENTE LABEL RECORDS ARE STANDARD.
01 CLIENTE-REGISTRO.
05 CLIENTE-NOME PIC X(20).
05 CLIENTE-ENDERECO PIC X(50).
05 CLIENTE-TELEFONE PIC X(15).
05 CLIENTE-EMAIL PIC X(100).
05 FILLER PIC X VALUE "-".
WORKING-STORAGE SECTION.
01 RESPOSTA PIC X.
01 FINAL-ARQUIVO PIC X.
PROCEDURE DIVISION.
PROGRAM-BEGIN.
PERFORM MENU UNTIL RESPOSTA = "S".
PROGRAM-DONE.
STOP RUN.
MENU.
DISPLAY "OPERACAO".
DISPLAY "1 - CADASTRAR REGISTROS".
DISPLAY "2 - LER REGISTROS".
DISPLAY "S - SAIR".
ACCEPT RESPOSTA.
IF RESPOSTA = "1" THEN
PERFORM CADASTRAR-REGISTRO.
IF RESPOSTA = "2" THEN
PERFORM LER-REGISTRO.
IF RESPOSTA = "S" THEN
PERFORM PROGRAM-DONE.
* INSERCAO
CADASTRAR-REGISTRO.
OPEN EXTEND ARQUIVO-CLIENTE.
MOVE "S" TO RESPOSTA.
PERFORM ADICIONA-REGISTRO UNTIL RESPOSTA = "N".
CLOSE ARQUIVO-CLIENTE.
ADICIONA-REGISTRO.
INITIALIZE CLIENTE-REGISTRO.
DISPLAY "INFORME O NOME".
ACCEPT CLIENTE-NOME.
DISPLAY "INFORME O ENDERECO".
ACCEPT CLIENTE-ENDERECO.
DISPLAY "INFORME O TELEFONE".
ACCEPT CLIENTE-TELEFONE.
DISPLAY "INFORME O EMAIL".
ACCEPT CLIENTE-EMAIL.
WRITE CLIENTE-REGISTRO.
DISPLAY "DESEJA ADICIONAR OUTRO REGISTRO (S/N)?"
ACCEPT RESPOSTA.
* LEITURA
LER-REGISTRO.
OPEN INPUT ARQUIVO-CLIENTE.
MOVE "N" TO FINAL-ARQUIVO.
PERFORM LER-PROXIMO-REGISTRO.
PERFORM EXIBIR-REGISTRO
UNTIL FINAL-ARQUIVO = "S".
CLOSE ARQUIVO-CLIENTE.
LER-PROXIMO-REGISTRO.
READ ARQUIVO-CLIENTE RECORD AT END
MOVE "S" TO FINAL-ARQUIVO.
EXIBIR-REGISTRO.
DISPLAY "NOME: "CLIENTE-NOME.
DISPLAY "ENDERECO: "CLIENTE-ENDERECO.
DISPLAY "TELEFONE: "CLIENTE-TELEFONE.
DISPLAY "EMAIL: "CLIENTE-EMAIL.
DISPLAY "==================="
PERFORM LER-PROXIMO-REGISTRO.
IDENTIFICATION DIVISION.
PROGRAM-ID. YOUR-PROGRAM-NAME.
DATA DIVISION.
FILE SECTION.
WORKING-STORAGE SECTION.
01 INDICE PIC 9(1) VALUE 1.
01 ALUNOS.
10 ALUNO OCCURS 4 TIMES.
15 NOME PIC X(20).
15 NOTA PIC 9(4)V99.
PROCEDURE DIVISION.
MAIN-PROCEDURE.
PERFORM PROGRAM-BEGIN.
PROGRAM-DONE.
STOP RUN.
PROGRAM-BEGIN.
MOVE "NENO" TO NOME(INDICE).
MOVE 10 TO NOTA(INDICE).
ADD 1 TO INDICE.
MOVE "JUCA" TO NOME(INDICE).
MOVE 8 TO NOTA(INDICE).
ADD 1 TO INDICE.
MOVE "LUCCA" TO NOME(INDICE).
MOVE 7 TO NOTA(INDICE).
ADD 1 TO INDICE.
MOVE "XUBIRU" TO NOME(INDICE).
MOVE 5 TO NOTA(INDICE).
PERFORM EXIBIR VARYING INDICE FROM 1 BY 1 UNTIL INDICE > 4.
EXIBIR.
DISPLAY "ALUNO:" NOME(INDICE) " NOTA: "NOTA(INDICE).
END PROGRAM YOUR-PROGRAM-NAME.
IDENTIFICATION DIVISION.
PROGRAM-ID. PROG27.
* ADD, SUBTRACT, MULTIPLI, DIVIDE.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 VALOR1 PIC 99 VALUE 20.
01 VALOR2 PIC 9 VALUE 5.
01 VALOR3 PIC 99 VALUE 15.
01 RESULTADO PIC 99.
PROCEDURE DIVISION.
PROGRAM-BEGIN.
PERFORM EXIBE-VALORES.
* VALOR1 = VALOR2 + VALOR1
ADD VALOR2 TO VALOR1.
DISPLAY "VALOR1 ADD VALOR2: ".
PERFORM EXIBE-VALORES.
* VALOR1 = VALOR1 - VALOR3
SUBTRACT VALOR3 FROM VALOR1.
DISPLAY "VALOR3 SUBTRACT VALOR1: ".
PERFORM EXIBE-VALORES.
* VALOR3 = VALOR2*VALOR3
MULTIPLY VALOR2 BY VALOR3.
DISPLAY "VALOR2 MULTIPLY VALOR3 ".
PERFORM EXIBE-VALORES.
* VALOR3 = VALOR3 / VALOR2
DIVIDE VALOR2 INTO VALOR3.
DISPLAY "DIVIDE VALOR2 INTO VALOR3".
PERFORM EXIBE-VALORES.
PROGRAM-DONE.
STOP RUN.
EXIBE-VALORES.
DISPLAY "=======".
DISPLAY "VALOR1: " VALOR1.
DISPLAY "VALOR2: " VALOR2.
DISPLAY "VALOR3: " VALOR3.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment