Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

Posição Numérica e Alfanumérico

quando a variável no tamanho de PIC 9(02) e vem um numero 150 ele corta o numero 1 e fica 50, por que? não deveria ser 15 e cortar o final?

e se fosse alfanumérico? PIC X(03) e vem o nome Maria corta os primeiros ou os últimos? Mar ou Ria? e por que?

7 respostas

Ola, Stephanie.

As posicoes valem da esquerda para direita, entao 280 vira 80 mesmo, pois o alinhamento é a esquerda. Alfa (X) o alinhamento é a direita entao Maria vira Mar.

Ivan

Oi Ivan, desculpa ainda fiquei sem entender bem

Esquerda --->

<--- Direita

Numérico é da esquerda para direita, certo? então 280 se ele começa a posicionar da esquerda para direita fica 28, não? Mesmo caso com o Alfanumérico começa posicionar da direita para esquerda, Maria não ficaria ria?

Stephanie,

No variavel alfa, voce definiu wrk-nome pic x(03) com 3 casas entao se mover MARIA ira ficar MAR. o que sobra ele descarta ou joga na proxima variavel de memoria disponivel.

No numerico se declarar variavel wrk-num pic x(02) e mover ou receber 150 fica 15.

Ivan

Ivan,

Então, mas um é numérico e outro é alfanumérico

WRK-NUMERO PIC 9(003) e movo um numero com 4 posições (1548) o posicionamento é da esquerda para direita não é? esquerda é começando daqui (---->), certo? se começa nesta direção então seria os primeiros números (154), não?

Alfanumerico WRK-NOME PIC X (003) e movo letras com 5 posições (MARIA) o posicionamento é da direita para esquerda não é? direita é começando daqui (<----), certo? se começa nesta direção então seria os ultimos numero (RIA), não?

No exemplo que dei anteriormente saiu errado. Correto: 77 WRK-NOME PIC X(03). 77 WRK-NUMERO PIC 9(03). MOVE 'MARIA' TO WRK-NOME. MOVE 1548 TO WRK-NUMERO. DISPLAY WRK-NOME - Sai MAR - Ele preenche o que cabe na variavel da ESQUERDA para DIREITA --> DISPLAY WRK-NUMERO - Sai 548 - Ele preenche o que cabe na variavel da DIREITA para ESQUERDA <----

   IDENTIFICATION DIVISION.
   PROGRAM-ID. PROGCOBXX.
   ENVIRONMENT DIVISION.
   CONFIGURATION SECTION.
       SPECIAL-NAMES.
       DECIMAL-POINT IS COMMA.
   DATA DIVISION.
   WORKING-STORAGE SECTION.
   77  WRK-NOME     PIC X(03).
   77  WRK-NUMERO   PIC 9(03).
   PROCEDURE DIVISION.
           MOVE 'MARIA' TO WRK-NOME.
           MOVE 1548    TO WRK-NUMERO.
           DISPLAY WRK-NOME
           DISPLAY WRK-NUMERO
       STOP RUN.

Ivan

Certo, Mas a questão é que, se ele começa a posicionar da esquerda pra direita no caso do numérico, esquerda é os primeiros números, então não entendi pq não é 154 se fosse começar a posicionar da direita pra esquerda, iria começar pelos últimos números, ai seria 548

solução!

Em variaveis numericas é da direita para esquerda. Ele despreza as casas mais altas. Então se voce cria VAR_NUM PIC 9(03) - fica 999. Se passa 1548 ele entende: 1548 999.

Fica 548. O 1 ele despreza.

No caso de Alfa, ele preenche da esquerda para direita. Entao VAR_NOME pic X(03) - FICA XXX

Movendo MARIA fica MARIA XXX

MAR - O IA ele despreza

Blz ? Ivan