[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico] [home] [volume] [parte]


Capitolo 685.   COBOL: esempi elementari

Questo capitolo raccoglie degli esempi elementari di programmi COBOL. Questi esempi risalgono a un lavoro didattico del 1985, realizzato con un minicomputer Burroughs B91 del 1981.

Salvo dove indicato in maniera differente, gli esempi mostrati funzionano regolarmente se compilati con OpenCOBOL 0.31.

685.1   ELM0100: prodotto tra due numeri

Variabili

A è il moltiplicando;

B è il moltiplicatore;

C è il risultato.

Descrizione

Il calcolo viene eseguito attraverso l'istruzione COMPUTE.

Paragrafo MAIN

Il programma si svolge unicamente all'interno di questo paragrafo. Il programma riceve dall'esterno i valori per le variabili A e B, esegue il prodotto tramite l'istruzione COMPUTE mettendo il risultato nella variabile C.

Viene visualizzato il contenuto della variabile C con l'istruzione DISPLAY.

Il programma si arresta perché incontra l'istruzione STOP RUN.

Una copia di questo file dovrebbe essere disponibile presso <allegati/a2/ELM0100.cob>.

000100 IDENTIFICATION DIVISION.
000200 PROGRAM-ID.   ELM0100.
000300 AUTHOR.       DANIELE GIACOMINI.
000400 DATE-WRITTEN. 1985-02-12.
000500*
000600 ENVIRONMENT DIVISION.
000700*
000800 DATA DIVISION.
000900*
001000 WORKING-STORAGE SECTION.
001100 01  A PIC 9(7).
001200 01  B PIC 9(7).
001300 01  C PIC 9(14).
001400*
001500 PROCEDURE DIVISION.
001600*-----------------------------------------------------------------
001700 MAIN.
001800     DISPLAY "MOLTIPLICAZIONE DI DUE NUMERI".
001900     DISPLAY "INSERISCI IL PRIMO ELEMENTO".
002000     ACCEPT A.
002100     DISPLAY "INSERISCI IL SECONDO ELEMENTO".
002200     ACCEPT B.
002300     COMPUTE C = A * B.
002400     DISPLAY C.
002500*
002600     STOP RUN.
002700*

685.2   ELM0200: prodotto tra due numeri

Variabili

A è il moltiplicando;

B è il moltiplicatore;

C è il risultato; questa variabile viene inizializzata a zero in fase di dichiarazione.

Descrizione

Il calcolo viene eseguito sommando alla variabile C la variabile A per B volte.

Paragrafo MAIN

Il programma riceve dall'esterno i valori per le variabili A e B. Attraverso l'istruzione PERFORM viene eseguito il paragrafo SOMMA per B volte; al termine di questo ciclo il risultato della moltiplicazione si trova nella variabile C, che viene visualizzato con l'istruzione DISPLAY.

Il programma si arresta perché incontra l'istruzione STOP RUN.

Paragrafo SOMMA

Il paragrafo somma al contenuto della variabile C il contenuto della variabile A. Dal momento che questo paragrafo viene eseguito B volte, la variabile C finisce con il contenere il risultato del prodotto di «A×B».

Una copia di questo file dovrebbe essere disponibile presso <allegati/a2/ELM0200.cob>.

000100 IDENTIFICATION DIVISION.
000200 PROGRAM-ID.   ELM0200.
000300 AUTHOR.       DANIELE GIACOMINI.
000400 DATE-WRITTEN. 1985-02-14.
000500*
000600 ENVIRONMENT DIVISION.
000700*
000800 DATA DIVISION.
000900*
001000 WORKING-STORAGE SECTION.
001100 01  A PIC 9(7).
001200 01  B PIC 9(7).
001300 01  C PIC 9(14)   VALUE ZERO.
001400*
001500 PROCEDURE DIVISION.
001600*------------------------- LIVELLO 0 -----------------------------
001700 MAIN.
001800     DISPLAY "MOLTIPLICAZIONE DI DUE NUMERI".
001900     DISPLAY "INSERISCI IL PRIMO ELEMENTO".
002000     ACCEPT A.
002100     DISPLAY "INSERISCI IL SECONDO ELEMENTO".
002200     ACCEPT B.
002300     PERFORM SOMMA B TIMES.
002400     DISPLAY C.
002500*
002600     STOP RUN.
002700*------------------------- LIVELLO 1 -----------------------------
002800 SOMMA.
002900     COMPUTE C = C + A.
003000*

685.3   ELM0300: prodotto tra due numeri

Variabili

A è il moltiplicando;

B è il moltiplicatore;

C è il risultato.

Descrizione

Il calcolo viene eseguito sommando alla variabile C la variabile A per B volte. Per ogni esecuzione di tale somma, la variabile B viene diminuita di una unità, cosicché il ciclo delle somme viene arrestato quando B è ormai a zero.

Paragrafo MAIN

Vengono ricevuti dall'esterno i valori per le variabili A e B. Viene eseguito tramite l'istruzione PERFORM il paragrafo SOMMA fino a quando la variabile B raggiunge lo zero. A quel punto la variabile C contiene il risultato del prodotto, che viene visualizzato con l'istruzione DISPLAY.

Il programma si arresta perché incontra l'istruzione STOP RUN.

Paragrafo SOMMA

Inizialmente viene decrementato di una unità il contenuto della variabile B, quindi viene sommato al contenuto di C il valore di A.

Una copia di questo file dovrebbe essere disponibile presso <allegati/a2/ELM0300.cob>.

000100 IDENTIFICATION DIVISION.
000200 PROGRAM-ID.   ELM0300.
000300 AUTHOR.       DANIELE GIACOMINI.
000400 DATE-WRITTEN. 1985-04-13.
000500*
000600 ENVIRONMENT DIVISION.
000700*
000800 DATA DIVISION.
000900*
001000 WORKING-STORAGE SECTION.
001100 01  A PIC 9(7).
001200 01  B PIC 9(7).
001300 01  C PIC 9(14)   VALUE ZERO.
001400*
001500 PROCEDURE DIVISION.
001600*------------------------- LIVELLO 0 -----------------------------
001700 MAIN.
001800     DISPLAY "MOLTIPLICAZIONE DI DUE NUMERI".
001900     DISPLAY "INSERISCI IL PRIMO ELEMENTO".
002000     ACCEPT A.
002100     DISPLAY "INSERISCI IL SECONDO ELEMENTO".
002200     ACCEPT B.
002300     PERFORM SOMMA UNTIL B = 0.
002400     DISPLAY C.
002500*
002600     STOP RUN.
002700*------------------------- LIVELLO 1 -----------------------------
002800 SOMMA.
002900     COMPUTE B = B - 1.
003000     COMPUTE C = C + A.
003100*

