Запятые в коболе?

Я пока работаю с Коболом :) У меня вопрос, давайте возьмем этот код:

                          ACCEPT A
                           COMPUTE C= FUNCTION SIN(A)
                           END-COMPUTE
                          DISPLAY "Computing."
               DISPLAY "Computing.."
               DISPLAY "Computing..."
               DISPLAY "Computing...."
               DISPLAY "Computing....."
               DISPLAY "Computing......"
               DISPLAY "IL SENO DI " A " RISULTA..."
                           DISPLAY C " GRADI"

Теперь он делает Sinus, но выход, например, с 37: 00000000000000 GRADI Мой научный калькулятор говорит: 0,6018 Как вы видите, COBOL не показывает числа после запятой. Есть ли способ показать их? Спасибо:)


person aIDserse    schedule 15.05.2020    source источник
comment
Я не вижу запятой в приведенном выше фрагменте кода, так где же она? Или вы используете запятую вместо десятичной точки, например. 1,1 вместо 1,1? Если это так, то вопрос немного понятнее, но вам нужно обновить вопрос, чтобы показать объявление C, которое, как я полагаю, является переменной, которая, как вы говорите, должна содержать десятичные знаки. Я подозреваю, что вы объявили его целым, а не реальным.   -  person NicC    schedule 16.05.2020
comment
@NicC, ты действительно знаешь КОБОЛ? Он не имеет целых и вещественных   -  person JoelFan    schedule 16.05.2020
comment
Пожалуйста, покажите нам PIC C   -  person JoelFan    schedule 16.05.2020
comment
извините, в Италии мы используем запятые... Я имел в виду точку!   -  person aIDserse    schedule 16.05.2020
comment
@JoelFan Да, я знаком с COBOL, но, очевидно, Джулио нет. Целое число, число без дробной части являются целыми числами. Реальные числа — это числа, которые мы имеем в реальном мире, где могут существовать десятичные части.   -  person NicC    schedule 16.05.2020
comment
Прочтите: Как создать минимальный воспроизводимый пример. Большинство операторов DISPLAY не нужны для минимального, а отсутствие DATA DIVISION делает код не воспроизводимым.   -  person Rick Smith    schedule 16.05.2020


Ответы (2)


Мой кобол не гну, но вы можете сделать что-то вроде

01 C comp-2.
01 A pic 999.
01 C1 pic 999.999999.

PROCEDURE DIVISION.
BEGIN.
       move 37 to A
       COMPUTE C = FUNCTION SIN(A)
       END-COMPUTE
       move C to C1
       DISPLAY "Computing."
       DISPLAY "Computing.."
       DISPLAY "Computing..."
       DISPLAY "Computing...."
       DISPLAY "Computing....."
       DISPLAY "Computing......"
       DISPLAY "IL SENO DI " A " RISULTA..."
                   DISPLAY C1 " GRADI"

Фактический результат

Computing.
Computing..
Computing...
Computing....
Computing.....
Computing......
IL SENO DI 037 RISULTA...
000.643538 GRADI
person RB123    schedule 15.05.2020
comment
Аргумент функции SIN должен быть в радианах, а не в градусах. FUNCTION SIN(A * 3.14159 / 180) это один из вариантов. Также SIN может быть отрицательным. - person Rick Smith; 16.05.2020
comment
похоже, что он дает вам значение с плавающей запятой. Возможно, вы не понимаете, но в некоторых странах вместо запятой используется точка для разделения целой и дробной частей числа. Похоже, вы тоже можете это изменить: community.microfocus.com/t5/Enterprise-Server-Knowledge-Base/ - person JoelFan; 16.05.2020
comment
Sooorryyy я имел в виду точку, я автоматически говорю запятая хахахах. Кстати, теперь это работает с результатами, но я все еще не могу получить баллы за число, которое я должен вставить. - person aIDserse; 16.05.2020

Основываясь на том, что Рик и RB123 уже рассказали вам, я вижу ответ. Правильный способ изобразить элемент данных, который имеет десятичное место, — это буква V, показывающая положение подразумеваемой точки, а не '.' который управляет положением, в котором десятичная дробь отображается только в редактируемом поле вывода. Основное отличие состоит в том, что вы можете вводить или вычислять поля с буквой «V» и отображать или выводить только поля с «.».

PS. Я нахожусь в США, где десятичная точка — «.». - в некоторых странах вместо этого используется запятая. Это можно изменить, используя специальное имя DECIMAL-POINT IS COMMA.

   IDENTIFICATION DIVISION.
   PROGRAM-ID. Decimals.
   ENVIRONMENT DIVISION.
  * CONFIGURATION SECTION.
  * SPECIAL-NAMES.
  *    DECIMAL-POINT IS COMMA.

   DATA DIVISION.
   WORKING-STORAGE SECTION.
   01 A  pic S9(2)V9(5) comp-3.
   01 C  pic S9(2)V9(5) comp-3.

   PROCEDURE DIVISION.
   BEGIN.
       ACCEPT A
       COMPUTE C = FUNCTION SIN(A * 3.14159 / 180)
       DISPLAY "Computing."
       DISPLAY "Computing.."
       DISPLAY "Computing..."
       DISPLAY "Computing...."
       DISPLAY "Computing....."
       DISPLAY "Computing......"
       DISPLAY "IL SENO DI " A " RISULTA..."
       DISPLAY C " GRADI"

       GOBACK.
person Jim Castro    schedule 16.05.2020
comment
ПСС. Раскомментируйте специальные имена и измените значение PI на 3,14159. - person Jim Castro; 16.05.2020