Le Aree di Lavoro
Le Aree di Lavoro sono quei campi, semplici o composti, che utilizzeremo all'interno del nostro programma e vanno definite e descritte nella WORKING-STORAGE SECTION. I campi sono descritti utilizzando i numeri di livello gerarchico e le PICTURE (PIC) per rappresentare le caratteristiche dei contenuti dei campi. Le PICTURE possono essere di tipo:
|
|
PIC A - indica un campo alfabetico |
|
PIC X - indica un campo alfanumerico | |
PIC 9 - indica un campo numerico |
|
nella figura a fianco possiamo notare che compaiono anche altri tipi di descrizioni dei campi, vediamoli nell'ordine: | ![]() |
01 CAMPO-SEGNATO PIC S9(10). | La lettera S anteposta alla cifra 9 sta ad indicare che questo è un SIGNED NUMERIC FIELD, cioè un campo numerico segnato, e può contenere un valore negativo; se ad esempio valorizzassimo un campo (PIC 99) con la cifra -10, il campo in questione perderebbe il segno negativo e contenerebbe il valore 10, sballando in modo catastrofico i nostri calcoli. |
01 CAMPO-DECIMALE PIC 9(10)V99. | La posizione della virgola decimale è segnalata dalla lettera V, il campo è numerico a dieci posizioni più due decimali. |
01 CAMPO-DECIM-SEGN PIC S9(10)V99. | Questa descrizione è la combinazione delle due precedenti, ovvero un campo numerico segnato a dieci posizioni più due decimali. |
01 CAMPO-EDITATO-1 PIC 9.999.999.999,99. | Se il valore contenuto nel campo precedente fosse ad esempio "123456,78", la stampa o la visualizzazione del campo ci apparirebbe così: "000012345678". La descrizione a lato ci consente invece di visualizzarne il contenuto in una forma più leggibile ed immediata: "0.000.123.456,78". Sui campi editati non si possono fare operazioni, quindi queste andranno fatte sui campi numerici e poi con una MOVE andrà copiato il risultato da visualizzare nel campo editato. |
01 CAMPO-EDITATO-2 PIC -.---.---.--9,99. | Tutti quegli zeri iniziali sono però fastidiosi, questa descrizione ci visualizzerà il valore del campo in questo modo: "123456,78" e nel caso il valore del campo sia negativo la visualizzazione sarà: "-123456,78". |
01 CAMPO-EDITATO-3 PIC +.+++.+++.++9,99. | Con questa descrizione otterremo una visualizzazione di questo tipo: "+123456,78" o "-123456,78" rispettivamente se di segno positivo o di segno negativo; otteniamo quindi sempre l'evidenza del segno. |
01 CAMPO-DATA PIC 99/99/9999 BLANK WHEN ZERO. | La particolarità di questa figura è di consentirci una rapida valorizzazione del campo data in una rappresentazione di comoda lettura. Basterà infatti copiare nel campo la data (ad esempio "01012003") per averla bell'e pronta nel formato "01/01/2003". La clausola BLANK WHEN ZERO serve a riempire il campo di spazi vuoti qualora questo contenga il valore zero. |
01 CAMPO-UNICO PIC X(30). | La clausola REDEFINES serve a ridefinire un determinato campo, possiamo cioè, dopo aver descritto il campo, darne un ulteriore descrizione suddividendolo in sottocampi; potremo quindi, nel nostro esempio, alterare a seconda dell'esigenza il contenuto di uno o l'altro sottocampo aggiornando allo stesso tempo il contenuto del campo origine. La clausola REDEFINES può essere usata anche per ridefinire un campo composto come campo semplice e può essere nidificata. |
01 CAMPO-NOME REDEFINES CAMPO-UNICO. | |
02 COGNOME PIC X(15). | |
02 NOME PIC X(15). | |
02 NOMI REDEFINES NOME. | |
03 PRIMO-NOME PIC X(7). | |
03 FILLER PIC X. | |
03 SECONDO-NOME PIC X(07). | |
03 FILLER PIC X. | La clausola FILLER sta ad indicare che i caratteri contenuti occupano una posizione nella descrizione dei campi ma che non verranno trattati nel corso dell'elaborazione. |
01 CAMPO-DATA-1 PIC 9(8). | Questo esempio della clausola REDEFINES potremmo usarlo se dovessimo determinare la ricorrenza di una determinata data in un archivio incrementando a passi di un giorno la data di ricerca. Dopo aver inserito la data iniziale di ricerca in CAMPO-DATA-1, sarebbe sufficiente incrementare di un'unità il campo GIORNO (tenendo conto di quanti giorni ci sono in un mese e quanti mesi ci sono in un anno, è inutile andare a cercare il 38/13/2003) al raggiungimento della fine dell'archivio per poi ripartire, creando un ciclo che terminerà con il conseguimento dei risultati attesi o il raggiungimento della data di ricerca finale. Il termine di confronto sarebbe CAMPO-DATA-1. |
01 CAMPO-DATA-2 REDEFINES CAMPO-DATA-1. | |
02 ANNO PIC 9999. | |
02 MESE PIC 99. | |
02 GIORNO PIC 99. | |
01 CAMPO-PACKED PIC 9(10) COMPUTATIONAL-3. |
Normalmente ogni carattere numerico impegna un byte che è composto da 8 bit, il COMPUTATIONAL-3 (COMP-3) è un formato chiamato comunemente binario che consente di memorizzare dati numerici utilizzando soli 4 bit per ogni cifra, quindi due caratteri numerici/byte e conseguentemente dimezza il consumo di memoria. Su questi campi è possibile eseguire tutte le operazioni, ma non visualizzarli in modo corretto. |
|
|
|