COBOL - Tipi di dati

La divisione dei dati viene utilizzata per definire le variabili utilizzate in un programma. Per descrivere i dati in COBOL, è necessario comprendere i seguenti termini:

  • Nome dati
  • Numero di livello
  • Clausola di immagine
  • Clausola di valore
01            TOTAL-STUDENTS            PIC9(5)            VALUE '125'.
|                    |                    |                    |
|                    |                    |                    |
|                    |                    |                    | 
Level Number     Data Name           Picture Clause       Value Clause

Nome dati

I nomi dei dati devono essere definiti nella Divisione dati prima di utilizzarli nella Divisione procedure. Devono avere un nome definito dall'utente; le parole riservate non possono essere utilizzate. I nomi dei dati fanno riferimento alle posizioni di memoria in cui sono memorizzati i dati effettivi. Possono essere elementari o di gruppo.

Esempio

L'esempio seguente mostra nomi di dati validi e non validi:

Valid:
   WS-NAME
   TOTAL-STUDENTS
   A100
   100B

Invalid:
   MOVE            (Reserved Words)
   COMPUTE         (Reserved Words)
   100             (No Alphabet)
   100+B           (+ is not allowed)

Numero di livello

Il numero di livello viene utilizzato per specificare il livello di dati in un record. Sono usati per distinguere tra elementi elementari e elementi di gruppo. Gli elementi elementari possono essere raggruppati insieme per creare elementi di gruppo.

Sr.No. Numero e descrizione del livello
1

01

Inserimento della descrizione del record

2

02 to 49

Elementi di gruppo ed elementari

3

66

Rinomina gli elementi della clausola

4

77

Elementi che non possono essere suddivisi

5

88

Inserimento del nome della condizione

  • Elementary itemsnon può essere ulteriormente diviso. Il numero di livello, il nome dei dati, la clausola Picture e la clausola Value (opzionale) vengono utilizzati per descrivere un elemento elementare.

  • Group itemsconsistono in uno o più elementi elementari. Il numero di livello, il nome dei dati e la clausola del valore (facoltativa) vengono utilizzati per descrivere un elemento del gruppo. Il numero del livello di gruppo è sempre 01.

Esempio

L'esempio seguente mostra elementi di gruppo ed elementari:

DATA DIVISION.
WORKING-STORAGE SECTION.
01 WS-NAME    PIC X(25).                               ---> ELEMENTARY ITEM 
01 WS-CLASS   PIC 9(2)  VALUE  '10'.                   ---> ELEMENTARY ITEM

01 WS-ADDRESS.                                         ---> GROUP ITEM   
   05 WS-HOUSE-NUMBER    PIC 9(3).                     ---> ELEMENTARY ITEM
   05 WS-STREET          PIC X(15).                    ---> ELEMENTARY ITEM
   05 WS-CITY            PIC X(15).                    ---> ELEMENTARY ITEM
   05 WS-COUNTRY         PIC X(15)  VALUE 'INDIA'.     ---> ELEMENTARY ITEM

Clausola di immagine

La clausola Picture viene utilizzata per definire i seguenti elementi:

  • Data typepuò essere numerico, alfabetico o alfanumerico. Il tipo numerico è composto solo da cifre da 0 a 9. Il tipo alfabetico è composto da lettere dalla A alla Z e spazi. Il tipo alfanumerico è composto da cifre, lettere e caratteri speciali.

  • Signpuò essere utilizzato con dati numerici. Può essere + o -.

  • Decimal point positionpuò essere utilizzato con dati numerici. La posizione presunta è la posizione del punto decimale e non è inclusa nei dati.

  • Length definisce il numero di byte utilizzati dall'elemento dati.

Simboli utilizzati in una clausola Picture -

Sr.No. Simbolo e descrizione
1

9

Numerico

2

A

Alfabetico

3

X

Alfanumerico

4

V

Decimale implicito

5

S

Cartello

6

P

Presunto decimale

Esempio

L'esempio seguente mostra l'uso della clausola PIC:

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.

DATA DIVISION.
   WORKING-STORAGE SECTION.
   01 WS-NUM1 PIC S9(3)V9(2).
   01 WS-NUM2 PIC PPP999.
   01 WS-NUM3 PIC S9(3)V9(2) VALUE -123.45.
   01 WS-NAME PIC A(6) VALUE 'ABCDEF'.
   01 WS-ID PIC X(5) VALUE 'A121$'.

PROCEDURE DIVISION.
   DISPLAY "WS-NUM1 : "WS-NUM1.
   DISPLAY "WS-NUM2 : "WS-NUM2.
   DISPLAY "WS-NUM3 : "WS-NUM3.
   DISPLAY "WS-NAME : "WS-NAME.
   DISPLAY "WS-ID : "WS-ID.
STOP RUN.

JCL per eseguire il programma COBOL di cui sopra -

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

Quando compili ed esegui il programma sopra, produce il seguente risultato:

WS-NUM1 : +000.00
WS-NUM2 : .000000
WS-NUM3 : -123.45
WS-NAME : ABCDEF
WS-ID : A121$

Clausola di valore

La clausola Value è una clausola facoltativa utilizzata per inizializzare gli elementi di dati. I valori possono essere letterali numerici, letterali alfanumerici o costanti figurativi. Può essere utilizzato sia con elementi di gruppo che elementari.

Esempio

L'esempio seguente mostra l'uso della clausola VALUE -

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.

DATA DIVISION.
   WORKING-STORAGE SECTION.
   01 WS-NUM1 PIC 99V9 VALUE IS 3.5.
   01 WS-NAME PIC A(6) VALUE 'ABCD'.
   01 WS-ID PIC 99 VALUE ZERO.

PROCEDURE DIVISION.
   DISPLAY "WS-NUM1 : "WS-NUM1.
   DISPLAY "WS-NAME : "WS-NAME.
   DISPLAY "WS-ID   : "WS-ID.
STOP RUN.

JCL per eseguire il programma COBOL di cui sopra -

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

Quando compili ed esegui il programma sopra, produce il seguente risultato:

WS-NUM1 : 03.5
WS-NAME : ABCD
WS-ID   : 00