Abend u4038 Ошибка при перемещении значения из 1 переменной в другую переменную с другим предложением изображения - PullRequest
0 голосов
/ 14 июля 2020

Я пытаюсь написать программу с использованием cobol, когда я пытаюсь запустить программу, она всегда отображает Abend s0000 u4038, я знаю, в чем проблема, но я не знаю, как ее исправить

Итак, я есть переменная

01 Ws-data.
   05 ws-branch-no   pic 9(04).

01 Ws-data2.     
   05 branch-no      pic 9(07) comp-3.


Procedure division.

Move branch-no to ws-branch-no.
Display ws-branch-no.

stop run.

хорошо, поэтому значение в branch-no - '0000021', когда я пытаюсь перейти к ws-branch-no, он получил abend u4038

Содержимое элемента данных WS-BRANCH-NO во время ссылки оператором номер 1 в строке 11742 не прошло проверку класса NUMERI C или содержало значение больше, чем предложение PICTURE, как обнаружено Параметр компилятора NUMCHECK.

Я думаю, что, поскольку значение в branch-no равно 0000021, а предложение изображения, которое я установил в ws-branch-no, равно только pi c 9 (04). но дело в том, что я хочу, чтобы значение ws-branch-no стало 0021, когда оно переместилось в ws-branch-no.

может кто-нибудь помочь? Спасибо

1 Ответ

1 голос
/ 14 июля 2020

хорошо, я знаю, в чем проблема, но я не знаю, как ее исправить, я думаю, что, поскольку значение в branch-no равно 0000021, а предложение изображения, которое я установил в ws-branch-no, равно только pi c 9 (04).

Нет, проблема не в этом (по крайней мере, я очень уверен, что используемая вами система не так уж сломана). Параметр NUMCHECK будет активирован только в том случае, если:

  • исходные данные не являются числовыми c (они упакованы, поэтому, возможно, содержат распакованные данные?)
  • исходные данные слишком велики (например, 0010021)

Предлагаю добавить простую проверку:

  IF branch-no NOT NUMERIC
     DISPLAY 'SHOULD NEVER HAPPEN: ' branch-no ' - ' ws-data2
  END-IF.
  IF branch-no > 9999
     DISPLAY 'TOO BIG :            ' branch-no ' - ' ws-data2
  END-IF
  MOVE branch-no TO ws-branch-no
  DISPLAY ws-branch-no.
...