Passa al contenuto principale

Esempi di riconfigurazioni di dati

I seguenti sono esempi di tipi di regole di sostituzione per applicazioni specificamente richieste.

Inserimento di letterali​

Per inserire un letterale, separare i termini del lato sinistro per la sua inserzione a destra.

         a(A:10),b(A:70)->(a),(E'LIT':3),(b)

Gli 80 caratteri ASCII vengono emessi nell'area di output con il letterale EBCDIC LIT inserito dopo i primi 10 caratteri ASCII.

Cancellazione​

I termini a sinistra sono separati in modo che il lato destro possa omettere i termini indesiderati.

         (B:7),a(A:10)->(Ev(a):L(a))

Nell'area di output vengono emessi solo i 10 caratteri ASCII (come EBCDIC), le 7 cifre binarie vengono scartate.

Spaziatura nel buffer di output​

Dove esiste un buffer di output preformattato (tipicamente un buffer di visualizzazione), la spaziatura può essere realizzata omettendo le funzioni di replica e di valore da un termine a destra.

         a(A:74)->(E:6),(Ev(a):74)

La (E:6) fa sì che 48 posizioni di bit vengano saltate nell'area di output, poi i 74 caratteri ASCII vengono convertiti in EBCDIC ed emessi nella posizione corrente di output.

Lunghezze arbitrarie​

Alcuni dispositivi/programmi generano un numero variabile di caratteri per riga ed è desiderabile produrre da essi record di lunghezza fissa.

         a(A:#) -> (Ev(a):74)

I caratteri ASCII vengono troncati o riempiti secondo necessità e convertiti in EBCDIC in un campo di 74 caratteri.

Trasposizione​

I campi da trasporre dovrebbero essere isolati come termini a sinistra.

         a(X:2),b(A:#)->(Ev(b):L(b)),(a)

Calcolo della lunghezza della stringa​

Alcuni formati richiedono la lunghezza della stringa come parte del flusso di dati. Ciò può essere ottenuto con la funzione di lunghezza.

         a(E:10),b(X'FF':2)->(BL(a)+L(b)+8:8),(Av(a):L(a)),(b)

Il termine di lunghezza viene emesso per primo, in un campo di 8 bit. In questo caso la lunghezza comprende sia il campo di lunghezza sia il campo di caratteri ASCII.

Espansione e compressione dei simboli ripetuti​

La regola seguente compatta i simboli ripetuti.

         a(E:1), b(E#*v(a):L(b)) -> (BL(b)+1:8),(a)

Data la stringa di input riportata sotto, tre applicazioni successive della regola emetteranno la stringa di output mostrata.

         Input: XXXXYYZZZZZZZ
         Output: 4X2Y7Z