L'import e l'export avvengono tramite un programma generato a partire dalla compilazione del modello. Questo programma temporaneo ha come nome WWINNNNNN o WWENNNNNN (NNNNNN è un numero progressivo). Il programma non viene cancellato se prima di lanciare l'import si alimenta la variabile GTEST=1.
Nel caso dell'export, il programma estrae solo i dati (filtrandoli secondo le abilitazioni degli utenti). Nel caso dell'import, il programma contiene le istruzioni di decodifica del flusso di dati e richiama le diverse funzioni collegate all'oggetto da importare, emulando in qualche modo l'inserimento. Vengono quindi chiamate normalmente le etichette standard dei programmi SUBXXX e SPEXXX che permettono di gestire gli oggetti.
Vengono inoltre chiamate delle etichette supplementari particolari all'import, da scrivere nel programma standard IMPXXX o nel programma specifico associato nel modello di import.
Per l'import, il supervisore gestisce in automatico la creazione e l'aggiornamento della tabella principale; è possibile aggiornare delle tabelle supplementari se lo si è programmato nelle azioni dell'oggetto, ad esempio.
Per l'export, i testi memorizzati in X3 in formato clob devono essere di solo testo. Se si tenta di esportare un rich text, si esporterebbero con il testo tutti i suoi attributi.
I programmi di import ed export possono utilizzare le variabili GIMP(n).
La documentazione sui modelli di import/export contiene informazioni supplementari.
1- Prima della simulazione dell'inserimento
Caricamento della classe [F] intermedia con il record da importare
Se il record esiste nel database, il supervisore lo carica nella classe [M].
2- Durante la simulazione dell'inserimento (i campi vengono trattati uno ad uno).
Le azioni sui campi con esecuzione "sempre" o "import/batch" vengono eseguite. Non vengono eseguite ad esempio quelle del menù contestuale (Clic, Bottone, Selezione).
Per i campi inseribili, la classe [M] del campo viene alimentata con la classe [F] intermedia con le azioni controllo, post_campo e post_modifica.
3-La transazione di aggiornamento
Caicamento della classe [F] definitiva con l'insieme della classe [M].
Creazione o aggiornamento della tabella principale dell'oggetto
Le tabelle supplementari sono gestite dalla seguente azione dell'oggetto: MODIFICATION
Le azioni sui campi con esecuzione "sempre" o "import/batch" vengono eseguite.
I campi obbligatori devono essere alimentati.
La trans-classe automatica non avviene per i campi visualizzati o nascosti.
I campi sono trattati nell'ordine della loro definizione nella videata.
E' disponibile un'azione supplementare in import sui campi inseribili: IMP_ZONE sui campi di blocco elenco, IMP_TAB sui campi di blocco riquadro previsto per una tabella di dettaglio.
In questo caso il supervisore non utilizza la classe [M] delle videate associate all'oggetto. Non avviene quindi simulazione di inserimento con l'insieme di controlli ed azioni sui campi. Si tratta di un trasferimento diretto nella tabella del database. Per la tabella principale, il supervisore gestisce in automatico la creazione e la modifica di record.
Il modello di import speciale è ridotto, quindi più aperto, ma comporta meno automatismi. Non gestisce il caricamento delle videate, la simulazione di inserimento e la transazione di aggiornamento. I programmi vanno scritti in etichette particolari, poi, se necessario, nell'etichetta $ACTION del programma associato all'import. E' possibile creare degli import speciali su modelli con oggetto semplice, riquadro o combinato. Non sono autorizzati su modelli senza oggetto. L'import speciale è sia specifico, sia standard. Tuttavia, su un import standard, si ha comunque l'unica possibilità di aggiunta di specifico con l'azione IMPORT; Per motivi tecnici, questa azione va allora sviluppata nel programma specifico dell'oggetto.
Il programma standard o specifico inizia quindi con questa etichetta $ACTION da scrivere nel seguente modo (dove XXXXXX è il codice dell'evento):
$ ACTION
Case ACTION
When "XXXXXX": Gosub XXXXXX
When default
Endcase
Return
Ogni evento viene identificato da un codice alfanumerico, contenuto nella variabile ACTION. Se non vi è codice per un evento, il funzionamento della funzione non sarà di ostacolo. Nel sotto-programma $ACTION si gestisce l'indirizzamento all'etichetta aggiunta. In questa sintassi "case ACTION" si indicheranno tante righe quanti sono gli eventi da completare. La $ACTION viene chiamata dal programma supervisore tramite GOSUB; ciò permette di conseguenza di utilizzare delle variabili locali nel programma supervisore.
In allegato si trova l'elenco delle azioni. Si troverà poi la descrizione dettagliata di queste azioni. Viene descritto il contesto chiamante e l'obiettivo di queste azioni.
Di default, per uno stesso evento, l'azione specifica è chiamata prima dell'azione standard.
Questa può annullare e sostituire l'azione standard se posiziona la variabile GPE al valore 1.
Per eseguire l'azione standard prima dell'azione specifica, in questo caso, si duplica il programma standard nell'azione specifica, si aggiunge il programma specifico e poi si posiziona la variabile GPE al valore 1. Esempio:
Programma supervisore
GPE=0
Gosub ACTION From trait_std ( chiamata dello standard)
If GPE=0
Gosub ACTION From trait_spé. ( chiamata dello specifico)
Endif
Programma specifico
$ ACTION
Case ACTION
When "OUVRE" : Gosub OUVRE
When default
Endcase
Return
$OUVRE
... ( azione specifica OUVRE)
GPE = 1 (nessuna chiamata dello standard a seguito dello specifico)
Return