Translate

Mostrar mensagens com a etiqueta codigo. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta codigo. Mostrar todas as mensagens

quinta-feira, 7 de agosto de 2025

Conheça os diversos tipos de variáveis COBOL

 

Bellacosa Mainframe e os diversos tipos de variaveis cobol

Conheça os diversos tipos de variáveis COBOL

4,424 followers

Salve jovem padawan, no artigo de hoje, apresento um programa COBOL explorando os diversos tipos de variáveis, gerando como saída, um arquivo de 143 bytes ilustrando como é o armazenamento e o formato dos dados.

Aproveito e apresento alguns comandos COBOL com diversas parametrizações, onde poderemos explorar e entender na prática seu funcionamento.

O programa foi dividido em Sections e Parágrafos, ajudando a conhecer técnicas de laço e salto de parágrafo.

PROGRAMA COBOL117

 *****************************************************************
      * DATA     : 29/08/2024
      * AUTOR    : VAGNER RENATO BELLACOSA
      * OBJETIVO : PROGRAMA EXEMPLO ARQUIVO QSAM LOOP
      * CPD      : INEFE
      *****************************************************************
       IDENTIFICATION DIVISION.
      *************************
       PROGRAM-ID. COBOL117.
       AUTHOR. VAGNER BELLACOSA.
       DATE-WRITTEN. 29/08/24 @ 21:18:00.
       DATE-COMPILED. 2024-08-29.

      **********************
       ENVIRONMENT DIVISION.
      **********************
      *
       CONFIGURATION SECTION.
      *
       SOURCE-COMPUTER. IBM-I.
       OBJECT-COMPUTER. IBM-I.
       SPECIAL-NAMES. DECIMAL-POINT IS COMMA.
      *
       INPUT-OUTPUT SECTION.
      *
       FILE-CONTROL.
           SELECT OUTPTFL    ASSIGN TO OUTPTFL
           ORGANIZATION IS SEQUENTIAL
           ACCESS MODE IS SEQUENTIAL
           FILE STATUS IS FS-STATUS.

      ***************
       DATA DIVISION.
      ***************
      *
       FILE SECTION.
      *
       FD OUTPTFL
           RECORD CONTAINS 145 CHARACTERS
           LABEL RECORDS ARE STANDARD
           RECORDING MODE IS F
           DATA RECORD IS REG-DADOS.
      *
       COPY COPY117A.
      *
      *
       WORKING-STORAGE SECTION.
      *
      *
       01  WSS-VARIAVEL-AUX.
          05  WSS-EOF            PIC A(01).
          05  FS-STATUS          PIC 99.
      *
       77 WSS-RANDOM-NUMBER1   PIC 999 VALUE ZEROES.
       77 WSS-RANDOM-NUMBER2   PIC 999 VALUE ZEROES.
       77 WSS-REG-GRAVADOS     PIC 999 VALUE ZEROES.
       77 WSS-CICLO            PIC 99  VALUE 15.
       77 WSS-DATA-COMPIL      PIC X(16).
      *
      ****************************************************************
      **  DECLARATIONS FOR THE LOCAL DATE/TIME FOR DISPLAY
      ****************************************************************
       01  WSS-CAMPOS-AUXILIARES.
           05 WSS-YYYYMMDD          PIC  9(008).
           05 WSS-YYMMDD            PIC  9(006).
           05 WSS-HHMMSS            PIC  9(006).
           05 WSS-HHMMSSCC          PIC  9(008).
           05 WSS-DIA-SEMANA        PIC  9(001).
           05 WSS-ANO-DIA           PIC  9(005).
           05 WSS-DAY-YYYYDDD       PIC  9(007).
           05 WSS-DAY-001           PIC  S9(009).
           05 WSS-INTEGER-FORM      PIC  S9(9) SIGN LEADING SEPARATE.
           05 WSS-INT-DATE          PIC  9(8) VALUE ZERO.
           05 WSS-DATE-TODAY        PIC  9(7) VALUE ZERO.
           05 WSS-DUE-DATE          PIC  9(7) VALUE ZERO.

      ********************
       PROCEDURE DIVISION.
      ********************

       001-INICIALIZAR          SECTION.

           PERFORM ROT-LISTA-INFO
              THRU ROT-LISTA-INFO-EXIT.

           PERFORM ROT-OPEN-FILE
              THRU ROT-OPEN-FILE-EXIT.

           PERFORM ROT-INITIALIZE-VAR
              THRU ROT-INITIALIZE-VAR-EXIT.

       002-WORKFILE             SECTION.

           PERFORM ROT-FORMATA-OUTPUT
              THRU ROT-FORMATA-OUTPUT-EXIT WSS-CICLO TIMES.

       003-PROCEDIMENTOS-FINAIS SECTION.

           PERFORM ROT-CLOSE-FILE
              THRU ROT-CLOSE-FILE-EXIT.

           PERFORM ROT-ESTATISTICA
              THRU ROT-ESTATISTICA-EXIT.

           STOP RUN.

      * SEçãO DE CODIGOS AUXILIARES
       004-PARAGRAFOS            SECTION.

      * INICIALIZA VARIAVEIS
       ROT-INITIALIZE-VAR.

      **** MOVE ZEROES TO REG-DADOS

           INITIALIZE REG-DADOS
              REPLACING ALPHANUMERIC BY   SPACES
                        NUMERIC      BY   ZEROES.

       ROT-INITIALIZE-VAR-EXIT.
           EXIT.

      * LISTA CABECALHO DO PROGRAMA
       ROT-LISTA-INFO.

           DISPLAY ' '.
           DISPLAY '*****************************************'.
           DISPLAY '*            COBOL117                   *'.
           DISPLAY '*****************************************'.
           DISPLAY '*                                       *'.
           DISPLAY '* EXEMPLO DE OPEN WRITE CLOSE QSAM FILE *'.
           DISPLAY '*  USO DE COPY BOOK PARA LAYOUT ARQUIVO *'.
           DISPLAY '*  GRAVACAO ALFABETICA ALFANUMERICA     *'.
           DISPLAY '*  COMP1 COMP2 COMP3 COMP4 COMP5        *'.
           DISPLAY '*  USO DE FUNçãO INTRINSECA             *'.
           DISPLAY '*  INITIALIZE 3 MODOS                   *'.
           DISPLAY '*  SECTIONS E PARAGRAFOS                *'.
           DISPLAY '*  TAMANHO DO REGISTRO '
                               LENGTH OF REG-DADOS ' BYTES  *'.
           DISPLAY '*  WSS-CICLO = ' WSS-CICLO
                   '      LOOP DE GRAVACAO *'
           DISPLAY '*****************************************'.
           DISPLAY ' '.

           PERFORM ROT-GET-DATA
              THRU ROT-GET-DATA-EXIT.

           DISPLAY '* WSS-DATA-COMPIL = ' WSS-DATA-COMPIL
                          '          *'.
           DISPLAY ' '.

       ROT-LISTA-INFO-EXIT.
           EXIT.

      * FUNCOES INTRINSECAS OBTEM DADOS DO SISTEMA
       ROT-GET-DATA.

      * OBTEM A DATA DA COMPILACAO
           MOVE FUNCTION WHEN-COMPILED  TO WSS-DATA-COMPIL

      * BUSCA DATA VIA CURRENT-DATE

           MOVE FUNCTION CURRENT-DATE(1:8) TO WSS-YYYYMMDD

           DISPLAY ' WSS-YYYYMMDD    = ' WSS-YYYYMMDD

      * CALCULA DIA VIA INTEGER-OF-DATE

           COMPUTE WSS-YYYYMMDD    = FUNCTION INTEGER-OF-DATE
                                     (WSS-YYYYMMDD)
                                     + 15.
           DISPLAY ' WSS-YYYYMMDD    = ' WSS-YYYYMMDD
           DISPLAY 'NOVA DATA: ' WSS-DAY-YYYYDDD

      * ACCEPT

           ACCEPT WSS-DAY-YYYYDDD FROM DAY YYYYDDD.
           ACCEPT WSS-YYYYMMDD    FROM DATE YYYYMMDD.
           ACCEPT WSS-YYMMDD      FROM DATE.
           ACCEPT WSS-HHMMSS      FROM TIME.
           ACCEPT WSS-HHMMSSCC    FROM TIME.
           ACCEPT WSS-DIA-SEMANA  FROM DAY-OF-WEEK.
           ACCEPT WSS-ANO-DIA     FROM DAY.

       ROT-GET-DATA-EXIT.
           EXIT.

      * ABERTURA DE ARQUIVO QSAM
       ROT-OPEN-FILE.

           DISPLAY 'ROT-OPEN-FILE'.

           OPEN OUTPUT OUTPTFL.

           IF FS-STATUS > 0
              DISPLAY 'ERRO NA ABERTURA DO ARQUIVO OUTPTFL '
              DISPLAY 'FS-STATUS : ' FS-STATUS
              MOVE FS-STATUS    TO  RETURN-CODE
              PERFORM ROT-ABEND
           END-IF.

       ROT-OPEN-FILE-EXIT.
           EXIT.

      * FORMATA REGISTRO DE SAIDA
       ROT-FORMATA-OUTPUT.

           DISPLAY 'ROT-FORMATA-OUTPUT'.

           PERFORM ROT-INITIALIZE-VAR
              THRU ROT-INITIALIZE-VAR-EXIT.

           MOVE  'WILSON LUPINO'   TO   REG-NOME.
           MOVE  '2014-05-11'      TO   REG-DATA-NASC.
           MOVE  WSS-REG-GRAVADOS  TO   REG-ORDEM.
           MOVE  'RUA A NO 15'     TO   REG-ENDERECO
           MOVE  'TAUBATE'         TO   REG-CIDADE
           MOVE  'SP'              TO   REG-ESTADO
           MOVE  '18000-100'       TO   REG-CEP
           MOVE   123              TO   REG-COMP1-4
           MOVE   123456           TO   REG-COMP2-8
           MOVE  -123456           TO   REG-COMP3-5
           MOVE   199998           TO   REG-COMP3-5A
           MOVE  -789012           TO   REG-COMP3-6
           MOVE  1000              TO   REG-COMP4-2
           MOVE  2000000           TO   REG-COMP4-4
           MOVE  3000000000        TO   REG-COMP4-8
           MOVE  -1000             TO   REG-COMP5-2
           MOVE  -2000000          TO   REG-COMP5-4
           MOVE  -3000000000       TO   REG-COMP5-8
           MOVE  'FIM'             TO   REG-TEXTO5C

           PERFORM ROT-ALEATORIA
              THRU ROT-ALEATORIA-EXIT.

           MOVE WSS-RANDOM-NUMBER1 TO   REG-ANO-DIA.
           MOVE WSS-RANDOM-NUMBER2 TO   REG-ANO-MES.

           DISPLAY ' REG-DADOS     : ' REG-DADOS ' '
                     LENGTH OF REG-DADOS ' BYTES '.
           DISPLAY ' REG-NOME      : ' REG-NOME.
           DISPLAY ' REG-DATA-NASC : ' REG-DATA-NASC.
           DISPLAY ' WSS-CICLO     : ' WSS-CICLO.

           PERFORM ROT-WRITE-FILE
              THRU ROT-WRITE-FILE-EXIT

      ***** 4 LINHAS ADICIONAIS

           IF WSS-REG-GRAVADOS = 15
      * GRAVA LOW-VALUES NO ARQUIVO
             MOVE LOW-VALUES       TO REG-DADOS
             PERFORM ROT-WRITE-FILE
                THRU ROT-WRITE-FILE-EXIT
      * GRAVA HIGH-VALUES NO ARQUIVO
             MOVE HIGH-VALUES      TO REG-DADOS
             PERFORM ROT-WRITE-FILE
                THRU ROT-WRITE-FILE-EXIT
      * INICIALIZA ESTRUTURA DO ARQUIVO COM 9 E X
             INITIALIZE REG-DADOS
                REPLACING ALPHANUMERIC DATA BY 'X'
                          NUMERIC      DATA BY 9
             PERFORM ROT-WRITE-FILE
                THRU ROT-WRITE-FILE-EXIT
      * INICIALIZA ESTRUTURA
             INITIALIZE REG-DADOS
             PERFORM ROT-WRITE-FILE
                THRU ROT-WRITE-FILE-EXIT
           END-IF.

       ROT-FORMATA-OUTPUT-EXIT.
           EXIT.

      * GRAVA REGISTRO DE SAIDA
       ROT-WRITE-FILE.

           WRITE REG-DADOS
           END-WRITE.

           IF FS-STATUS > 0
              DISPLAY 'ERRO NA GRAVACAO DO ARQUIVO OUTPTFL '
              DISPLAY 'FS-STATUS : ' FS-STATUS
              MOVE FS-STATUS    TO  RETURN-CODE
              PERFORM ROT-ABEND
           END-IF.

           ADD  01                 TO   WSS-REG-GRAVADOS.

       ROT-WRITE-FILE-EXIT.
           EXIT.

      * FECHA ARQUIVO QSAM
       ROT-CLOSE-FILE.

           DISPLAY 'ROT-CLOSE-FILE'.

           CLOSE OUTPTFL.

           IF FS-STATUS > 0
              DISPLAY 'ERRO NO FECHAMENTO DO ARQUIVO OUTPTFL '
              DISPLAY 'FS-STATUS : ' FS-STATUS
              MOVE FS-STATUS    TO  RETURN-CODE
              PERFORM ROT-ABEND
           END-IF.

       ROT-CLOSE-FILE-EXIT.
           EXIT.

      * LISTA AS ESTATISTICAS DO PROCESSAMENTO
       ROT-ESTATISTICA.

           ACCEPT WSS-HHMMSSCC    FROM TIME.

           DISPLAY ' '.
           DISPLAY '*******************************************'.
           DISPLAY '*** PROGRAMA COBOL117                   ***'.
           DISPLAY '*******************************************'.
           DISPLAY '*** DATA DO PROCESSAMENTO : '
                    WSS-YYYYMMDD  '   ***'.
           DISPLAY '*** HORA DO PROCESSAMENTO : '
                    WSS-HHMMSSCC  '   ***'.
           DISPLAY '*******************************************'.
           DISPLAY '*                                         *'.
           DISPLAY '* TERMINO DE PROCESSAMENTO OK             *'.
           DISPLAY '*                                         *'.
           DISPLAY '* REGISTRO GRAVADOS : ' WSS-REG-GRAVADOS
                   '                *'.
           DISPLAY '*                                         *'.
           DISPLAY '*******************************************'.

       ROT-ESTATISTICA-EXIT.
           EXIT.

      * SAIDA CONTROLADA - ABEND NO PROCESSAMENTO
       ROT-ABEND.

           ACCEPT WSS-HHMMSSCC    FROM TIME.

           DISPLAY '*******************************************'.
           DISPLAY '*** PROGRAMA COBOL117                   ***'.
           DISPLAY '*******************************************'.
           DISPLAY '*** DATA DO PROCESSAMENTO : '
                    WSS-YYYYMMDD  '  ***'.
           DISPLAY '*** HORA DO PROCESSAMENTO : '
                    WSS-HHMMSSCC  '  **'.
           DISPLAY '*******************************************'.
           DISPLAY ' ABEND PROGRAMADO '.
           DISPLAY ' ERRO ENCONTRADO : '  RETURN-CODE.
           DISPLAY ' FAVOR AVISAR O ANALISTA RESPONSAVEL'.
           DISPLAY '*******************************************'.
      **** CALL ABEND.
           STOP RUN.

       ROT-ABEND-EXIT.
           EXIT.

      * GERADOR DE NUMERO ALEATORIO
       ROT-ALEATORIA.

           COMPUTE WSS-RANDOM-NUMBER1 = FUNCTION RANDOM * 31.
           COMPUTE WSS-RANDOM-NUMBER2 = FUNCTION RANDOM * 12.
           DISPLAY ' '.
           DISPLAY ' 1 --> ' WSS-RANDOM-NUMBER1
                   ' 2 --> ' WSS-RANDOM-NUMBER2
           DISPLAY ' '.

       ROT-ALEATORIA-EXIT.
           EXIT.

       END PROGRAM COBOL117.
      ********************** FIM PROGRAMA   **************************** 

