C margine A margine B 1<-->6 7 8<---->11 12<--->72 | | | | | | | +--------- qui si digita il programma | | +--------------------- intestazione division/section/nomi par. | +--------------------------- se * la riga e' un commento +--------------------------------- documentazioneUn programma e' suddiviso in DIVISION e SECTION:
IDENTIFICATION DIVISION. dichiarazioni generali del programma PROGRAM-ID nome del programma ENVIRONMENT DIVISION. CONFIGURATION SECTION. definisce tipo di elaboratore INPUT-OUTPUT SECTION. solo se il prog utilizza i file FILE-CONTROL. SELECT ... assegna nomi interni a file esterni DATA DIVISION. definizione tipo e dimensione dei dati FILE SECTION. FD ... file description WORKING-STORAGE SECTION. contiene le dichiarazioni delle variabili contiene dati elementari(77) e composti(>=01) VALUE ... PICTURE ... A=alpha, 9=numerico, X=alphanum PROCEDURE DIVISION. MAIN SECTION. MAIN EXIT.
77LATO PIC 9.Soltanto i campi elementari hanno la clausola PICTURE.
01NOME-STUD. 03 COGNOME PIC X(15) 03 NOME PIC X(15) 03 CLASSE PIC X(5)E' possibile associare nomi diversi ai valori che puo' assumere un campo.
77 GRADO PIC9(01) 88 PRIMO VALUE 1 88 SECONDO VALUE 2 88 TERZO VALUE 3
PIC XXXXX. o PIC X(5). 5 caratteri alphanumerici PIC 99. o PIC 9(2). 2 caratteri numerici- VALUE Associata alla PICTURE vi e' l'istruzione VALUE che permette una inizializzazione di una variabile durante la fase dichiarativa.
PIC 9(3) VALUE 145.- variabile con segno:
VALORE S PIC S9(06)- variabile con virgola:
VALORE V PIC 9(03)V9(03)- variabili zoned (numeriche) per la variabile sono utilizzati tanti byte quanti indicati nella PICTURE.
01VAR1-ZONED PIC 9(6). 01VAR2-ZONED PIC S9(6) DISPLAY. MOVE 19 TO VAR1-ZONED. MOVE -1993 TO VAR2-ZONED.- variabili packed (numeriche) in ogni byte sono impaccati 3 digit piu' un nibble per il segno.
01VAR-PAC PIC 9(6) COMP-3.- variabili binarie (numeriche) il numero viene memorizzato in 2, 4 o 8 byte secondo il numero di cifre.
01VAR-BINPIC PIC 9(4) COMP. Fino a 4 cifre utilizza 2 byte da 5 a 9 " " 4 " da 10 a 18 " " 8 "- variabili floating-point puo' essere in singola (COMP-1) o doppia precisione (COMP-2).
01TABELLA OCCURS 10 TIMES PIC 9(6). 01TABELLA OCCURS 10 TIMES. 03 CAMPO-1 PIC 9(2). 03 CAMPO-3 PIC X(4).Per riferirsi alla variabile CAMPO-1 nel secondo elemento della tabella e' sufficente usare:
COMPUTE campo-1 = VALORE * 2 + 10. COMPUTE X = VALORE + VALORE.
ADD op-1 op-2 ... op-n GIVING ris-1 ... ris-m ADD op-1 op-2 ... op-n TO ris-1 ... ris-m
se VAR1 = 23 allora con ADD VAR1 2 GIVING RIS1 RIS2. RIS1 e RIS2 contengono 25 se VAR1 = 23 e RIS1 = 5 allora con ADD VAR1 3 TO RIS1. RIS1 contiene 31In ugual modo vi sono:
SUBTRACT op-1 ... op-n FROM valore GIVING ris-1 ... ris-m SUBTRACT op-1 ... op-n FROM valore TO ris-1 ... ris-m MULTIPLY val-1 BY val-2 GIVING ris-1 ... ris-n MULTIPLY val-1 BY ris-1 ... ris-n DIVIDE val-1 INTO val-2 GIVING ris-1 REMAINDER campo-1 DIVIDE val-1 INTO ris-1 ... ris-n
IF condizione istruzione-1 [ ELSE istruzione-2 ].Per es:
IF VARIABILE-A > VARIABILE-B DISPLAY 'A maggiore di B' ELSE DISPLAY 'B maggiore di A'. IF SCONTO NOT EQUAL ZERO COMPUTE TOT = IMP + ( IMP * SCONTO / 100 ) DISPLAY TOT.
MOVE campo-1 TO campo-2. MOVE 12345 TO VALORE.
FILE SECTION. FD nome-file LABEL RECORD IS STANDARD [BLOCK CONTAINS number RECORD]. 01 nome-record PIC .......... ...oppure... 01 REC-ARTICOLO. 03 CODICE PIC X(10). 03 DESCRIZIONE PIC X(20). 03 GIACENZA PIC 9(5). 03 GIACENZA-MIN PIC 9(5). 03 QTA-ORD PIC 9(5).
OPEN INPUT nome-file1 [nome-file2] ... OPEN OUTPUT nome-file1 [nome-file2] ... OPEN INPUT nome-file1 OUTPUT nome-file2
CLOSE nome-file1 [nome-file2] ...
READ nome-file [AT END istruzioni] READ nome-file INTO nome-dato [AT END istruzioni]
WRITE nome-record WRITE nome-record FROM nome-dato
COPY filename
CALL nome-moduloIl programma chiamato ritorna il controllo mediante l'istruzione GOBACK.
SCONTO SECTION. INIZIO-SCONTO. COMPUTE TOT = IMP + ( IMP * SCONTO / 100 ). FINE-SCONTO. EXIT.