Parte ii - IIS Marconi Latina - Area didattica

Parte ii - IIS Marconi Latina - Area didattica Parte ii - IIS Marconi Latina - Area didattica

iismarconi.net
from iismarconi.net More from this publisher
24.01.2014 Views

910 volume V Programmazione |005300 MOVE 1 TO EOJ. |005400*----------------------------------------------------------------- |005500 SCANSIONE. |005600 DISPLAY COGNOME (IND-UTENTE), " ", |005700 NOME (IND-UTENTE), " ", |005800 NOTA (IND-UTENTE). |005900* 82.7.5 Tabelle ordinate « Se si devono utilizzare i dati in una tabella per eseguire una ricerca al suo interno (utilizzando l’istruzione ‘SEARCH’ nella divisione ‘PROCEDURE DIVISION’), se si può essere certi che le informazioni contenute siano ordinate secondo una certa chiave, lo si può specificare nella dichiarazione: La metavariabile data-name-4 dello schema sintattico rappresenta una variabile contenuta nell’elemento ricorrente; attraverso la parola chiave ‘ASCENDING’ si intende dichiarare che la tabella è ordinata, lessicograficamente, in modo ascendente, secondo il contenuto di quella variabile, se invece si usa la parola chiave ‘DESCENDING’, si intende un ordinamento decrescente. È possibile specificare più chiavi di ordinamento successive, nel caso si vogliano abbinare chiavi secondarie di ordinamento. Sia chiaro che la tabella deve già risultare ordinata secondo le chiavi specificate, altrimenti le istruzioni ‘SEARCH’ della divisione ‘PROCEDURE DIVISION’ danno risultati errati o falliscono semplicemente. Naturalmente, all’interno del programma è possibile prevedere un procedimento di riordino, da eseguire prima di utilizzare delle istruzioni ‘SEARCH’. L’esempio seguente mostra l’indicazione della chiave di ordinamento, costituita precisamente dalla variabile ‘COGNOME’, che deve risultare ascendente in fase di ricerca: |001000 WORKING-STORAGE SECTION. |001100 01 RECORD-UTENTI. |001200 02 UTENTE OCCURS 1 TO 60 TIMES |001300 DEPENDING ON UTENTI-MAX |001350 ASCENDING KEY IS COGNOME |001400 INDEXED BY IND-UTENTE.

Manuale COBOL 911 |001500 03 COGNOME PIC X(30). |001600 03 NOME PIC X(30). |001700 03 NOTA PIC X(200). |001800 77 UTENTI-MAX USAGE IS INDEX. 82.7.6 Scansione delle tabelle Il linguaggio COBOL prevede un’istruzione apposita per facilitare la scansione delle tabelle. Si tratta di ‘SEARCH’, che ha due modalità di funzionamento, a seconda che si voglia eseguire una ricerca sequenziale o una ricerca binaria. Naturalmente, la ricerca sequenziale si presta alla scansione di una tabella i cui dati non sono ordinati, mentre nel secondo caso devono esserlo. « Viene mostrato l’esempio di un programma completo che inizia con l’inserimento di dati all’interno di una tabella, quindi esegue una ricerca sequenziale al suo interno: |000100 IDENTIFICATION DIVISION. |000200 PROGRAM-ID. TEST-SEARCH. |000300 AUTHOR. DANIELE GIACOMINI. |000400 INSTALLATION. NANOLINUX IV, |000500 OPENCOBOL 0.31, |000600 DATE-WRITTEN. 2005-03-12. |000700* |000800 ENVIRONMENT DIVISION. |000900* |001000 DATA DIVISION. |001100* |001200 WORKING-STORAGE SECTION. |001300 01 RECORD-UTENTI. |001400 02 UTENTE OCCURS 60 TIMES |001500 INDEXED BY IND-UTENTE. |001600 03 COGNOME PIC X(30). |001700 03 NOME PIC X(30). |001800 03 NOTA PIC X(200). |001900 77 EOJ PIC 9 VALUE ZERO. |002000 77 RISPOSTA PIC XX. |002100 77 RICERCA PIC X(30). |002200* |002300 PROCEDURE DIVISION. |002400*------------------------- LIVELLO 0 ----------------------------- |002500 MAIN. |002600 PERFORM INSERIMENTO-DATI |002700 VARYING IND-UTENTE FROM 1 BY 1 |002800 UNTIL EOJ = 1. |002900 MOVE 0 TO EOJ. |003000 PERFORM SCANSIONE UNTIL EOJ = 1. |003100* |003200 STOP RUN. |003300*------------------------- LIVELLO 1 ----------------------------- |003400 INSERIMENTO-DATI. |003500 DISPLAY IND-UTENTE, " INSERISCI IL COGNOME: ".

910 volume V Programmazione<br />

|005300 MOVE 1 TO EOJ.<br />

|005400*-----------------------------------------------------------------<br />

|005500 SCANSIONE.<br />

|005600 DISPLAY COGNOME (IND-UTENTE), " ",<br />

|005700 NOME (IND-UTENTE), " ",<br />

|005800 NOTA (IND-UTENTE).<br />

|005900*<br />

82.7.5 Tabelle ordinate<br />

«<br />

Se si devono utilizzare i dati in una tabella per eseguire una ricerca al suo interno (utilizzando<br />

l’istruzione ‘SEARCH’ nella divisione ‘PROCEDURE DIVISION’), se si può essere certi che le<br />

informazioni contenute siano ordinate secondo una certa chiave, lo si può specificare nella<br />

dichiarazione:<br />

La metavariabile data-name-4 dello schema sintattico rappresenta una variabile contenuta<br />

nell’elemento ricorrente; attraverso la parola chiave ‘ASCENDING’ si intende dichiarare<br />

che la tabella è ordinata, lessicograficamente, in modo ascendente, secondo il contenuto di<br />

quella variabile, se invece si usa la parola chiave ‘DESCENDING’, si intende un ordinamento<br />

decrescente.<br />

È possibile specificare più chiavi di ordinamento successive, nel caso si vogliano abbinare<br />

chiavi secondarie di ordinamento.<br />

Sia chiaro che la tabella deve già risultare ordinata secondo le chiavi specificate, altrimenti<br />

le istruzioni ‘SEARCH’ della divisione ‘PROCEDURE DIVISION’ danno risultati errati o falliscono<br />

semplicemente. Naturalmente, all’interno del programma è possibile prevedere un<br />

procedimento di riordino, da eseguire prima di utilizzare delle istruzioni ‘SEARCH’.<br />

L’esempio seguente mostra l’indicazione della chiave di ordinamento, costituita precisamente<br />

dalla variabile ‘COGNOME’, che deve risultare ascendente in fase di ricerca:<br />

|001000 WORKING-STORAGE SECTION.<br />

|001100 01 RECORD-UTENTI.<br />

|001200 02 UTENTE OCCURS 1 TO 60 TIMES<br />

|001300 DEPENDING ON UTENTI-MAX<br />

|001350 ASCENDING KEY IS COGNOME<br />

|001400 INDEXED BY IND-UTENTE.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!