685.4   ELM0400: prodotto tra due numeri

Variabili

A è il moltiplicando;

B è il moltiplicatore;

C è il risultato;

EOJ quando assume il valore 1 il programma si arresta;

RISPOSTA è la variabile che riceve la risposta, un SI o un NO, per la continuazione o meno con un altro calcolo.

Descrizione

Il calcolo viene eseguito sommando alla variabile C la variabile A per B volte. Per ogni esecuzione di tale somma, la variabile B viene diminuita di una unità, cosicché il ciclo delle somme viene arrestato quando B è ormai a zero.

Il programma si arresta solo se gli viene dato un comando apposito, altrimenti continua a richiedere altri dati per l'esecuzione di un altro prodotto.

Paragrafo MAIN

Vengono ricevuti dall'esterno i valori per le variabili A e B tramite il paragrafo INSERIMENTO-DATI.

Viene eseguito il paragrafo LAVORO ripetutamente, terminando il ciclo quando la variabile EOJ contiene il valore uno.

Il programma si arresta perché incontra l'istruzione STOP RUN.

Paragrafo LAVORO

Viene eseguito tramite l'istruzione PERFORM il paragrafo SOMMA ripetutamente, terminando il ciclo quando la variabile B contiene il valore zero. A quel punto, la variabile C contiene il risultato del prodotto, che viene visualizzato con l'istruzione DISPLAY.

Il programma riceve dall'esterno una parola: un SI o un NO; se viene fornita la stringa SI (scritta con lettere maiuscole) il programma azzera il contenuto della variabile C ed esegue il paragrafo INSERIMENTO-DATI, altrimenti, viene messo il valore uno nella variabile EOJ.

Paragrafo INSERIMENTO-DATI

Il paragrafo riceve dall'esterno i valori per le variabili A e B.

Paragrafo SOMMA

Inizialmente viene decrementato di una unità il contenuto della variabile B, quindi viene sommato al contenuto di C il valore di A.

Una copia di questo file dovrebbe essere disponibile presso <allegati/a2/ELM0400.cob>.

000100 IDENTIFICATION DIVISION.
000200 PROGRAM-ID.   ELM0400.
000300 AUTHOR.       DANIELE GIACOMINI.
000400 DATE-WRITTEN. 1985-02-14.
000500*
000600 ENVIRONMENT DIVISION.
000700*
000800 DATA DIVISION.
000900*
001000 WORKING-STORAGE SECTION.
001100 01  A        PIC 9(7).
001200 01  B        PIC 9(7).
001300 01  C        PIC 9(14)   VALUE ZERO.
001400 01  EOJ      PIC 9       VALUE ZERO.
001500 01  RISPOSTA PIC XX.
001600*
001700 PROCEDURE DIVISION.
001800*------------------------- LIVELLO 0 -----------------------------
001900 MAIN.
002000     PERFORM INSERIMENTO-DATI.
002100     PERFORM LAVORO UNTIL EOJ = 1.
002200*
002300     STOP RUN.
002400*------------------------- LIVELLO 1 -----------------------------
002500 LAVORO.
002600     PERFORM SOMMA UNTIL B = 0.
002700     DISPLAY C.
002800*
002900     DISPLAY "VUOI CONTINUARE? SI O NO".
003000     ACCEPT RISPOSTA.
003100*
003200     IF RISPOSTA = "SI"
003300       THEN
003400           MOVE ZERO TO C,
003500           PERFORM INSERIMENTO-DATI;
003600       ELSE
003700           MOVE 1 TO EOJ.
003800*------------------------- LIVELLO 2 -----------------------------
003900 INSERIMENTO-DATI.
004000     DISPLAY "INSERISCI IL PRIMO ELEMENTO".
004100     ACCEPT A.
004200     DISPLAY "INSERISCI IL SECONDO ELEMENTO".
004300     ACCEPT B.
004400*-----------------------------------------------------------------
004500 SOMMA.
004600     COMPUTE B = B - 1.
004700     COMPUTE C = C + A.
004800*

685.5   ELM0500: prodotto tra due numeri

Variabili

A è il moltiplicando;

B è il moltiplicatore;

C è il risultato;

EOJ quando assume il valore 1 il programma si arresta;

RISPOSTA è la variabile che riceve la risposta, un SI o un NO, per la continuazione o meno con un altro calcolo.

Descrizione

Il calcolo viene eseguito sommando alla variabile C la variabile A per B volte. Il controllo di questa somma viene effettuato da un ciclo PERFORM VARYING che decrementa di una unità la variabile B, partendo dal suo valore iniziale, fino a quando si riduce a zero, nel qual caso il ciclo si arresta.

Paragrafo MAIN

Vengono ricevuti dall'esterno i valori per le variabili A e B tramite il paragrafo INSERIMENTO-DATI.

Viene eseguito il paragrafo LAVORO ripetutamente, terminando il ciclo quando la variabile EOJ contiene il valore uno.

Il programma si arresta perché incontra l'istruzione STOP RUN.

Paragrafo LAVORO

Viene eseguito tramite l'istruzione PERFORM il paragrafo SOMMA ripetutamente, decrementando il valore della variabile B, fino a zero, quando il ciclo termina. A quel punto, la variabile C contiene il risultato del prodotto, che viene visualizzato con l'istruzione DISPLAY.

Il programma riceve dall'esterno una parola: un SI o un NO; se viene fornita la stringa SI (scritta con lettere maiuscole) il programma azzera il contenuto della variabile C ed esegue il paragrafo INSERIMENTO-DATI, altrimenti, viene messo il valore uno nella variabile EOJ.

Paragrafo INSERIMENTO-DATI

Il paragrafo riceve dall'esterno i valori per le variabili A e B.

Paragrafo SOMMA

Viene sommato al contenuto di C il valore di A.

Una copia di questo file dovrebbe essere disponibile presso <allegati/a2/ELM0500.cob>.

