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

952 volume V Programmazione adiacenti che iniziano a partire dalla prima apparizione della lettera «I»; le lettere «B» adiacenti e iniziali, che si trovano prima di quella stessa lettera «I». Compilando l’esempio e avviando il programma eseguibile che si ottiene, si dovrebbe vedere il risultato seguente: |CONTATORI: 05 04 00 Il secondo schema sintattico mostra l’uso di ‘INSPECT’ per rimpiazzare delle sottostringhe. L’interpretazione dello schema è simile a quella del conteggio, con la differenza che si aggiunge la parola chiave ‘BY’, che ha alla sinistra la sottostringa da rimpiazzare e alla destra il suo nuovo valore. Quando si usa la parola ‘CHARACTERS’, si intende rimpiazzare tutta la stringa (o tutta la porzione prima o dopo un certo riferimento), con qualcosa con un carattere; le parole ‘ALL’ e ‘LEADING’ funzionano sostanzialmente come nel conteggio, riferendosi a tutte le sottostringhe di un certo tipo o a tutte le sottostringhe iniziali e adiacenti, dello stesso tipo. In questo schema, si aggiunge la parola ‘FIRST’, che identifica solo una prima corrispondenza, non ripetuta. |Listato 82.186. Programma che scandisce una stringa e sostituisce alcuni suoi contenuti. Il programma sfrutta un’estensione al linguaggio standard, che permette di eseguire più sostituzioni in una sola istruzione ‘INSPECT’. |000100 IDENTIFICATION DIVISION. |000200 PROGRAM-ID. TEST-INSPECT-REPLACING. |000300 AUTHOR. DANIELE GIACOMINI. |000400 INSTALLATION. NANOLINUX IV, |000500 OPENCOBOL 0.31, |000600 DATE-WRITTEN. 2005-03-15. |000700* |000800 ENVIRONMENT DIVISION. |000900* |001000 DATA DIVISION. |001100* |001200 WORKING-STORAGE SECTION. |001300 77 STRINGA-DI-CARATTERI PIC X(30). |001400* |001500 PROCEDURE DIVISION. |001600*------------------------- LIVELLO 0 ----------------------------- |001700 MAIN. |001800 MOVE "AAAAAABBBBBBCCCCCCDDDDDDEEEEEE" |001900 TO STRINGA-DI-CARATTERI. |002000 INSPECT STRINGA-DI-CARATTERI REPLACING

Manuale COBOL 953 |002100 CHARACTERS BY "X" AFTER INITIAL "DDD", |002200 LEADING "BB" BY "YZ" AFTER INITIAL "AAAAAA", |002300 FIRST "C" BY "W", |002400 ALL "C" BY "P". |002500 DISPLAY STRINGA-DI-CARATTERI. |002600 STOP RUN. L’esempio appena mostrato sfrutta un’estensione al linguaggio tradizionale, in modo da ottenere più sostituzioni con una sola passata. L’esempio fatto in questo modo permette di capire cosa succede in queste situazioni particolari. Compilando l’esempio e avviando il programma eseguibile che si ottiene, si dovrebbe vedere il risultato seguente che rappresenta soltanto il contenuto finale della variabile elaborata: |AAAAAAYZYZYZWPPPPPDDDXXXXXXXXX 82.12.12 Istruzione «MOVE» L’istruzione ‘MOVE’ copia o assegna un valore in una o più variabili di destinazione. Sono disponibili due modi di usare questa istruzione: « Oppure: Nel primo caso, ciò che appare dopo la parola chiave ‘MOVE’ può essere il nome di una variabile, oppure una costante. Il valore contenuto nella variabile o rappresentato dalla costante, viene copiato in tutte le variabili indicate dopo la parola ‘TO’, rispettando eventualmente le regole di modifica stabilite dai modelli di definizione delle variabili. Nel secondo caso, avendo aggiunto la parola ‘CORRESPONDING’ (o soltanto ‘CORR’), si copia il contenuto di una variabile strutturata in una o più variabili strutturate, abbinando però i campi aventi lo stesso nome. In pratica, con il secondo schema si vogliono copiare i campi della prima variabile strutturata che hanno gli stessi nomi di quelli contenuti nella seconda variabile strutturata. Diversamente, per una copia di una variabile strutturata in altre variabili, mantenendo inalterata la struttura originale dei dati, si usa il primo schema sintattico.

952 volume V Programmazione<br />

adiacenti che iniziano a partire dalla prima apparizione della lettera «I»; le lettere «B» adiacenti<br />

e iniziali, che si trovano prima di quella stessa lettera «I».<br />

Compilando l’esempio e avviando il programma eseguibile che si ottiene, si dovrebbe vedere<br />

il risultato seguente:<br />

|CONTATORI: 05 04 00<br />

Il secondo schema sintattico mostra l’uso di ‘INSPECT’ per rimpiazzare delle sottostringhe.<br />

L’interpretazione dello schema è simile a quella del conteggio, con la differenza che si aggiunge<br />

la parola chiave ‘BY’, che ha alla sinistra la sottostringa da rimpiazzare e alla destra il suo<br />

nuovo valore. Quando si usa la parola ‘CHARACTERS’, si intende rimpiazzare tutta la stringa<br />

(o tutta la porzione prima o dopo un certo riferimento), con qualcosa con un carattere; le parole<br />

‘ALL’ e ‘LEADING’ funzionano sostanzialmente come nel conteggio, riferendosi a tutte le<br />

sottostringhe di un certo tipo o a tutte le sottostringhe iniziali e adiacenti, dello stesso tipo. In<br />

questo schema, si aggiunge la parola ‘FIRST’, che identifica solo una prima corrispondenza,<br />

non ripetuta.<br />

|Listato 82.186. Programma che scandisce una stringa e sostituisce alcuni suoi contenuti.<br />

Il programma sfrutta un’estensione al linguaggio standard, che permette di eseguire più<br />

sostituzioni in una sola istruzione ‘INSPECT’.<br />

|000100 IDENTIFICATION DIVISION.<br />

|000200 PROGRAM-ID. TEST-INSPECT-REPLACING.<br />

|000300 AUTHOR. DANIELE GIACOMINI.<br />

|000400 INSTALLATION. NANOLINUX IV,<br />

|000500 OPENCOBOL 0.31,<br />

|000600 DATE-WRITTEN. 2005-03-15.<br />

|000700*<br />

|000800 ENVIRONMENT DIVISION.<br />

|000900*<br />

|001000 DATA DIVISION.<br />

|001100*<br />

|001200 WORKING-STORAGE SECTION.<br />

|001300 77 STRINGA-DI-CARATTERI PIC X(30).<br />

|001400*<br />

|001500 PROCEDURE DIVISION.<br />

|001600*------------------------- LIVELLO 0 -----------------------------<br />

|001700 MAIN.<br />

|001800 MOVE "AAAAAABBBBBBCCCCCCDDDDDDEEEEEE"<br />

|001900 TO STRINGA-DI-CARATTERI.<br />

|002000 INSPECT STRINGA-DI-CARATTERI REPLACING

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

Saved successfully!

Ooh no, something went wrong!