Código Comentado por Section

Este programa foi dividido em 4 seções, o código usou da Logica Estruturado preparado para receber novos parágrafos e funcionalidades com o menor impacto no código legado.

001-INICIALIZAR SECTION.

Nesta seção o programa lista a info da abertura do programa, abre arquivo output e inicializa as variaveis.

002-WORKFILE SECTION.

Nesta seção trataremos da formatação das variáveis e procedimento de gravação dos registros.

003-PROCEDIMENTOS-FINAIS SECTION.

Nesta seção trataremos dos procedimentos finais, fechando arquivo e listando a estatistica do processamento

004-PARAGRAFOS SECTION.

Seção auxiliar que armazena as diversas sub-rotinas do programa. Objetivando facilitar a manutenção das mesmas.


COPY

É um arquivo de definição das variáveis publico, destinado a compartilhar entre diversos programas a mesma estrutura. Em um COPY book inclui o Grupo de Dados estruturado e separados por níveis de 1 até 10.

Exemplificamos os três tipos de variável COBOL. Alfabética, Alfanumérica e Numérico, expandindo para os tipos Computacional de 1 a 5.

************************************************************************************
*******  ESTE COPY BOOK CONTEM COMANDOS DA DATA DIVISION                       ***
*******                                    WORKING-STORAGE SECTION.                                    ***
*******  EM TEMPO DE COMPILACAO ESTE BLOCO DE CODIGO SERA INSERIDO NO***
*******  PROGRAMA, PODENDO SER REUTILIZADO POR N PROGRAMAS, DEVENDO**  ***
*******  ESTAR NA LIBRARY DEFINIDA PARA OS COPIES.                   ***
************************************************************************
      *
      * DATA GROUP ITEM
       01 REG-DADOS.
      *
      *  VARIABLE NUMERIC       -> PIC 9
         05 REG-ORDEM                  PIC 999.
      *  VARIABLE ALPHABETIC   -> PIC A
         05 REG-NOME                    PIC A(20).
      *  VARIABLE ALPHANUMERIC -> PIC X
         05 REG-DATA-NASC            PIC X(10).
      *  REDEFINES ITEM
         05 FILLER       REDEFINES  REG-DATA-NASC.
           10 REG-ANO-NASC           PIC 9(04).
           10 FILLER                            PIC X.
           10 REG-ANO-MES              PIC 9(02).
           10 FILLER                            PIC X.
           10 REG-ANO-DIA               PIC 9(02).
         05 REG-ENDERECO              PIC X(20).
         05 REG-CIDADE                   PIC X(10).
         05 REG-ESTADO                  PIC XX.
         05 REG-CEP                         PIC X(09).
         05 FILLER       REDEFINES  REG-CEP.
           10 REG-CEP-INT                PIC 9(05).
           10 FILLER                           PIC X.
           10 REG-CEP-COMP           PIC 9(03).
      * COMPUTACIONAL  1
         05 REG-COMP1-4            USAGE IS COMP-1.
         05 REG-TEXTO1                  PIC X(01).
      * COMPUTACIONAL  2
         05 REG-COMP2-8            USAGE IS COMP-2.
         05 REG-TEXTO2                  PIC X(01).
      * COMPUTACIONAL  3
         05 REG-COMP3-5               PIC S9(10) COMP-3.
         05 REG-TEXTO3A                PIC X(01).
         05 REG-COMP3-5A             PIC  9(10) COMP-3.
         05 REG-TEXTO3B                PIC X(01).
         05 REG-COMP3-6               PIC S9(11) COMP-3.
         05 REG-TEXTO3C                PIC X(01).
      * COMPUTACIONAL  4
         05 REG-COMP4-2               PIC S9(4)  COMP-4.
         05 REG-TEXTO4A                PIC X(01).
         05 REG-COMP4-4               PIC S9(9)  COMP-4.
         05 REG-TEXTO4B                PIC X(01).
         05 REG-COMP4-8               PIC S9(18) COMP-4.
         05 REG-TEXTO4C                PIC X(01).
      * COMPUTACIONAL  5
         05 REG-COMP5-2               PIC S9(4)  COMP-5.
         05 REG-TEXTO5A                PIC X(01).
         05 REG-COMP5-4               PIC S9(9)  COMP-5.
         05 REG-TEXTO5B                PIC X(01).
         05 REG-COMP5-8               PIC S9(18) COMP-5.
      *
         05 REG-TEXTO5C                PIC X(03).
