venerdì 7 novembre 2014

Fusione e Bilanciamento

Siano date due strutture dati, S1 e S2, ordinate entrambe secondo la stessa chiave e nello stesso senso. Un algoritmo che date in input S1 e S2, produce in output una terza struttura S3 derivante dalla unione delle due in input è detto di Fusione.
Facendo una analogia con la teoria degli insiemi, S3 può essere visto come l'insieme Unione di S1 e S2.

Ad esempio, siano:

  • S1 = {1,3,4,5,7,9}
  • S2 = {2,4,6,7,8,10}

Tramite un algoritmo di fusione possiamo ottenere:

  • S3 = {1,2,3,4,4,5,6,7,7,8,9,10}


A differenza della Fusione, il Bilanciamento, pur essendo del tutto simile, produce in genere una struttura identica ad una delle strutture in input, detta Guida, ma arricchita delle informazioni dell'altra struttura sugli elementi che si "bilanciano". 
Siano ad esempio, S1 una struttura contenente una lista ordinata di Userid e S2 una struttura contenente una anagrafica completa per Userid. Si supponga di voler associare agli elementi della lista S1 alcune informazioni prelevate da S2, ad esempio il nome e cognome.

Quindi avremo, ad esempio :
  • S1 = {U4,U5,U8,U10,U25}
  • S2 = {(U1,n1,c1),(U2,n2,c2),(U3,n3,c3),(U4,n4,c4),(U5,n5,u5),...,(U8,n8,c8),...,(U10,n10,c10),...,(U25,n25,c25),...,(U100,n100,u100)}

Dove :

  •  "Un" (n=1..100) sono le Userid;
  •  "nn" e "cn" (n=1..100) sono i nomi e cognomi associati alle userid
Il programma di bilanciamento "guidato" da S1, cercherà in S2 le informazioni mancanti per comporre in out una struttura S3 del tipo:
  • S3 = {(U4,n4,c4),(U5,n5,u5),(U8,n8,c8),(U10,n10,c10),(U25,n25,c25)}



martedì 4 novembre 2014

Algoritmi di Base su Mainframe

Esistono alcuni algoritmi che chiunque programmi in ambito Mainframe dovrebbe conoscere e sapere implementare.
Fondamentalmente essi si possono raggruppare in tre categorie:
1) Bilanciamento (Merge);
     E' utilizzato quando, date due strutture dati ordinate secondo una certa chiave (La stessa per entrambe) si vuole creare una terza struttura risultante dalla fusione delle due ed ordinata secondo la stessa chiave.
2) Rottura di chiave;
    Una rottura di chiave si applica quando, data una struttura dati ordinata secondo una certa chiave, si vogliono eseguire elaborazioni su tutti i dati afferenti uno stesso valore della chiave (Totalizzazioni, conteggi). Era molto utilizzato per la produzione di report stampabili.
3) Ordinamento (Sort);
    Si applica quando è necessario ordinare una struttura dati secondo una chiave in senso ascendente o discendente. Normalmente quando la struttura è un sequenziale, l'operazione viene eseguita da JCL. Un sort a programma si può applicare a liste di dati da visualizzare e contenuti un tabelle di memoria.