La tabella delle destinazioni permette di definire le stampanti disponibili per gli utenti, e anche i tipi di output associati. Si noti che il tipo di output è il menù locale numero 22, che è parametrizzabile.
La parametrizzazione degli utenti che permette di definire una tabella delle destinazioni di default e per tipo, sia direttamente che facendo riferimento ad un altro utente.
Il dizionario delle stampe definisce le stampe con una destinazione di default, un tipo di output che servirà da filtro (salvo che si tratti del primo valore che è un passe-partout), ed una formula che permette di esprimere il valore del complemento descritto qui in basso.
La tabella delle destinazioni per utente, che definisce le regole più raffinate di assegnazione di destinazione (per terna di utente, complemento, stampa).
E' da fare una prima osservazione. Prima di ogni assegnazione di destinazione, due casi particolari permettono di definire una stampante in maniera particolare:
L'entry point DEFIMP è utilizzato da uno sviluppo specifico, il codice richiamato può imporre una destinazione a partire da regole specifiche. Questo entry point, prioritario, è richiamato alla fine dell'algoritmo (si sa allora quale stampante sarebbe stata scelta di default applicando tutte le altre regole.
Il programma chiamante (se la stampa è chiamata direttamente da un programma) può anche imporre la destinazione.
Ad eccezione di questi due casi particolari, le regole di assegnazione vengono definite qui in basso. L'algoritmo inizia col determinare i tre valori seguenti:
Nel dizionario delle stampe, viene definito un Tipo di output. algoritmo di determinazione qui sotto ricercherà una destinazione del tipo corrispondente solo se il tipo richiesto nella stampa non è il primo della lista (cioè se la destinazione trovata non è quella giusta, la ricerca continua). Ovviamente occorre che la destinazione sia attiva e che l'utente abbia il diritto di utilizzarla - all'occorrenza è l'accesso in esecuzione sul codice accesso associato alla destinazione. Se la destinazione non rientra in questo caso, la ricerca continuerà.
Se il campo Formula complemento viene indicata nel dizionario delle stampe, si valuta il risultato della formula che è chiamata complemento. Il complemento può essere per esempio un codice di sito, se la stampa lanciata si lancia per i dati di un sito. Così, la destinazione utilizzata potrà dipendere dal sito interessato dalla stampa. Se il campo Formula complemento non è alimentato, si considera che il valore complemento sia vuoto. Nella formula di calcolo utilizzata, è possibile inserire: delle costanti, delle funzioni, il valore di un parametro della stampa tramite la sintassi PARAM(NOMEPARAM), dove NOMEPARAM è il codice del parametro così come definito nel dizionario della stampa, delle variabili di cui si sa che sono alimentate nel contesto - per esempio il sito di default di un utente per un determinato modulo, che può essere trovato nel riquadro GFCYDEF...
Infine, in seguito, si utilizza come parametro di determinazione il codice dell'utente connesso, salvo che nella sua scheda, non esista un altro codice utente nel campo Destinazioni utente (questo per permettere di definire che un utente ha le stesse regole di assegnazione di un altro utente modello). Ci possono essere delle indirezioni successive sul codice utente, ma in caso di ciclo-loop nell'elenco si utilizzerà come codice l'utente di partenza.
Una volta determinati i tre valori (tipo di output ricercato, valore del codice complemento, codice utente), la regola di determinazione è allora la seguente:
Ci si riferisce alla tabella delle destinazioni per utente. Se in questa tabella esistono una riga per la stampa corrente, il codice utente interessato e il valore di complemento calcolato precedentemente, sarà utilizzata la destinazione definita sulla riga.
Se non è trovato nessun valore per la terna e se il valore del complemento valutato non è a blank, ci si riferisce comunque a questa tabella ricercando una riga con il codice utente ed il codice stampa idonei e con il campo complemento vuoto (se il campo complemento fosse vuoto, si sarebbe già realizzata la ricerca nella fase precedente.). Se esiste una riga, si prende la destinazione corrispondente.
In assenza si prende la destinazione definita nella scheda della stampa (se questa esiste).
Se la destinazione non viene ancora trovata, si prende la destinazione del tipo idoneo definita sulla scheda utente (se questa esiste)
Se la destinazione non viene ancora trovata, si ricerca la destinazione idonea associata al sito di default dell'utente (parametri PRT1, PRT2, PRT3, PRT4). Il sito di default dell'utente dipende sia dal suo profilo che dal modulo a cui appartiene la stampa. Tale ricerca si effettua naturalmente utilizzando le abituali regole gerarchiche sito/società/dossier per i valori dei parametri.
In assenza, se viene effettuato un lancio batch, si sceglie la prima destinazione idonea. Se ci si trova in stampa diretta da una postazione di lavoro, sarà proposta la prima destinazione di tipo Anteprima.
Se la destinazione è stata definita nella tabella delle destinazioni per utente o nel dizionario delle stampe, gli viene associata una casella Obbligatoria. Se non è contrassegnata, la destinazione così determinata non è obbligatoria e l'utente può quindi cambiare destinazione o ridefinirla scegliendo destinazione/server/nome stampante/caratteristiche. Una destinazione determinata a partire dalle altre regole non è mai considerata come obbligatoria.
Le tabelle utilizzate sono APRINTER [AIM] (tabella delle destinazioni), APRINTDES [AID] (tabelle delle destinazioni, complementi),APRTAUS [AIA] (tabella che associa una destinazione ad una terna [ codice stampa, codice utente, codice complemento ] ).