Обоснование типа данных в COBOL
Классификация/типы данных помогает системе определить, как программист хочет использовать данные в той или иной конкретной программе. В COBOL у нас есть три разные классификации ТИПОВ ДАННЫХ: числовые, буквенно-цифровые и буквенно-цифровые типы данных.
В COBOL DATA TYPE выравнивание применяется к числовому типу данных, буквенно-цифровому типу данных и алфавитному типу данных. Среди которых числовой тип данных будет выравниваться по правому краю, тогда как буквенно-цифровой тип данных будет выравниваться по левому краю.
Числовое обоснование:
Если входные данные представляют собой числа или цифры, они будут относиться к числовым типам данных. В COBOL мы будем использовать числовой тип данных, используя «9 (x)», где x может быть любым целым числом, которое будет представлять размер данных. Максимальное значение числового типа данных будет 9(18). Значение числового выравнивания будет присвоено справа налево.
Алфавитное обоснование:
Если входные данные являются буквенными, то они будут подпадать под алфавитные типы данных. В COBOL мы назначим АЛФАВИТНЫЙ ТИП ДАННЫХ, используя «A (x)», где x может быть любым целым числом, которое будет представлять размер взятых данных. Максимальный размер будет A(35535) в АЛФАВИТНОМ ТИПЕ ДАННЫХ COBOL. Значение ALPHABETIC DATA TYPE будет присваиваться слева направо.
Буквенно-цифровое обоснование:
Если входные данные представляют собой смесь буквенных и цифровых цифр, то они будут относиться к ТИПУ АЛЬФА-ЧИСЛОВЫХ ДАННЫХ. В COBOL мы назначим ТИП ДАННЫХ АЛЬФА-ЧИСЛА, используя «X (x)», где x может быть любым целым числом, которое будет представлять размер взятых данных. Максимальный размер будет X (35535) в ТИПЕ ДАННЫХ COBOL ALPHA-NUMERIC. Значение ALPHA-NUMERIC DATA TYPE также будет присваиваться слева направо.
Пример:
Cobol
IDENTIFICATION DIVISION . PROGRAM - ID . DATATYPES. DATA DIVISION . WORKING-STORAGE SECTION . 01 VAR011 PIC 9 ( 10 ) . 01 VAR012 PIC 9 ( 5 ). 01 VAR021 PIC A( 15 ) . 01 VAR022 PIC A( 5 ). 01 VAR031 PIC X( 20 ) . 01 VAR032 PIC X( 13 ). PROCEDURE DIVISION . MAIN-PARA. MOVE "123456789" TO VAR011. MOVE "123456789" TO VAR012. DISPLAY "NUMERIC DATA JUSTIFICATION" . DISPLAY "VAR011 : " VAR011. DISPLAY "VAR012 : " VAR012. MOVE "ABCDEFGHIJKL" TO VAR021. MOVE "ABCDEFGHIJKL" TO VAR022. DISPLAY "ALPHABETIC DATA JUSTIFICATION" . DISPLAY "VAR021 : " VAR021. DISPLAY "VAR022 : " VAR022. MOVE "GEEKSFORGEEKS12345" TO VAR031. MOVE "GEEKSFORGEEKS12345" TO VAR032. DISPLAY "ALPHA-NUMERIC DATA JUSTIFICATION" . DISPLAY "VAR031 : " VAR031. DISPLAY "VAR032 : " VAR032. STOP RUN . |
Выход:
Объяснение :
В результате мы видим два разных сценария для всех типов данных:
- Для VAR011 мы взяли длину 10, а входное значение — «123456789», что составляет 9 цифр, что означает меньше, чем длина переменной. Поскольку числовой тип данных является правильным выравниванием, данные будут присваиваться справа налево, поэтому все данные будут вставлены, а дополнительные байты будут покрыты начальным 0.
- Для VAR012 мы взяли длину 5, что меньше длины входной переменной. Поскольку числовой тип данных является правильным выравниванием, данные будут присваиваться справа налево, поэтому на выходе будет 56789.
- Для VAR021 мы взяли длину 15, а входное значение — «ABCDEFGHIJKL», что составляет 12 букв и означает меньше, чем длина переменной. Поскольку алфавитные данные расположены по левому краю, данные выравнивания будут назначаться слева направо, поэтому вывод будет ABCDEFGHIJKL, а дополнительные байты будут игнорироваться.
- А для VAR022 мы взяли длину 5, что меньше длины входной переменной. Поскольку алфавитные данные расположены по левому краю, данные выравнивания будут назначаться слева направо, поэтому вывод будет ABCDE.
- Для VAR031 мы взяли длину 20, а входное значение — «GEEKSFORGEEKS12345», что составляет 18 букв и означает меньше, чем длина переменной. Поскольку буквенно-цифровые данные выравниваются по левому краю, данные будут располагаться слева направо, поэтому вывод будет GEEKSFORGEEKS12345, а дополнительные байты будут игнорироваться.
- Для VAR032 мы взяли длину 13, что меньше длины входной переменной. Поскольку в буквенно-цифровых данных выравнивание по левому краю, данные будут назначаться слева направо, поэтому на выходе будет GEEKSFORGEEKS.