Menu principal                 [Fechar]


Linguagem de programação COBOL - STRING


Volta a página anterior

Volta ao Menu Principal


Desenvolvido por Carlos Alberto Dornelles - Analista de Sistemas - Brasília DF.

STRING
O comando STRING serve para concatenar parcial ou totalmente o conteúdo de dois ou mais itens em um único.
Esse processo chama-se concatenação.

Observações:
 Cada 'LITERAL' deve ser um literal não-numérico.
 Cada 'identifier', exceto o 'identifier-4' deve ter USAGE DISPLAY, assumida ou explícita.
 'identifier-3' deve ser um item elementar alfanumérico sem caracteres de edição e sem a cláusula JUSTIFIED. É o item resultante da  concatenação.
 (COBOL-85 ou COBOL II) O 'identifier-3' não pode ser modificado por referencia.
 Quando 'identifier-1' e 'identifier-2' forem itens elementares numéricos, não deverão conter em suas PICTUREs o caracter "P".
 Cada 'identifier-1' | 'literal-1' representa um item a ser concatenado.
 'identifier-2' e 'literal-2' são delimitadores que, quando forem encontrados em 'identifier-1' | 'literal-1', farão com que a transferencia  para o 'identifier-3' seja terminada.
 A opção SIZE faz com que todo o 'identifier-1' ou 'literal-1' seja transferido para o 'identifier-3'.
 O processo de concatenação.
 1. O conteúdo do 'identifier-1' ou do 'literal-1' é transferido para o 'identifier-3' de acordo com as regras de movimentação entre os      campos alfa-numéricos, com a exceção de que não ocorrerá preenchimento com brancos.
 2. Se a frase DELIMITED BY for especificada sem o opção SIZE, o conteúdo do 'identifier-1' ou 'literal-1' será transferido para o      'identifier-3' na sequencia especificada, começando na posição mais à esquerda e continuando até o final do 'identifier-3' ou até      ser encontrado o caracter especificado no 'identifier-2 | literal-2'. O conteúdo do 'identifier-2 | literal-2' não é transferido.
 3. Se a frase DELIMITED BY for especificada com a opção SIZE, todo o 'identifier-1' ou todo o 'literal-1' será transferido na sequencia      especificada, para o 'identifier-3', até todos os dados serem transferidos ou até o final do 'identifier-3'.
 Considerações sobre a opção WITH POINTER.
 1. 'identifier-4' é um contador, cujo valor indica a posição inicial do 'identifier-3', onde começara a transferencia de dados.
 2. O 'identifier-4' deve ser um item elementar numérico inteiro, com tamanho suficiente para conter um valor igual ao tamanho do      'identifier-3' + 1. O caracter "P" não pode ser usado na PICTURE.
 3. O vlor do 'identifier-4', se for especificado, deverá ser maior que zero e será incrementado automaticamente, antes de um caracter      ser movido para o 'identifier-3'. Se não for especificado, a transferencia será a partir da posição 1 (um) do 'identifier-3'.
 4. Se durante a execução do comando STRING, o valor do 'identifier-4' for igual a zero ou exceder o comprimento do 'identifier-3',      será acionada a condição de ON OVERFLOW, se esta for especificada, sendo executado o 'imperative-statement-1'.
 A condição NOT ON OVERFLOW será acionada caso a execução do STRING seja bem sucedida.
 END-STRING é o delimitador de escopo.


O seu formato geral é:


Primeiro exemplo
        
      *-----------------------------------------------------------------
       WORKING-STORAGE SECTION.
      *-----------------------------------------------------------------

           05  WS-NOME-01                PIC X(020) VALUE 'Carlos'.
           05  WS-NOME-02                PIC X(020) VALUE 'Alberto'.
           05  WS-NOME-03                PIC X(020) VALUE 'Dornelles'.
           05  WS-NOME-04                PIC X(020) VALUE '- Brasilia'.
           05  WS-NOME-COMPLETO          PIC X(060) VALUE SPACES.

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

           STRING                                                    
                 WS-NOME-01 DELIMITED BY SPACES ' ' DELIMITED BY SIZE 
                 WS-NOME-02 DELIMITED BY SPACES ' ' DELIMITED BY SIZE 
                 WS-NOME-03 DELIMITED BY SPACES ' ' DELIMITED BY SIZE 
                 WS-NOME-04 DELIMITED BY SPACES                       
           INTO  
                 WS-NOME-COMPLETO                                     
           END-STRING
        
 Resultado: WS-NOME-COMPLETO = Carlos Alberto Dornelles - Brasilia


