Во-первых, почему вы используете квалификацию (OF
)? Это требуется только в том случае, если вы определили повторяющиеся имена. Зачем определять дубликаты имен в РАБОЧЕМ ХРАНЕНИИ?
Во-вторых, если вы не используете очень старый компилятор COBOL, вы должны использовать только минимальные требуемые полные остановки/периоды в PROCEDURE DIVISION
. То есть один, чтобы прервать ярлык paragraph/SECTION, один, чтобы прервать абзац/раздел. Один для завершения заголовка PROCEDURE DIVISION. Один для завершения программы (если полный стоп/период еще не существует. Сохранение дополнительных полных остановок/периодов вокруг затрудняет копирование кода. Поместите полный стоп/период на отдельной строке, так что . ни одна строка кода не имеет один, то вы не можете случайно завершить сферу путем копирования строки кода с полной остановки/периода в пределах области
с теми, в виду, что ваш код становится:
COMPUTE W-MNTH-THRSHLD = W-MNTH-THRSHLD
* -1
Умножение происходит медленнее, чем вычитание Итак, как Брюс Мартин предложил:.
COMPUTE W-MNTH-THRSHLD = 0
- W-MNTH-THRSHLD
Я делаю это так:
SUBTRACT W-MNTH-THRSHLD FROM 0
GIVING W-MNTH-THRSHLD-REV-SIGN
Я не люблю «разрушающий» значение просто ради этого. Если программа выходит из строя, я знаю, что содержится в W-MNTH-THRSHLD, плюс значащее имя для целевого поля объясняет, что делает линия.
Вы также можете DIVIDE
(или /
в COMPUTE), но это еще медленнее, чем MULTIPLY (или *
).
Также имейте в виду, что преобразования могут потребоваться, потому что вы выполняете арифметику с полем ИСПОЛЬЗОВАНИЕ DISPLAY. Если вы определяете свое поле как BINARY
или PACKED-DECIMAL
, то преобразование менее вероятно для арифметики. Вы не проиграете это, если только ваш компилятор не справится с ИСПОЛЬЗОВАНИЕМ DISPLAY в арифметике, не требуя преобразования.
Примечание также, COMPUTE не является функцией. COMPUTE - это глагол, только часть языка. «Я использую COMPUTE» достаточно и даже не нужно, поскольку мы можем видеть это из кода.
Это или вычесть из нуля и т. Д. –
Как сказал Билл, вы также можете использовать MULTIPLY -1 * W-WRK – Kennah
Внутренняя функция Абсолютное значение (ABS) - это не то же самое, что отрицание, но в зависимости от того, действительно после, я предлагаю его. – Kennah