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: area-lav1
   

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.

 

Top


 

 

<p><a href="http://nicolamaggi.it">http://nicolamaggi.it</a> <a href="http://nicolamaggi.it/index.htm">http://nicolamaggi.it/index.htm</a> <a href="http://nicolamaggi.it/cobol.htm">http://nicolamaggi.it/cobol.htm</a> <a href="http://nicolamaggi.it/consigli.htm">http://nicolamaggi.it/consigli.htm</a> <a href="http://nicolamaggi.it/links.htm">http://nicolamaggi.it/links.htm</a> <a href="http://nicolamaggi.it/musica.htm">http://nicolamaggi.it/musica.htm</a></p>