Учебники

КОБОЛ — Расположение данных

Компоновка COBOL — это описание использования каждого поля и значений, присутствующих в нем. Ниже приведены записи описания данных, используемые в COBOL —

  • Переопределить пункт
  • Переименовывает пункт
  • Условия использования
  • тетради

Переопределить пункт

Предложение переопределения используется для определения хранилища с другим описанием данных. Если один или несколько элементов данных не используются одновременно, то одно и то же хранилище можно использовать для другого элемента данных. Таким образом, одно и то же хранилище может быть связано с разными элементами данных.

Синтаксис

Ниже приводится синтаксис предложения Redefines —

01 WS-OLD PIC X(10).
01 WS-NEW1 REDEFINES WS-OLD PIC 9(8).
01 WS-NEW2 REDEFINES WS-OLD PIC A(10).

Ниже приведены детали используемых параметров —

  • WS-OLD — это новый предмет
  • WS-NEW1 и WS-NEW2 переопределяют позицию

Номера уровней переопределенного предмета и переопределяемого предмета должны быть одинаковыми, и это не может быть номер уровня 66 или 88. Не используйте предложение VALUE с переопределяемым элементом. В разделе «Файл» не используйте предложение переопределения с номером уровня 01. Определение переопределения должно быть следующим описанием данных, которое вы хотите переопределить. Переопределенный элемент всегда будет иметь то же значение, что и переопределенный элемент.

пример

Live Demo

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.

DATA DIVISION.
   WORKING-STORAGE SECTION.
   01 WS-DESCRIPTION.
   05 WS-DATE1 VALUE '20140831'.
   10 WS-YEAR PIC X(4).
   10 WS-MONTH PIC X(2).
   10 WS-DATE PIC X(2).
   05 WS-DATE2 REDEFINES WS-DATE1 PIC 9(8).

PROCEDURE DIVISION.
   DISPLAY "WS-DATE1 : "WS-DATE1.
   DISPLAY "WS-DATE2 : "WS-DATE2.

STOP RUN.

JCL для выполнения вышеуказанной программы COBOL —

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO

Когда вы компилируете и запускаете вышеуказанную программу, она дает следующий результат —

WS-DATE1 : 20140831
WS-DATE2 : 20140831

Переименовывает пункт

Предложение Renames используется для присвоения различных имен существующим элементам данных. Он используется, чтобы перегруппировать имена данных и дать им новое имя. Новые имена данных могут переименовываться по группам или элементарным элементам. Уровень № 66 зарезервирован для переименования.

Синтаксис

Ниже приводится синтаксис предложения Renames —

01 WS-OLD.
10 WS-A PIC 9(12).
10 WS-B PIC X(20).
10 WS-C PIC A(25).
10 WS-D PIC X(12).
66 WS-NEW RENAMES WS-A THRU WS-C.

Переименование возможно только на том же уровне. В приведенном выше примере WS-A, WS-B и WS-C находятся на одном уровне. Определение переименования должно быть следующим описанием данных, которое вы хотите переименовать. Не используйте переименования с номерами уровней 01, 77 или 66. Имена данных, используемые для переименований, должны быть в последовательности. Элементы данных с условием возникновения не могут быть переименованы.

пример

Live Demo

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.

DATA DIVISION.
   WORKING-STORAGE SECTION.
   01 WS-DESCRIPTION.
   05 WS-NUM.
   10 WS-NUM1 PIC 9(2) VALUE 20.
   10 WS-NUM2 PIC 9(2) VALUE 56.
   05 WS-CHAR.
   10 WS-CHAR1 PIC X(2) VALUE 'AA'.
   10 WS-CHAR2 PIC X(2) VALUE 'BB'.
   66 WS-RENAME RENAMES WS-NUM2 THRU WS-CHAR2.

PROCEDURE DIVISION.
   DISPLAY "WS-RENAME : " WS-RENAME.
   
STOP RUN.

JCL для выполнения вышеуказанной программы COBOL —

//SAMPLE JOB(TESTJCL,XXXXXX),CLASS = A,MSGCLASS = C
//STEP1 EXEC PGM = HELLO

Когда вы компилируете и запускаете вышеуказанную программу, она дает следующий результат —

WS-RENAME : 56AABB

Условия использования

Предложение Usage указывает операционную систему, в которой хранятся данные формата. Его нельзя использовать с номерами уровней 66 или 88. Если в группе указано условие использования, то все элементарные элементы будут иметь одно и то же предложение использования. В разделе «Использование» доступны следующие параметры:

дисплей

Элемент данных хранится в формате ASCII, и каждый символ занимает 1 байт. Это использование по умолчанию.

В следующем примере вычисляется количество необходимых байтов —

01 WS-NUM PIC S9(5)V9(3) USAGE IS DISPLAY.
It requires 8 bytes as sign and decimal doesn't require any byte.

01 WS-NUM PIC 9(5) USAGE IS DISPLAY.
It requires 5 bytes as sign.

ВЫЧИСЛИТЕЛЬНЫЙ / КОМП

Элемент данных хранится в двоичном формате. Здесь элементы данных должны быть целыми числами.

В следующем примере вычисляется количество необходимых байтов —

01 WS-NUM PIC S9(n) USAGE IS COMP.

If 'n' = 1 to 4, it takes 2 bytes.
If 'n' = 5 to 9, it takes 4 bytes.
If 'n' = 10 to 18, it takes 8 bytes.

КОМП-1

Элемент данных похож на Real или Float и представлен как число с плавающей запятой одинарной точности. Внутренне данные хранятся в шестнадцатеричном формате. COMP-1 не принимает пункт PIC. Здесь 1 слово равно 4 байта.

КОМП-2

Элемент данных похож на Long или Double и представлен как число с плавающей запятой двойной точности. Внутренне данные хранятся в шестнадцатеричном формате. COMP-2 не определяет пункт PIC. Здесь 2 слова равны 8 байтам.

КОМП-3

Элемент данных хранится в упакованном десятичном формате. Каждая цифра занимает половину байта (1 полубайт), а знак хранится в крайнем правом полубайте.

В следующем примере вычисляется количество необходимых байтов —

01 WS-NUM PIC 9(n) USAGE IS COMP.
Number of bytes = n/2 (If n is even)
Number of bytes = n/2 + 1(If n is odd, consider only integer part)

01 WS-NUM PIC 9(4) USAGE IS COMP-3 VALUE 21.
It requires 2 bytes of storage as each digit occupies half a byte.

01 WS-NUM PIC 9(5) USAGE IS COMP-3 VALUE 21.
It requires 3 bytes of storage as each digit occupies half a byte.

тетради

Тетрадь COBOL — это выбор кода, который определяет структуры данных. Если конкретная структура данных используется во многих программах, то вместо того, чтобы снова записать ту же структуру данных, мы можем использовать тетради. Мы используем оператор COPY для включения тетради в программу. Оператор COPY используется в разделе WorkingStorage.

Следующий пример включает в себя тетрадь внутри программы COBOL —

DATA DIVISION.
WORKING-STORAGE SECTION.
COPY ABC.

Здесь ABC — имя тетради. Следующие элементы данных в тетради ABC могут использоваться внутри программы.