000100 IDENTIFICATION DIVISION.
000200 PROGRAM-ID.   ELM0500.
000300 AUTHOR.       DANIELE GIACOMINI.
000400 DATE-WRITTEN. 1985-02-14.
000500*
000600 ENVIRONMENT DIVISION.
000700*
000800 DATA DIVISION.
000900*
001000 WORKING-STORAGE SECTION.
001100 01  A        PIC 9(7).
001200 01  B        PIC 9(7).
001300 01  C        PIC 9(14)   VALUE ZERO.
001400 01  EOJ      PIC 9       VALUE ZERO.
001500 01  RISPOSTA PIC XX.
001600*
001700 PROCEDURE DIVISION.
001800*------------------------- LIVELLO 0 -----------------------------
001900 MAIN.
002000     PERFORM INSERIMENTO-DATI.
002100     PERFORM LAVORO UNTIL EOJ = 1.
002200*
002300     STOP RUN.
002400*------------------------- LIVELLO 1 -----------------------------
002500 LAVORO.
002600     PERFORM SOMMA VARYING B FROM B BY -1 UNTIL B = 0.
002700     DISPLAY C.
002800*
002900     DISPLAY "VUOI CONTINUARE? SI O NO".
003000     ACCEPT RISPOSTA.
003100*
003200     IF RISPOSTA = "SI"
003300       THEN
003400           MOVE ZERO TO C,
003500           PERFORM INSERIMENTO-DATI;
003600       ELSE
003700           MOVE 1 TO EOJ.
003800*------------------------- LIVELLO 2 -----------------------------
003900 INSERIMENTO-DATI.
004000     DISPLAY "INSERISCI IL PRIMO ELEMENTO".
004100     ACCEPT A.
004200     DISPLAY "INSERISCI IL SECONDO ELEMENTO".
004300     ACCEPT B.
004400*-----------------------------------------------------------------
004500 SOMMA.
004600     COMPUTE C = C + A.
004700*

685.6   ELM0600: inserimento dati in un vettore

Variabili

RECORD-ELEMENTI è una variabile che si scompone in un array;

ELEMENTO è l'array che costituisce RECORD-ELEMENTI;

INDICE è l'indice usato per scandire gli elementi;

EOJ quando assume il valore 1 il programma si arresta;

RISPOSTA è la variabile che riceve la risposta, un SI o un NO, per la continuazione o meno con un altro calcolo.

Descrizione

