Если результат вы получаете всегда 32, а затем WS-A равен нулю, потому что что-то умножают на ноль и добавление 32 всегда будет 32.
Я подозреваю, что у вас есть в вашем JCL что-то вроде этого:
//SYSIN DD *
00212
Когда вы делаете ACCEPT, вы получите только 00 от этого.
При использовании ACCEPT для небольших программ тестирования рекомендуется отображать то, что вы получаете, чтобы вы могли видеть.
Либо сделайте WS-A больше, либо значение на карте, следующее за вашим SYSIN, меньше.
Если у вас есть другие проблемы, вызывающие обращение к значению WS-A как нулю. Итак, вы можете вставить JCL из файла 2 на катушку для своей задачи. С номерами строк, которые он сгенерировал :-)
И данные карты SYSIN (ваш 98). Обратите внимание, в частности, на любые «SYSIN сгенерированные» операторы в вашем JCL-выходе.
Вот ваша программа. Я избавился от ненужных вещей и изменил имена WS-A и WS-B. Теперь, когда WS-B имеет собственное имя, вы можете видеть, что при его создании он имеет неправильную длину, он должен быть не менее трех цифр.
ID DIVISION.
PROGRAM-ID. TEMP1.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 INPUT-CENTIGRADE PIC 9(2).
01 OUTPUT-FARENHEIT PIC 9(3).
PROCEDURE DIVISION.
ACCEPT INPUT-CENTIGRADE
DISPLAY
"CELSIUS COMING IN "
">"
INPUT-CENTIGRADE
"<"
COMPUTE OUTPUT-FARENHEIT ROUNDED
= ((9/5)
* INPUT-CENTIGRADE)
+ 32
DISPLAY
"FARENHEIT GOING OUT "
">"
OUTPUT-FARENHEIT
"<"
GOBACK
.
Выход запуска программы является:
CELSIUS COMING IN >98<
FARENHEIT GOING OUT >208<
Запуск этой версии вашей программы с «0098» для ввода дает это:
CELSIUS COMING IN >00<
FARENHEIT GOING OUT >032<
Кажется, что ваш вопрос был в COBOL , Я исправил его для вас. (http://caseconverter.com/ на помощь!). –
При вставке просто выделите код, который вы хотите скопировать, затем вставьте. Номера строк затрудняют попытку вашего кода. Следите за своими тегами. Придерживайтесь COBOL и мэйнфреймов и JCL, в которых участвует JCL. –