Segundo exemplo

      *-----------------------------------------------------------------
       WORKING-STORAGE SECTION.
      *-----------------------------------------------------------------

       01  WS-AUXILIARES.
           05  DATE-TEXT                 PIC X(40) VALUE SPACES.
	  
       01  SYS-CORRENTE-DATA.                                           
           05  SYS-COR-SECULO-ANO.                                      
               10  SYS-CORRENTE-SECULO   PIC 9(2) VALUE ZEROES.         
               10  SYS-CORRENTE-ANO      PIC 9(2) VALUE ZEROES.         
           05  SYS-ANO-INTEIRO REDEFINES SYS-COR-SECULO-ANO             
                                         PIC 9(4).                      
           05  SYS-CORRENTE-MES          PIC 9(2) VALUE ZEROES.         
           05  SYS-CORRENTE-DIA          PIC 9(2) VALUE ZEROES.         
           05  SYS-CORRENTE-HORA         PIC 9(2) VALUE ZEROES.         
           05  SYS-CORRENTE-MINUTOS      PIC 9(2) VALUE ZEROES.         
           05  SYS-CORRENTE-SEGUNDO      PIC 9(2) VALUE ZEROES.         
           05  SYS-CORRENTE-SEC          PIC 9(2) VALUE ZEROES.         
           05  SYSTEM-CURRENT-GMT.                                      
               10  SYSTEM-GMT-TIME-DIFFERNTIAL   
                                         PIC X VALUE ZEROES.    
               10  SYSTEM-GMT-HOUR-DIFFERNITAL   
                                         PIC 9(2) VALUE ZEROES. 
               10  SYSTEM-GMT-MINUTE-DIFFERENTIAL                       
                                         PIC 9(2) VALUE ZEROES. 

       01  TAB-NOME-MES.                                        
           05  TAB-NOME-MES              VALUE                                
               "JANEIRO  FEVEREIROMARCO    ABRIL    MAIO     JUNHO    JU
      -        "LHO    AGOSTO   SETEMBRO OUTUBRO  NOVEMBRO DEZEMBRO ".  
               10  NOME-MES              PIC X(009) OCCURS 12 TIMES.  

       01  NOME-DIA-SEMANA.
           05  SEMANA-DIA-NOME           VALUE
               "SEGUNDATERCA  QUARTA QUINTA SEXTA  SABADO DOMINGO".
               10  SEMANA-DIA-NOME       PIC X(007) OCCURS 07 TIMES.     
                
      *-----------------------------------------------------------------
       PROCEDURE DIVISION.
      *-----------------------------------------------------------------

           MOVE FUNCTION CURRENT-DATE TO SYS-CORRENTE-DATA   

           STRING                                                       
              "Brasilia, "                         DELIMITED BY SIZE    
              SYS-CORRENTE-DIA                     DELIMITED BY SIZE    
              " de "                               DELIMITED BY SIZE    
              NOME-MES ( SYS-CORRENTE-MES )        DELIMITED BY SPACES  
              " de "                               DELIMITED BY SIZE    
              SYS-COR-SECULO-ANO                   DELIMITED BY SIZE    
              " - "                                DELIMITED BY SIZE    
              SEMANA-DIA-NOME ( SISTEMA-DIA-DA-SEMANA )                 
                                                   DELIMITED BY SPACES  
              INTO DATE-TEXT                                            
           END-STRING                                                   
			
 Resultado: DATE-TEXT = Brasilia, 05 de outubro de 2006 - QUINTA


Volta para o início da página

Volta a página anterior

Volta ao Menu Principal