**************************** FIM DO COPYBOOK *************************** 

JCL - JOB CONTROL LANGUAGE

Para o teste, após compilarmos o programa num compilador igual ou maior que a versão 4, o ideal é a versão 6.3. Segue o JCL em dois steps.

//EXECPGM1   JOB ('00'),TSO.&SYSUID,                           
//          REGION=0M,NOTIFY=&SYSUID,LINES=(17000,CANCEL),
//          MSGCLASS=T,MSGLEVEL=1,CLASS=A
//**********************************************************************
//*            TESTE PARA CRIACãO DE ARQUIVO
//*            GERAR UM ARQUIVO COM 143 BYTES
//**********************************************************************
//JOBLIB  DD DSN=KC02745.LIB.CBLPDSE,DISP=SHR
//**********************************************************************
//* STEP TO DELETE A DATASET
//**********************************************************************
//STEP001  EXEC PGM=IEFBR14
//DD1      DD DSN=KC02745.OUTPTFL.EXEWRITE.D0117,
//         DISP=(OLD,DELETE,DELETE)
//**********************************************************************
//* PROGRAMA QUE GERA ARQUIVO DE SAIDA COM EXEMPLO DE COMPUTACIONAL
//**********************************************************************
//STEP002  EXEC PGM=COBOL117
//*    ARQUIVO DE SAIDA                                                   *\\
//OUTPTFL DD DSN=KC02745.OUTPTFL.EXEWRITE.D0117,
//             DISP=(NEW,CATLG,DELETE),
//             SPACE=(TRK,(1,1),RLSE),UNIT=SYSDA,
//             DCB=(LRECL=145,RECFM=FB,BLKSIZE=0)
//SYSTSPRT DD  SYSOUT=*
//SYSPRINT DD  SYSOUT=*
//CEEDUMP  DD  SYSOUT=*
//SYSUDUMP DD  SYSOUT=*
//SYSOUT   DD  SYSOUT=*
//REPORT   DD  SYSOUT=*
//SYSABOUT DD  SYSOUT=*
//SYSDBOUT DD  SYSOUT=*
/*
//****************************** FIM DO JCL **************************** 

//STEP001 EXEC PGM=IEFBR14

Este aplicativo da IBM permite apagar o Dataset.

//STEP002 EXEC PGM=COBOL117

Executa o programa e grava arquivo de saída com 145 bytes.

Output

Resultado com as estatísticas de execução.

SDSF

Exobe a Sysout do processamento, lembrando que um JOB é enviado ao JES2. onde passa por 3 filas de workflow, senda a primeira de validação , a segunda de execução e a terceira de impressão.

Article content
Article content

O Resultado será do processamento irá criar um Dataset QSAM Fixo Blocado com 145 bytes de cumprimento por registro e ao final será gravado 19 linhas.

Info do DATASET

Article content

Registros EBCDIC convertidos no Emulador para ASCII

O arquivo no formato EBCDIC:


Article content
Article content

Formato HEX

Usando comando de linha Hexadecimal o arquivo mostrará os registros no formato EBCDIC divididos em Alto e Baixo do octeto de bits.


Article content

Neste print exemplifico os registros de 15 até 19 no formato hexadecimal.

Conheça os diversos formatos


  1. Low-Values
  2. High-Values
  3. Initialize de X a 9
  4. Initialize de espaços e zero


Computacional de 1 a 5


Article content

Exemplo de uso das variáveis computacional e seu uso em bytes na geração de arquivo.


Espero ter ajudado e qualquer duvida entre em contato.




segunda-feira, 20 de maio de 2024

Precisa de ajuda? Veja dicas para ser salvo, use e abuse do GitHub.

 

Bellacosa Mainframe e o Github

Precisa de ajuda? Veja dicas para ser salvo, use e abuse do GitHub.

Bellacosa Mainframe dicas e truques para ser salvo no Github


Vantagens de usar o GITHub?


Salve jovem padawan, hoje estive monitorando o Fórum de nossa comunidade e constatei algo deveras curioso, fiquei intrigado e ao mesmo tempo preocupado. Diversos DEVs postaram pedidos de ajuda, problemas em seu código nos projetos dos LABs da Digital Innovation One, mas algo que era para ser simples e trivial, expos um problema estrutural, algo que me motivou a escrever este artigo.


Recapitulando o tema, um programador deve se preocupar com a qualidade do código, efetuar testes e trabalhar com um código limpo. Correto? Sim! Mas muitas vezes devido a pressão do momento, prazo esgotando e outras mazelas de nossa área. O código desenvolvido não é dos melhores, por isso precisamos de um segundo par de olhos para auxiliar na resolução do problema. Com isso entramos no tema do artigo, o versionamento do código através de criação de um repositório em softwares de controle de versão, tais como o GITHub.


Article content

O que é Github?

O GitHub é uma plataforma open-source fantástica, que serve como repositório de projetos, servidor web para html, gestor de versão e versionamento de software, que em parceria ao GIT e ao GIT Desktop, criou uma super ferramenta para auxiliar aos desenvolvedores.


Sabia que pode personalizar sua pagina principal com inúmeros widgets, tornando uma experiência única e divertida construir seu painel de controle.


🚀 GITHub: O que colocar? Como criar um repositorio profissional?

https://web.dio.me/articles/github-o-que-colocar-como-criar-um-repositorio-profissional

Article content

O que é controle de versões?

Para você padawan, novo em nossa comunidade, controle de versões é uma maneira de garantir que as nossas alterações não criem erros catastróficos, pois permite voltar a estágios ou versões de programa em pontos legais, sem erros e funcionais, garantido o trabalho sem perda de produtividade, um paraquedas/Capacete/sinto-de-segurança para garantir a segurança do DEV:


Article content

Biblioteca de Projetos

O GitHub e seus repositórios tornam a vida mais fácil para a comunidade DEV, permitindo a troca de código fonte, armazenamento de documentos tais como apostilhas, sebentas, manuais e docs em geral.


Saiba explorar e compartilhe com seus amigos, quanto mais gente participar mais rica será a comunidade e mais pessoas aprendem e democratizam o acesso ao conhecimento, ensinando, aprendendo e interagindo com outros DEVs.

Article content


Cooperação de Equipes

Chegamos no ponto que me motivou a escrever este arquivos, muita gente pede ajuda para solucionar problemas em codificação, colocam prints, mas não consigamos ajudar, pois não existe repositórios para interagirmos e auxiliar solucionando o problema, muitas vezes a descrição do problema dificulta o entendimento, vemos o Stake Overflow onde o DEV disponibiliza o código, o tipo de erro e fica mais fácil corrigir e auxiliar.


Article content

Caça-bugs

Padawan meu conselho, crie repositórios no Github com todos os seus projetos, em caso de erro compartilhe o link do repositório no Fórum de nossa comunidade e uma equipe fabulosa de BugBusters para ajudar a solucionar problemas no desenvolvimento de código.


Para ajudar quando precisar de auxilio, compartilhe seu código, compartilhe seu repositório e informe todos os problemas que está enfrentando, desta maneira poderemos ajudar com mais precisão e rapidez.

Article content


Troca de Ideias.

Além de facilitar a correção de bugs, erros e anomalias, outra ferramenta é o fórum interno que permite troca de mensagens entre equipes de desenvolvedores em projetos, permite a visitantes a deixarem mensagens de apoio e incentivo para o grupo, vale a pena explorar estas ferramentas com tantas funcionalidades.


Article content

Melhoria continua

A troca de ideias, ajuda muito, somos criaturas sociais e vivemos em comunidade e conversando, nosso código irá melhorar, pois muitas vezes ficamos presos a pontos de vista, infelizmente não tão eficientes ou eficazes. Um par de olhos frescos ajuda a melhor o código, muitas empresas usam como boa pratica, o programação-dual onde devs trabalham em equipe e corrigem-se e ajudam a melhorar a performance do programa.


Juntos somos mais fortes, este é meu lema, eu olho seu código e você olha o meu, desta maneira um ajuda o outro, pedir auxílio e ao mesmo tempo ajudar o outro, uma boa troca de conhecimento.

Article content


Técnica de aprendizado

Outra coisa importante de termos repositório no Github e visitar outros DEVs e aprimorarmos nosso aprendizado, lembre-se sempre, no princípio engatinhamos, depois andamos capenguinhas, tropicando e caindo, aí aprendemos uns passinhos para no final podermos correr.


Em analogia no mundo do desenvolvimento de softwares, um dev iniciante ao conhecermos uma nova tecnologia, copiamos códigos de outros programadores, vemos exemplos em livros, revistas e blogs, com isso vamos aprendendo a usar a linguagem e seus pormenores no dia a dia.


Article content

Servidor Web

A parte que mais curto no GitHub e o servidor web, onde podemos compartilhar nossos projetos como páginas Web, usando um domínio semi-personalizavel, principalmente para testarmos código HTML, CSS e Javascript e ao criamos nossos labs na DIO, podemos divulgar para nossa comunidade, podendo incluir referências a bibliotecas externas e referenciar outros sites através de links, hiperlinks e iframes.


Convido o jovem padawan a compartilhar seus projetos, publicar arquivos e páginas web no Github Web Server, qualquer dúvida chama aqui e trocamos umas figurinhas, é superdivertido treinar e ver o resultado final publicado na web.


🚀 Netflix Clone: Como fazer um Deploy do seu WebSite em 3 passos . [Tutorial]

https://web.dio.me/articles/netflix-clone-como-fazer-um-deploy-do-seu-website


Article content

Github Fork

Uma grande vantagem do GitHub é podermos compartilhar e copiar repositórios de outras pessoas, através do comando FORK, é com isso criamos um repositório espelho, onde podemos manipular, incluindo funcionalidades ou removendas, criando um projeto totalmente novo e ao final, podemos fazer uma solicitação de merge de branches, criando uma solicitação de aprovação do autor owner do repositório.

Article content

Github Stars

Uma das atividades lúdicas e extremamente gratificante é atribuir estrelas a projetos de outras pessoas, o proprietário do Repositório, fica muito feliz em receber visitantes na página do projeto e quando alguma alma caridosa atribui uma estrela, melhor impossível, é muito bacana receber estrelas.


Não custa nada e faz uma pessoa feliz, da minha parte sempre que encontro algo interessante, retribuo o trabalho com estrela no projeto.


Article content

Tags no repositório

Ajuda bastante atribuir tags de identificação ao repositório, permitindo pesquisar e auxiliando o visitante a entender sobre o que é o projeto, para que serve e quais as tecnologias envolvidas é uma boa pratica também incluir arquivos README.MD em markdown, explicando detalhes do projeto.

Article content


Pedidos de Socorro

Mais uma vez voltando ao porquê do artigo, quando necessitar de ajuda, auxilio, help, olhos amigo indique o repositório e o programa com problemas, desta forma a ajuda chega mais rápido, não tenha vergonha de pedir, ninguém nasce sabendo tudo e com a evolução das linguagens de programação, a cada dia surge melhorias e lembre-se um software sempre chegara ao EOL, por melhor que seja o programa, um dia transformara-se em Sistema Legado.


Use das redes sociais, linkedin, twitter, discord e nossa comunidade DIO, somos 700k devs, com certeza alguém irá responder seu apelo e sugerir alguma melhoria. Bora la dev!!!!


🚀 Frutos da Aceleração GFT QA: falando sobre erros

https://web.dio.me/articles/frutos-da-aceleracao-gft-qa-falando-sobre-erros


Article content

Teste de Código

Finalizando o artigo, lembro sempre de criar um plano de testes, testar os pontos críticos e experimentar testes automatizados, a qualidade do software é importante, use variáveis com nomes claros, cuidado com o uso desnecessário de rotinas e variáveis, acesso a rotinas externas. Repetindo-me teste, teste e teste, peque pelo excesso, garantindo a entrega e dando credibilidade a sua carreira de dev.


O versionamento de código permite criar Branch para testes, sem interferir com o pacote original e ao final dos testes, com resultado OK, pode-se fazer um Pull request, para reunificar o Test Branch com o Main Branch, mantendo a coerência em um único código.


Lembre-se o Git Merge é um grande amigo do DEV, permitindo inúmeras pessoas trabalharem no mesmo código, podendo evoluir em paralelo e no fim unificar as versões.


🚀 Poderosa técnica para salvar seu emprego. Use e abuse dos Testes Unitários

https://web.dio.me/articles/poderosa-tecnica-para-salvar-seu-emprego-testes-unitarios


Conclusão

Este artigo serve de complemento para um artigo anterior sobre GITHUB, mas ao mesmo tempo servindo de alerta para novos DEVs em nossa comunidade, que na inocência dos primeiros passos, pede auxilio na solução de problemas sem indicarem o local correto, dificultando o auxílio.


Use e abuse do GitHub, treine bastante as inúmeras funcionalidades existentes no GitHub, lembrando das versões em linha de comando e desktop, treine as funções de merge, voltar versões, clonar repositórios, subir e descer versões.

Espero ter ajudado ate o próximo artigo.

Referência Bibliográfica


WIKIPEDIA - A Enciclopédia Livre, faça parte, ajude atualizando ou criando verbetes http://www.wikipedia.org


Google Books um repositório com milhões de livros digitalizados https://books.google.com/


Internet Archive, tudo aquilo que um dia foi publicado veio parar aqui. https://archive.org/


Biblioteca de ícones https://www.flaticon.com/


Article content


Article content

Mais momento jabá, uma homenagem ao fabuloso Carrossel, sonho de toda criança, em tempos idos, era a alegria total brincar cavalgando cavalos e unicórnios, com luzes magicas, musicas fabulosas e gritos e sorriso, marcando uma época que nao volta, visite meu vídeo e veja para onde fui desta vez : https://www.youtube.com/watch?v=Mu_dLrMDXL4


Bom curso a todos.


Article content

https://www.linkedin.com/in/VagnerBellacosa


Article content


Pode me dar uma ajudinha no YouTube?


Article content

https://www.youtube.com/user/vagnerbellacosa