A instrução STRING
no COBOL permite concatenar conteúdos de vários campos ou literais em um único campo de destino. Ela é usada para montar frases, códigos compostos, nomes completos e outras estruturas de texto em uma única variável.
📌 Para que serve
-
Concatenar campos e/ou literais em um único destino.
-
Montar strings compostas dinamicamente.
-
Substituir múltiplas instruções
MOVE
. -
Controlar onde os dados serão inseridos com o uso de
POINTER
.
🧾 Sintaxe básica
STRING campo-1 DELIMITED BY SIZE
campo-2 DELIMITED BY ' '
literal-1 DELIMITED BY SIZE
INTO destino
WITH POINTER ponteiro
ON OVERFLOW DISPLAY "Erro: campo de destino cheio"
NOT ON OVERFLOW DISPLAY "String montada com sucesso"
END-STRING.
✅ Exemplo prático
01 NOME PIC X(10) VALUE "COBOL".
01 SOBRENOME PIC X(15) VALUE "DICAS".
01 RESULTADO PIC X(30) VALUE SPACES.
01 POSICAO PIC 9(02) VALUE 1.
STRING NOME DELIMITED BY ' '
SOBRENOME DELIMITED BY SIZE
INTO RESULTADO
WITH POINTER POSICAO
END-STRING.
DISPLAY RESULTADO. *> Resultado: "COBOL DICAS"
⚙️ Como funciona internamente
-
O conteúdo de
campo-1
,campo-2
etc. é transferido caractere por caractere para o campo de destino. -
O delimitador indica onde parar a cópia (ex: espaço, tamanho do campo ou outro valor).
-
O POINTER indica onde começar a inserir os dados dentro do campo de destino.
-
Se não houver espaço suficiente no destino, a cláusula
ON OVERFLOW
é executada.
⚠️ Regras importantes
-
O campo de destino não pode ser
EDITADO
,JUSTIFIED
,FLOAT
,POINTER
ouNACIONAL-EDITADO
. -
Campos numéricos são convertidos para alfanuméricos antes da concatenação.
-
O ponteiro deve iniciar em 1 e ser grande o bastante para representar
TAMANHO+1
. -
Se
STRING
for mal usada, os resultados podem ser imprevisíveis. -
O campo de destino mantém os dados antigos após o fim da nova string, se não for totalmente preenchido.
🔄 Tipos de delimitação
Tipo | Significado |
---|---|
DELIMITED BY SIZE |
Copia o campo inteiro |
DELIMITED BY ' ' |
Copia até encontrar espaço |
DELIMITED BY variável |
Copia até encontrar o conteúdo da variável delimitadora |
🧠 Dicas práticas
-
Sempre inicialize o
POINTER
com 1 antes doSTRING
. -
Use
DELIMITED BY SIZE
para garantir que o conteúdo completo seja transferido. -
Evite campos com
OCCURS
ouJUSTIFIED
no destino. -
Combine com
UNSTRING
quando precisar quebrar a string posteriormente.
✅ Conclusão
A instrução STRING
é ideal para criar textos compostos de forma controlada e dinâmica em COBOL. Ela reduz o número de instruções MOVE
, melhora a legibilidade do código e oferece controle total sobre a montagem da informação em campos de saída. Com POINTER
, DELIMITED
e OVERFLOW
, você tem segurança e precisão na manipulação de strings.