Il programma esegue semplicemente un inserimento di dati all'interno degli elementi dell'array, con un accesso libero (bisogna ricordare che l'indice del primo elemento è uno), specificando prima l'indice e poi il valore (il carattere) da attribuire all'elemento.

Paragrafo MAIN

Viene eseguito una volta il paragrafo INSERIMENTO-INDICE, che serve a ricevere il valore dell'indice di inserimento dall'utente.

Viene eseguito il paragrafo LAVORO ripetutamente, terminando il ciclo quando la variabile EOJ contiene il valore uno.

Viene visualizzato il valore di tutta la variabile RECORD-ELEMENTI, attraverso l'istruzione DISPLAY.

Il programma si arresta perché incontra l'istruzione STOP RUN.

Paragrafo LAVORO

Il programma riceve dall'esterno il valore per ELEMENTO(INDICE).

Il programma riceve dall'esterno l'assenso o il dissenso riguardo alla continuazione dell'esecuzione; se l'intenzione è di proseguire, viene eseguito il paragrafo INSERIMENTO-INDICE, altrimenti viene messo il valore uno nella variabile EOJ.

Paragrafo INSERIMENTO-INDICE

Il programma riceve dall'esterno il valore per la variabile INDICE.

Una copia di questo file dovrebbe essere disponibile presso <allegati/a2/ELM0600.cob>.

000100 IDENTIFICATION DIVISION.
000200 PROGRAM-ID.   ELM0600.
000300 AUTHOR.       DANIELE GIACOMINI.
000400 DATE-WRITTEN. 1985-02-14.
000500*
000600 ENVIRONMENT DIVISION.
000700*
000800 DATA DIVISION.
000900*
001000 WORKING-STORAGE SECTION.
001100 01  RECORD-ELEMENTI.
001200     02  ELEMENTO  PIC X   OCCURS 9 TIMES.
001300 01  INDICE        PIC 9.
001400 01  EOJ           PIC 9   VALUE ZERO.
001500 01  RISPOSTA      PIC XX.
001600*
001700 PROCEDURE DIVISION.
001800*------------------------- LIVELLO 0 -----------------------------
001900 MAIN.
002000     PERFORM INSERIMENTO-INDICE.
002100     PERFORM LAVORO UNTIL EOJ = 1.
002200     DISPLAY RECORD-ELEMENTI.
002300*
002400     STOP RUN.
002500*------------------------- LIVELLO 1 -----------------------------
002600 LAVORO.
002700     DISPLAY "INSERISCI I DATI DI UN ELEMENTO (UN SOLO CARATTERE)".
002800     ACCEPT ELEMENTO(INDICE).
002900*
003000     DISPLAY "VUOI CONTINUARE? SI O NO".
003100     ACCEPT RISPOSTA.
003200*
003300     IF RISPOSTA = "SI"
003400       THEN
003500           PERFORM INSERIMENTO-INDICE;
003600       ELSE
003700           MOVE 1 TO EOJ.
003800*------------------------- LIVELLO 2 -----------------------------
003900 INSERIMENTO-INDICE.
004000     DISPLAY "INSERISCI L'INDICE".
004100     ACCEPT INDICE.
004200*

685.7   ELM0700: inserimento dati in un vettore

Variabili

RECORD-ELEMENTI è una variabile che si scompone in un array;

ELEMENTO è l'array che costituisce RECORD-ELEMENTI;

INDICE è l'indice usato per scandire gli elementi;

EOJ quando assume il valore 1 il programma si arresta;

RISPOSTA è la variabile che riceve la risposta, un SI o un NO, per la continuazione o meno con un altro calcolo.

Descrizione

Il programma esegue semplicemente un inserimento di dati all'interno degli elementi dell'array, con un accesso libero (bisogna ricordare che l'indice del primo elemento è uno), specificando prima l'indice e poi il valore (il carattere) da attribuire all'elemento.

Se l'indice che si inserisce è zero, viene richiesto nuovamente di fornire un dato valido.

Paragrafo MAIN

Viene eseguito paragrafo INSERIMENTO-INDICE, che serve a ricevere il valore dell'indice di inserimento dall'utente, ripetendo l'operazione se il valore fornito è minore o uguale a zero.

Viene eseguito il paragrafo LAVORO ripetutamente, terminando il ciclo quando la variabile EOJ contiene il valore uno.

Viene visualizzato il valore di tutta la variabile RECORD-ELEMENTI, attraverso l'istruzione DISPLAY.

Il programma si arresta perché incontra l'istruzione STOP RUN.

Paragrafo LAVORO

Il programma riceve dall'esterno il valore per ELEMENTO(INDICE).

Il programma riceve dall'esterno l'assenso o il dissenso riguardo alla continuazione dell'esecuzione; se l'intenzione è di proseguire, dopo l'azzeramento della variabile INDICE viene eseguito il paragrafo INSERIMENTO-INDICE, ripetutamente, ponendo come condizione di conclusione il fatto che la variabile INDICE abbia un valore maggiore di zero. Se invece l'utente rinuncia a proseguire, viene messo il valore uno nella variabile EOJ.

Paragrafo INSERIMENTO-INDICE

Il programma riceve dall'esterno il valore per la variabile INDICE.

Una copia di questo file dovrebbe essere disponibile presso <allegati/a2/ELM0700.cob>.

000100 IDENTIFICATION DIVISION.
000200 PROGRAM-ID.   ELM0700.
000300 AUTHOR.       DANIELE GIACOMINI.
000400 DATE-WRITTEN. 1985-02-14.
000500*
000600 ENVIRONMENT DIVISION.
000700*
000800 DATA DIVISION.
000900*
001000 WORKING-STORAGE SECTION.
001100 01  RECORD-ELEMENTI.
001200     02  ELEMENTO  PIC X   OCCURS 9 TIMES.
001300 01  INDICE        PIC 9.
001400 01  EOJ           PIC 9   VALUE ZERO.
001500 01  RISPOSTA      PIC XX.
001600*
001700 PROCEDURE DIVISION.
001800*------------------------- LIVELLO 0 -----------------------------
001900 MAIN.
002000     PERFORM INSERIMENTO-INDICE UNTIL INDICE > ZERO.
002100     PERFORM LAVORO UNTIL EOJ = 1.
002200     DISPLAY RECORD-ELEMENTI.
002300*
002400     STOP RUN.
002500*------------------------- LIVELLO 1 -----------------------------
002600 LAVORO.
002700     DISPLAY "INSERISCI I DATI DI UN ELEMENTO (UN SOLO CARATTERE)".
002800     ACCEPT ELEMENTO(INDICE).
002900*
003000     DISPLAY "VUOI CONTINUARE? SI O NO".
003100     ACCEPT RISPOSTA.
003200*
003300     IF RISPOSTA = "SI"
003400       THEN
003500           MOVE ZERO TO INDICE,
003600           PERFORM INSERIMENTO-INDICE UNTIL INDICE > ZERO;
003700       ELSE
003800           MOVE 1 TO EOJ.
003900*------------------------- LIVELLO 2 -----------------------------
004000 INSERIMENTO-INDICE.
004100     DISPLAY "INSERISCI L'INDICE".
004200     ACCEPT INDICE.
004300*

685.8   ELM0800: inserimento dati in un vettore

Variabili

RECORD-ELEMENTI è una variabile che si scompone in un array;

ELEMENTO è l'array che costituisce RECORD-ELEMENTI;

INDICE è l'indice usato per scandire gli elementi;

EOJ quando assume il valore 1 il programma si arresta;

RISPOSTA è la variabile che riceve la risposta, un SI o un NO, per la continuazione o meno con un altro calcolo.

Descrizione

Il programma esegue semplicemente un inserimento di dati all'interno degli elementi dell'array, con un accesso libero (bisogna ricordare che l'indice del primo elemento è uno), specificando prima l'indice e poi il valore (il carattere) da attribuire all'elemento.

Se l'indice che si inserisce è zero, viene richiesto nuovamente di fornire un dato valido.

Paragrafo MAIN

Viene eseguito paragrafo INSERIMENTO-INDICE, che serve a ricevere il valore dell'indice di inserimento dall'utente.

Viene eseguito il paragrafo LAVORO ripetutamente, terminando il ciclo quando la variabile EOJ contiene il valore uno.

Viene visualizzato il valore di tutta la variabile RECORD-ELEMENTI, attraverso l'istruzione DISPLAY.

Il programma si arresta perché incontra l'istruzione STOP RUN.

Paragrafo LAVORO

Il programma riceve dall'esterno il valore per ELEMENTO(INDICE).

Il programma riceve dall'esterno l'assenso o il dissenso riguardo alla continuazione dell'esecuzione; se l'intenzione è di proseguire viene eseguito il paragrafo INSERIMENTO-INDICE, in caso contrario, viene messo il valore uno nella variabile EOJ.

Paragrafo INSERIMENTO-INDICE

Il programma riceve dall'esterno il valore per la variabile INDICE, quindi controlla che questo sia diverso da zero; in caso contrario, si ha una chiamata dello stesso paragrafo, in modo ricorsivo.

A causa della caratteristica ricorsiva del paragrafo INSERIMENTO-INDICE, nel programma originale era riportato in un commento: «attenzione! può essere nocivo».

Una copia di questo file dovrebbe essere disponibile presso <allegati/a2/ELM0800.cob>.

000100 IDENTIFICATION DIVISION.
000200 PROGRAM-ID.   ELM0800.
000300 AUTHOR.       DANIELE GIACOMINI.
000400 DATE-WRITTEN. 1985-02-14.
000500*
000600 ENVIRONMENT DIVISION.
000700*
000800 DATA DIVISION.
000900*
001000 WORKING-STORAGE SECTION.
001100 01  RECORD-ELEMENTI.
001200     02  ELEMENTO  PIC X   OCCURS 9 TIMES.
001300 01  INDICE        PIC 9.
001400 01  EOJ           PIC 9   VALUE ZERO.
001500 01  RISPOSTA      PIC XX.
001600*
001700 PROCEDURE DIVISION.
001800*------------------------- LIVELLO 0 -----------------------------
001900 MAIN.
002000     PERFORM INSERIMENTO-INDICE.
002100     PERFORM LAVORO UNTIL EOJ = 1.
002200     DISPLAY RECORD-ELEMENTI.
002300*
002400     STOP RUN.
002500*------------------------- LIVELLO 1 -----------------------------
002600 LAVORO.
002700     DISPLAY "INSERISCI I DATI DI UN ELEMENTO",
002800             " (UN SOLO CARATTERE)".
002900     ACCEPT ELEMENTO(INDICE).
003000*
003100     DISPLAY "VUOI CONTINUARE? SI O NO".
003200     ACCEPT RISPOSTA.
003300*
003400     IF RISPOSTA = "SI"
003500       THEN
003600           PERFORM INSERIMENTO-INDICE;
003700       ELSE
003800           MOVE 1 TO EOJ.
003900*------------------------- LIVELLO 2 -----------------------------
004000 INSERIMENTO-INDICE.
004100     DISPLAY "INSERISCI L'INDICE".
004200     ACCEPT INDICE.
004300     IF INDICE = 0
004400       THEN
004500           PERFORM INSERIMENTO-INDICE.
004600*

685.9   ELM0900: ricerca sequenziale all'interno di un vettore

Variabili

RECORD-ELEMENTI è una variabile usata per accogliere una stringa;

ELEMENTO è un array che scompone RECORD-ELEMENTI in caratteri singoli;

POSIZIONE è l'indice usato per scandire gli elementi della stringa;

EOJ quando assume il valore 1 il programma si arresta;

RISPOSTA è la variabile che riceve la risposta, un SI o un NO, per la continuazione o meno con un altro calcolo;

LETTERA è la variabile che contiene la lettera da cercare nella stringa.

Descrizione

Il programma riceve dall'esterno il contenuto di una stringa e di una lettera che dovrebbe essere contenuta nella stringa stessa; successivamente il programma scandisce la stringa come vettore di caratteri e individua la prima posizione in cui appare la lettera cercata.

Paragrafo MAIN

Viene eseguito paragrafo INSERIMENTO-DATI.

Viene eseguito il paragrafo LAVORO ripetutamente, terminando il ciclo quando la variabile EOJ contiene il valore uno.

Il programma si arresta perché incontra l'istruzione STOP RUN.

Paragrafo LAVORO

Il programma esegue il paragrafo RICERCA.

A questo punto la variabile POSIZIONE contiene la posizione della lettera contenuta nella variabile LETTERA e viene visualizzata.

Il programma riceve dall'esterno l'assenso o il dissenso riguardo alla continuazione dell'esecuzione; se l'intenzione è di proseguire, viene eseguito il paragrafo INSERIMENTO-DATI, in caso contrario, viene messo il valore uno nella variabile EOJ.

Paragrafo INSERIMENTO-DATI

Il programma riceve dall'esterno una stringa da inserire nella variabile RECORD-ELEMENTI e la lettera da ricercare nella stringa.

Paragrafo RICERCA

Viene eseguito un paragrafo che non esegue alcunché (l'istruzione EXIT) scandendo l'indice POSIZIONE a partire da uno, con passo unitario, terminando quando il contenuto di ELEMENTO(POSIZIONE) coincide con il valore di LETTERA, ovvero quando la posizione della lettera nella stringa è stata trovata.

In pratica, il paragrafo EXIT-PARAGRAPH è una scusa per utilizzare la scansione dell'istruzione PERFORM VARYING.

Paragrafo EXIT-PARAGRAPH

Il paragrafo non fa alcunché.

Una copia di questo file dovrebbe essere disponibile presso <allegati/a2/ELM0900.cob>.

000100 IDENTIFICATION DIVISION.
000200 PROGRAM-ID.   ELM0900.
000300 AUTHOR.       DANIELE GIACOMINI.
000400 DATE-WRITTEN. 1985-02-15.
000500*
000600 ENVIRONMENT DIVISION.
000700*
000800 DATA DIVISION.
000900*
001000 WORKING-STORAGE SECTION.
001100 01  RECORD-ELEMENTI.
001200     02  ELEMENTO  PIC X   OCCURS 60 TIMES.
001300 01  POSIZIONE     PIC 99.
001500 01  EOJ           PIC 9   VALUE ZERO.
001600 01  RISPOSTA      PIC XX.
001700 01  LETTERA       PIC X.
001800*
001900 PROCEDURE DIVISION.
002000*------------------------- LIVELLO 0 -----------------------------
002100 MAIN.
002200     PERFORM INSERIMENTO-DATI.
002300     PERFORM LAVORO UNTIL EOJ = 1.
002400*
002500     STOP RUN.
002600*------------------------- LIVELLO 1 -----------------------------
002700 LAVORO.
002800     PERFORM RICERCA.
002900     DISPLAY "LA LETTERA ", LETTERA,
003000             " E' NELLA POSIZIONE ", POSIZIONE.
003100*
003200     DISPLAY "VUOI CONTINUARE? SI O NO".
003300     ACCEPT RISPOSTA.
003400*
003500     IF RISPOSTA = "SI"
003600       THEN
003700           PERFORM INSERIMENTO-DATI;
003800       ELSE
003900           MOVE 1 TO EOJ.
004000*------------------------- LIVELLO 2 -----------------------------
004100 INSERIMENTO-DATI.
004200     DISPLAY "INSERISCI LA FRASE".
004300     ACCEPT RECORD-ELEMENTI.
004400*
004500     DISPLAY "INSERISCI LA LETTERA DA TROVARE".
004600     ACCEPT LETTERA.
004700*-----------------------------------------------------------------
004800 RICERCA.
004900     PERFORM EXIT-PARAGRAPH
005000             VARYING POSIZIONE FROM 1 BY 1
005100             UNTIL ELEMENTO(POSIZIONE) = LETTERA.
005200*------------------------- LIVELLO 3 -----------------------------
005300 EXIT-PARAGRAPH.
005400     EXIT.
005500*

685.10   ELM1000: ricerca sequenziale all'interno di un vettore

Variabili

RECORD-ELEMENTI è una variabile usata per accogliere una stringa;

ELEMENTO è un array che scompone RECORD-ELEMENTI in caratteri singoli;

POSIZIONE è l'indice usato per scandire gli elementi della stringa;

EOJ quando assume il valore 1 il programma si arresta;

RISPOSTA è la variabile che riceve la risposta, un SI o un NO, per la continuazione o meno con un altro calcolo;

LETTERA è la variabile che contiene la lettera da cercare nella stringa.

Descrizione

Il programma riceve dall'esterno il contenuto di una stringa e di una lettera che dovrebbe essere contenuta nella stringa stessa; successivamente il programma scandisce la stringa come vettore di caratteri e individua la prima posizione in cui appare la lettera cercata.

Rispetto a ELM0900 la scansione della stringa si arresta anche se non viene trovata alcuna corrispondenza.

Paragrafo MAIN

Viene eseguito paragrafo INSERIMENTO-DATI.

Viene eseguito il paragrafo LAVORO ripetutamente, terminando il ciclo quando la variabile EOJ contiene il valore uno.

Il programma si arresta perché incontra l'istruzione STOP RUN.

Paragrafo LAVORO

Il programma esegue il paragrafo RICERCA.

A questo punto la variabile POSIZIONE contiene la posizione della lettera contenuta nella variabile LETTERA e viene visualizzata.

Il programma riceve dall'esterno l'assenso o il dissenso riguardo alla continuazione dell'esecuzione; se l'intenzione è di proseguire, viene eseguito il paragrafo INSERIMENTO-DATI, in caso contrario, viene messo il valore uno nella variabile EOJ.

Paragrafo INSERIMENTO-DATI

Il programma riceve dall'esterno una stringa da inserire nella variabile RECORD-ELEMENTI e la lettera da ricercare nella stringa.

Paragrafo RICERCA

Viene eseguito un paragrafo che non esegue alcunché (l'istruzione EXIT) scandendo l'indice POSIZIONE a partire da uno, con passo unitario, terminando quando si supera la dimensione della stringa oppure quando il contenuto di ELEMENTO(POSIZIONE) coincide con il valore di LETTERA, ovvero quando la posizione della lettera nella stringa è stata trovata.

In pratica, il paragrafo EXIT-PARAGRAPH è una scusa per utilizzare la scansione dell'istruzione PERFORM VARYING.

Paragrafo EXIT-PARAGRAPH

Il paragrafo non fa alcunché.

Una copia di questo file dovrebbe essere disponibile presso <allegati/a2/ELM1000.cob>.

000100 IDENTIFICATION DIVISION.
000200 PROGRAM-ID.   ELM1000.
000300 AUTHOR.       DANIELE GIACOMINI.
000400 DATE-WRITTEN. 1985-02-15.
000500*
000600 ENVIRONMENT DIVISION.
000700*
000800 DATA DIVISION.
000900*
001000 WORKING-STORAGE SECTION.
001100 01  RECORD-ELEMENTI.
001200     02  ELEMENTO  PIC X   OCCURS 60 TIMES.
001300 01  POSIZIONE     PIC 99.
001400 01  EOJ           PIC 9   VALUE ZERO.
001500 01  RISPOSTA      PIC XX.
001600 01  LETTERA       PIC X.
001700*
001800 PROCEDURE DIVISION.
001900*------------------------- LIVELLO 0 -----------------------------
002000 MAIN.
002100     PERFORM INSERIMENTO-DATI.
002200     PERFORM LAVORO UNTIL EOJ = 1.
002300*
002400     STOP RUN.
002500*------------------------- LIVELLO 1 -----------------------------
002600 LAVORO.
002700     PERFORM RICERCA.
002800     DISPLAY "LA LETTERA ", LETTERA,
002900             " E' NELLA POSIZIONE ", POSIZIONE.
003000*
003100     DISPLAY "VUOI CONTINUARE? SI O NO".
003200     ACCEPT RISPOSTA.
003300*
003400     IF RISPOSTA = "SI"
003500       THEN
003600           PERFORM INSERIMENTO-DATI;
003700       ELSE
003800           MOVE 1 TO EOJ.
003900*------------------------- LIVELLO 2 -----------------------------
004000 INSERIMENTO-DATI.
004100     DISPLAY "INSERISCI LA FRASE".
004200     ACCEPT RECORD-ELEMENTI.
004300*
004400     DISPLAY "INSERISCI LA LETTERA DA TROVARE".
004500     ACCEPT LETTERA.
004600*-----------------------------------------------------------------
004700 RICERCA.
004800     PERFORM EXIT-PARAGRAPH
004900             VARYING POSIZIONE FROM 1 BY 1
005000             UNTIL POSIZIONE > 60
005100             OR    ELEMENTO(POSIZIONE) = LETTERA.
005200*------------------------- LIVELLO 3 -----------------------------
005300 EXIT-PARAGRAPH.
005400     EXIT.
005500*

685.11   ELM1100: ricerca sequenziale all'interno di un vettore

Variabili

RECORD-ELEMENTI è una variabile usata per accogliere una stringa;

ELEMENTO è un array che scompone RECORD-ELEMENTI in caratteri singoli;

POSIZIONE è l'indice usato per scandire gli elementi della stringa;

EOJ quando assume il valore 1 il programma si arresta;

RISPOSTA è la variabile che riceve la risposta, un SI o un NO, per la continuazione o meno con un altro calcolo;

LETTERA è la variabile che contiene la lettera da cercare nella stringa.

Descrizione

Il programma riceve dall'esterno il contenuto di una stringa e di una lettera che dovrebbe essere contenuta nella stringa stessa; successivamente il programma scandisce la stringa come vettore di caratteri e individua la prima posizione in cui appare la lettera cercata.

Rispetto a ELM1000 si ottiene un avvertimento quando si indica una lettera che non è contenuta nella frase.

Paragrafo MAIN

Viene eseguito paragrafo INSERIMENTO-DATI.

Viene eseguito il paragrafo LAVORO ripetutamente, terminando il ciclo quando la variabile EOJ contiene il valore uno.

Il programma si arresta perché incontra l'istruzione STOP RUN.

Paragrafo LAVORO

Il programma esegue il paragrafo RICERCA.

A questo punto la variabile POSIZIONE contiene la posizione della lettera contenuta nella variabile LETTERA: se il valore della posizione supera la dimensione massima dell'array, si ottiene un avvertimento dell'impossibilità di trovare la corrispondenza, altrimenti viene visualizzata la posizione trovata.

Il programma riceve dall'esterno l'assenso o il dissenso riguardo alla continuazione dell'esecuzione; se l'intenzione è di proseguire, viene eseguito il paragrafo INSERIMENTO-DATI, in caso contrario, viene messo il valore uno nella variabile EOJ.

Paragrafo INSERIMENTO-DATI

Il programma riceve dall'esterno una stringa da inserire nella variabile RECORD-ELEMENTI e la lettera da ricercare nella stringa.

Paragrafo RICERCA

Viene eseguito un paragrafo che non esegue alcunché (l'istruzione EXIT) scandendo l'indice POSIZIONE a partire da uno, con passo unitario, terminando quando si supera la dimensione della stringa oppure quando il contenuto di ELEMENTO(POSIZIONE) coincide con il valore di LETTERA, ovvero quando la posizione della lettera nella stringa è stata trovata.

In pratica, il paragrafo EXIT-PARAGRAPH è una scusa per utilizzare la scansione dell'istruzione PERFORM VARYING.

Paragrafo EXIT-PARAGRAPH

Il paragrafo non fa alcunché.

Una copia di questo file dovrebbe essere disponibile presso <allegati/a2/ELM1100.cob>.

000100 IDENTIFICATION DIVISION.
000200 PROGRAM-ID.   ELM1100.
000300 AUTHOR.       DANIELE GIACOMINI.
000400 DATE-WRITTEN. 1985-02-15.
000500*
000600 ENVIRONMENT DIVISION.
000700*
000800 DATA DIVISION.
000900*
001000 WORKING-STORAGE SECTION.
001100 01  RECORD-ELEMENTI.
001200     02  ELEMENTO  PIC X   OCCURS 60 TIMES.
001300 01  POSIZIONE     PIC 99.
001400 01  EOJ           PIC 9   VALUE ZERO.
001500 01  RISPOSTA      PIC XX.
001600 01  LETTERA       PIC X.
001700*
001800 PROCEDURE DIVISION.
001900*------------------------- LIVELLO 0 -----------------------------
002000 MAIN.
002100     PERFORM INSERIMENTO-DATI.
002200     PERFORM LAVORO UNTIL EOJ = 1.
002300*
002400     STOP RUN.
002500*------------------------- LIVELLO 1 -----------------------------
002600 LAVORO.
002700     PERFORM RICERCA.
002800*
002900     IF POSIZIONE < 61
003000       THEN
003100           DISPLAY "LA LETTERA ", LETTERA,
003200                   " E' NELLA POSIZIONE ", POSIZIONE;
003300       ELSE
003400           DISPLAY "LA LETTERA ", LETTERA,
003500                   " NON E' CONTENUTA NELLA FRASE".
003600*
003700     DISPLAY "VUOI CONTINUARE? SI O NO".
003800     ACCEPT RISPOSTA.
003900*
004000     IF RISPOSTA = "SI"
004100       THEN
004200           PERFORM INSERIMENTO-DATI;
004300       ELSE
004400           MOVE 1 TO EOJ.
004500*------------------------- LIVELLO 2 -----------------------------
004600 INSERIMENTO-DATI.
004700     DISPLAY "INSERISCI LA FRASE".
004800     ACCEPT RECORD-ELEMENTI.
004900*
005000     DISPLAY "INSERISCI LA LETTERA DA TROVARE".
005100     ACCEPT LETTERA.
005200*-----------------------------------------------------------------
005300 RICERCA.
005400     PERFORM EXIT-PARAGRAPH
005500             VARYING POSIZIONE FROM 1 BY 1
005600             UNTIL POSIZIONE > 60
005700             OR    ELEMENTO(POSIZIONE) = LETTERA.
005800*------------------------- LIVELLO 3 -----------------------------
005900 EXIT-PARAGRAPH.
006000     EXIT.
006100*

685.12   ELM1300: creazione di un file sequenziale

File

FILE-DA-SCRIVERE rappresenta il file che viene creato dal programma (il nome del file è output.seq). Il file è di tipo sequenziale, dove la riga ha una dimensione fissa; non si prevede l'inserimento di un codice di interruzione di riga alla fine delle righe.

Variabili

RECORD-DA-SCRIVERE è la riga del file da creare;

EOJ quando assume il valore 1 il programma si arresta.

Descrizione

Il programma riceve dall'esterno il contenuto di ogni riga e di volta in volta lo registra nel file. Il programma termina il lavoro quando la stringa inserita contiene solo asterischi (almeno 30, pari alla larghezza massima prevista di ogni riga).

Paragrafo MAIN

Viene aperto in scrittura il file da creare.

Viene eseguito il paragrafo INSERIMENTO-DATI.

Viene eseguito il paragrafo LAVORO ripetutamente, concludendo il ciclo quando la variabile EOJ contiene il valore uno.

Viene chiuso il file da creare.

Il programma si arresta perché incontra l'istruzione STOP RUN.

Paragrafo LAVORO

Si controlla se la stringa inserita contiene soltanto asterischi; se è così viene messo il valore uno nella variabile EOJ, altrimenti viene scritta la riga inserita nel file da scrivere e subito dopo viene eseguito nuovamente il paragrafo INSERIMENTO-DATI.

Paragrafo INSERIMENTO-DATI

Il paragrafo riceve dall'esterno il contenuto di una riga da registrare nel file, tenendo conto che vengono prese in considerazione al massimo i primi 30 caratteri, pari alla dimensione della variabile che deve accogliere i dati.

Una copia di questo file dovrebbe essere disponibile presso <allegati/a2/ELM1300.cob>.

000100 IDENTIFICATION DIVISION.
000200 PROGRAM-ID.   ELM1300.
000300 AUTHOR.       DANIELE GIACOMINI.
000400 DATE-WRITTEN. 1985-02-20.
000500*
000600 ENVIRONMENT DIVISION.
000700*
000800 INPUT-OUTPUT SECTION.
000900*
001000 FILE-CONTROL.
001100*
001200     SELECT FILE-DA-SCRIVERE ASSIGN TO "output.seq"
001300                             ORGANIZATION IS SEQUENTIAL.
001400*
001500 DATA DIVISION.
001600*
001700 FILE SECTION.
001800*
001900 FD  FILE-DA-SCRIVERE
002000     LABEL RECORD IS STANDARD.
002100*
002200 01  RECORD-DA-SCRIVERE PIC X(30).
002300*
002400 WORKING-STORAGE SECTION.
002500 01  EOJ                PIC 9   VALUE ZERO.
002600*
002700 PROCEDURE DIVISION.
002800*------------------------- LIVELLO 0 -----------------------------
002900 MAIN.
003000     OPEN OUTPUT FILE-DA-SCRIVERE.
003100     PERFORM INSERIMENTO-DATI.
003200     PERFORM LAVORO UNTIL EOJ = 1.
003300     CLOSE FILE-DA-SCRIVERE.
003400*
003500     STOP RUN.
003600*------------------------- LIVELLO 1 -----------------------------
003700 LAVORO.
003800     IF RECORD-DA-SCRIVERE = ALL "*"
003900       THEN
004000           MOVE 1 TO EOJ;
004100       ELSE
004200           WRITE RECORD-DA-SCRIVERE,
004300           PERFORM INSERIMENTO-DATI.
004400*------------------------- LIVELLO 2 -----------------------------
004500 INSERIMENTO-DATI.
004600     DISPLAY "INSERISCI IL RECORD".
004700     DISPLAY "PER FINIRE INSERISCI TUTTI ASTERISCHI".
004800     ACCEPT RECORD-DA-SCRIVERE.
004900*

Per fare in modo che le righe del file siano concluse come avviene di solito nei file di testo, con un codice di interruzione di riga, occorre specificare nell'istruzione SELECT un accesso di tipo LINE SEQUENTIAL.

685.13   ELM1400: estensione di un file sequenziale

File

FILE-DA-SCRIVERE rappresenta il file che viene esteso dal programma (il nome del file è output.seq). Il file è di tipo sequenziale, dove la riga ha una dimensione fissa; non si prevede l'inserimento di un codice di interruzione di riga alla fine delle righe.

Variabili

RECORD-DA-SCRIVERE è la riga del file da creare;

EOJ quando assume il valore 1 il programma si arresta.

Descrizione

Il programma riceve dall'esterno il contenuto di ogni riga e di volta in volta lo registra nel file. Il programma termina il lavoro quando la stringa inserita contiene solo asterischi (almeno 30, pari alla larghezza massima prevista di ogni riga).

Paragrafo MAIN

Viene aperto in scrittura in aggiunta il file da creare.

Viene eseguito il paragrafo INSERIMENTO-DATI.

Viene eseguito il paragrafo LAVORO ripetutamente, concludendo il ciclo quando la variabile EOJ contiene il valore uno.

Viene chiuso il file da creare.

Il programma si arresta perché incontra l'istruzione STOP RUN.

Paragrafo LAVORO

Si controlla se la stringa inserita contiene soltanto asterischi; se è così viene messo il valore uno nella variabile EOJ, altrimenti viene scritta la riga inserita nel file da scrivere e subito dopo viene eseguito nuovamente il paragrafo INSERIMENTO-DATI.

Paragrafo INSERIMENTO-DATI

Il paragrafo riceve dall'esterno il contenuto di una riga da registrare nel file, tenendo conto che vengono prese in considerazione al massimo i primi 30 caratteri, pari alla dimensione della variabile che deve accogliere i dati.

Una copia di questo file dovrebbe essere disponibile presso <allegati/a2/ELM1400.cob>.

000100 IDENTIFICATION DIVISION.
000200 PROGRAM-ID.   ELM1400.
000300 AUTHOR.       DANIELE GIACOMINI.
000400 DATE-WRITTEN. 1985-02-20.
000500*
000600 ENVIRONMENT DIVISION.
000700*
000800 INPUT-OUTPUT SECTION.
000900*
001000 FILE-CONTROL.
001100*
001200     SELECT FILE-DA-SCRIVERE ASSIGN TO "output.seq"
001300                             ORGANIZATION IS SEQUENTIAL.
001400*
001500 DATA DIVISION.
001600*
001700 FILE SECTION.
001800*
001900 FD  FILE-DA-SCRIVERE
002000     LABEL RECORD IS STANDARD.
002100*
002200 01  RECORD-DA-SCRIVERE PIC X(30).
002300*
002400 WORKING-STORAGE SECTION.
002500 01  EOJ                PIC 9   VALUE ZERO.
002600*
002700 PROCEDURE DIVISION.
002800*------------------------- LIVELLO 0 -----------------------------
002900 MAIN.
003000     OPEN EXTEND FILE-DA-SCRIVERE.
003100     PERFORM INSERIMENTO-DATI.
003200     PERFORM LAVORO UNTIL EOJ = 1.
003300     CLOSE FILE-DA-SCRIVERE.
003400*
003500     STOP RUN.
003600*------------------------- LIVELLO 1 -----------------------------
003700 LAVORO.
003800     IF RECORD-DA-SCRIVERE = ALL "*"
003900       THEN
004000           MOVE 1 TO EOJ;
004100       ELSE
004200           WRITE RECORD-DA-SCRIVERE,
004300           PERFORM INSERIMENTO-DATI.
004400*------------------------- LIVELLO 2 -----------------------------
004500 INSERIMENTO-DATI.
004600     DISPLAY "INSERISCI LA RIGA".
004700     DISPLAY "PER FINIRE INSERISCI TUTTI ASTERISCHI".
004800     ACCEPT RECORD-DA-SCRIVERE.
004900*

Per fare in modo che le righe del file siano concluse come avviene di solito nei file di testo, con un codice di interruzione di riga, occorre specificare nell'istruzione SELECT un accesso di tipo LINE SEQUENTIAL.

685.14   ELM1500: lettura di un file sequenziale

File

FILE-DA-LEGGERE rappresenta il file che viene letto dal programma (il nome del file è input.seq). Il file è di tipo sequenziale, dove ogni riga ha una dimensione fissa e non si fa affidamento sulla presenza di un codice di interruzione di riga.

Variabili

RECORD-DA-LEGGERE è la riga del file da leggere;

EOF quando assume il valore 1 indica che la lettura ha superato la fine del file.

Descrizione

Il programma visualizza il contenuto di un file.

La lettura avviene a blocchi di 30 caratteri, indipendentemente dal fatto che siano presenti dei codici di interruzione di riga. Diversamente, per fare in modo che la lettura sia al massimo di 30 caratteri, ma rispettando anche i codici di interruzione di riga, occorre specificare nell'istruzione SELECT un accesso di tipo LINE SEQUENTIAL.

Paragrafo MAIN

Viene aperto in lettura il file da leggere.

Viene eseguita la lettura di un primo blocco, pari alla dimensione della variabile RECORD-DA-LEGGERE; se si verifica la condizione AT END, ovvero se il file è vuoto, viene messo il valore uno nella variabile EOF.

Viene eseguito il paragrafo LETTURA, ripetutamente, utilizzando come condizione di arresto il fatto che la variabile EOF contenga il valore uno.

Viene chiuso il file da leggere.

Il programma si arresta perché incontra l'istruzione STOP RUN.

Paragrafo LETTURA

Viene visualizzata la porzione di file appena letta.

Viene eseguita la lettura del file da leggere; se si verifica la condizione AT END, ovvero se la lettura non ha acquisito alcunché, viene messo il valore uno nella variabile EOF.

Una copia di questo file dovrebbe essere disponibile presso <allegati/a2/ELM1500.cob>.

000100 IDENTIFICATION DIVISION.
000200 PROGRAM-ID.   ELM1500.
000300 AUTHOR.       DANIELE GIACOMINI.
000400 DATE-WRITTEN. 1985-02-20.
000500*
000600 ENVIRONMENT DIVISION.
000700*
000800 INPUT-OUTPUT SECTION.
000900*
001000 FILE-CONTROL.
001100*
001200     SELECT FILE-DA-LEGGERE ASSIGN TO "input.seq"
001300                            ORGANIZATION IS SEQUENTIAL.
001400*
001500 DATA DIVISION.
001600*
001700 FILE SECTION.
001800*
001900 FD  FILE-DA-LEGGERE
002000     LABEL RECORD IS STANDARD.
002100*
002200 01  RECORD-DA-LEGGERE PIC X(30).
002300*
002400 WORKING-STORAGE SECTION.
002500 01  EOF               PIC 9   VALUE ZERO.
002600*
002700 PROCEDURE DIVISION.
002800*------------------------- LIVELLO 0 -----------------------------
002900 MAIN.
003000     OPEN INPUT FILE-DA-LEGGERE.
003100     READ FILE-DA-LEGGERE
003200          AT END
003300                MOVE 1 TO EOF.
003400     PERFORM LETTURA UNTIL EOF = 1.
003500     CLOSE FILE-DA-LEGGERE.
003600*
003700     STOP RUN.
003800*------------------------- LIVELLO 1 -----------------------------
003900 LETTURA.
004000     DISPLAY RECORD-DA-LEGGERE.
004100     READ FILE-DA-LEGGERE
004200          AT END
004300                MOVE 1 TO EOF.
004400*

Figura 685.15. Foto ricordo della festa conclusiva di un corso sul linguaggio COBOL realizzato con l'elaboratore Burroughs B91, presumibilmente tra il 1982 e il 1983. Nell'immagine, l'ingegnere che ha tenuto il corso compila un diploma preparato per scherzo dagli studenti che lo hanno frequentato.

Burroughs B91 festeggiato


Appunti di informatica libera 2008 --- Copyright © 2000-2008 Daniele Giacomini -- <appunti2 (ad) gmail·com>


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome cobol_esempi_elementari.htm

[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico] [home]

Valid ISO-HTML!

CSS validator!

Gjlg Metamotore e Web Directory