Se al record attuale e` associata una nota , viene evidenziato un asterisco a destra del primo campo del record.
Per uscire dalla lista, occorre digitare [Invio] selezionando un record, oppure digitare [ESC], senza selezionare nulla.
Se la lunghezza della riga e` maggiore della grandezza della finestra, si possono vedere i dati non visualizzati spostandosi tra i vari campi e tra i vari records.
Per spostarsi, si possono usare vari tasti funzionali: SPOSTAMENTI TRA RECORDS (VERTICALI)
Il programma puo` essere richiamato dal menu` o da un altro programma che necessita di una lista.
Se richiamato da menu` il programma, alla partenza, richiede il numero dell'archivio desiderato ed il suo tipo record (vedi 'Dizionario dati'), oppure il nome della lista voluta (su tutti e tre i campi e`'g possibile effettuare uno zoom). Se si inseriscono i primi due dati, si attiva il programma in modalita` 'libera'; se si inserisce il terzo, si attiva in modalita` 'predefinita'.
Se sul numero del file si specifica 9999, il file preso in considerazione sara` un sequenziale; si deve specificare il suo nome, se il primo record contiene i nomi dei campi contenuti nei record successivi (se no, il programma assegna dei nomi standard ai vari campi), qual e`'g il separatore tra i vari campi. Il programma, in base alle informazioni contenute nel sequenziale specificato, costruisce un dizionario dati 'locale' alla lista stessa, su cui si puo` lavorare poi come se questo fosse in file normale: effettuare calcoli, join, selezioni, ordinamenti e quant'altro. Il nome del file sequenziale puo` essere ridefinito all'atto della chiamate, tramite parametro (vedi come richiamare una lista ).
Se richiamato da un altro programma (vedi come richiamare una lista ), la lista sara` sempre in modalita` 'predefinita'.
Dopo tale scelta, viene presentata una videata composta da una matrice contenente i dati dell'archivio selezionato, sulle righe i records, sulle colonne i campi; il record attuale e`'g evidenziato.
Se la lunghezza della riga e`'g maggiore della grandezza della finestra, si possono vedere i dati non visualizzati spostandosi tra i vari campi.
Per spostarsi, si possono usare vari tasti funzionali: SPOSTAMENTI TRA RECORDS (VERTICALI)
A questo punto, e`'g possibile personalizzare la lista, cambiando l'ordinamento dei records, dei campi, eliminando dalla lista alcuni campi, cambiandone la 'picture', escludendo records secondo certi criteri, creando campi calcolati, etc.
Premendo il tasto [Shift-F1], si accede al menu` di personalizzazione della lista: vengono presentate tutte o alcune tra le opzioni possibili, che sono:
Il programma richiede una stringa da ricercare: si puo` digitare una sequenza di caratteri qualunque, che saranno ricercati considerando uguali caratteri maiuscoli e minuscoli; inoltre si puo` usare la sintassi della funzione like di set inclusioni
Se si sceglie la modalita` editazione, il cursore si posiziona su un singolo campo, invece che su tutta la riga attuale, e se ne puo` modificare il valore; l'aggiornamento effettivo dell'archivio avviene pero` solamente all'uscita dalla modalita` editazione o dal programma, e si puo` anche scegliere di non aggiornare l'archivio con le modifiche effettuate.
Inoltre, sono attive l'operazione di inserisco rigo , cancello rigo e bufferizzo rigo .
Per uscire dalla modalita` 'EDITAZIONE', bisognera` scegliere la modalita` 'SELEZIONE'; se nel frattempo si sono modificati dati o cancellati/inseriti record, viene richiesto se aggiornare l'archivio con le modifiche fatte.
Se c'e' piu` di una chiave, viene proposto l'elenco delle chiavi definite tra le quali se ne scegliera` una; dopo di che, viene visualizzato l'elenco dei campi componenti tale chiave, e viene richiesto un ESTREMO INFERIORE di chiave ed un ESTREMO SUPERIORE. Una volta completata l'operazione, si otterra` una lista ordinata per la chiave selezionata, e comprendente SOLAMENTE i record compresi tra gli estremi selezionati.
Su ESTREMO INFERIORE e su ESTREMO SUPERIORE e`'g possibile specificare un valore fisso, oppure un PARAMETRO (vedi oltre), tramite il tasto F2.
N.B.: se ci sono piu` campi che compongono la chiave, essi vengono proposti ed utilizzati IN ORDINE DECRESCENTE DI PRIORITA` SULLA CHIAVE:
il range specificato nei campi piu` in basso nella lista viene controllato solamente se i campi piu` in alto sono all'estremo del proprio range (= al minimo o al massimo);
ad es., dato un archivio di cedolini paga con una chiave composta da AZIENDA, NUMERO DIPENDENTE, MESE DI RETRIBUZIONE si potranno vedere tutti i cedolini dell'azienda X (specificando 'da AZIENDA X, DIPENDENTE 0, MESE 0, a AZIENDA x, DIPENDENTE 9999, MESE 99');
NON si vedranno i cedolini di tutti i dipendenti dell'azienda X del mese Y, se si specifica 'da AZIENDA X,DIPENDENTE 0, MESE Y, a AZIENDA x, DIPENDENTE 9999 MESE Y', ma si vedranno TUTTI i cedolini dei dipendenti il cui codice e`'g compreso tra 1 e 9998, di TUTTI i mesi. Per ottenere il risultato voluto, si deve utilizzare (se e' presente) una chiave composta da AZIENDA, MESE, DIPENDENTE nell'ordine indicato, oppure effettuare un SET INCLUSIONI (vedi oltre).
Viene presentata una maschera con le seguenti colonne:
Si possono comunque indicare parentesi per raggruppare piu` operazioni in una unica sotto-condizione, AND,OR,NOT; ovviamente, la condizione risultante dovra` rispettare le regole dell'algebra logica (bilanciamento delle parentesi, etc); gli operatori, in assenza di parentesi, assumono la priorita` tradizionale: NOT,AND,OR
In caso di COND = LK, si puo` specificare una stringa che contiene caratteri 'normali', oppure il metacarattere '?', indicante 'qualunque carattere', o '*', indicante ' qualunque carattere, zero o piu` volte'; i caratteri 'normali' vengono confrontati considerando uguali maiuscoli e minuscoli.
Per i files sequenziali, permette di specificare qual e`'g l'ordine in cui i record fisicamente si trovano nel file (per poter operare dei selfjoin); in tal caso viene effettuata una richiesta di conferma apposita.
Viene proposta una videata con l'ordinamento attualmente in uso; E` possibile selezionare i campi direttamente dalla lista dei campi definiti; si puo` inserire un campo tra due gia` specificati, tramite il tasto F1; se ne puo` eliminare uno, con F2.
Le righe sono in ordine di priorita` decrescente; la maschera e`'g composta dalle seguenti colonne:
- Se vale 'G', viene attivata la modalita` 'GROUP BY': non vengono visualizzate le righe di dettaglio, e quelle che, in una lista uguale, ma in modalita` normale sarebbero state le righe del totale di livello piu` basso, vengono visualizzate come righe di dettaglio. 'G' puo` essere specificato SOLO sull'ultimo campo di ordinamento. Il risultato e`'g paragonabile a quello che con un SQL si puo` ottenere tramite l'opzione GROUP BY. Le colonne visualizzate sono valorizzate SOLAMENTE se sono campi di totale o sono campi di ordinamento. (qualche prova vale piu` di tutta questa lunga spiegazione...)
Per rottura di gruppo si intende che, quando due record successivi hanno valori uguali sul campo indicato, non succede nulla; se invece hanno valori diversi, viene stampata una riga contenente i totali del gruppo di record che hanno tutti il primo valore sul campo (se specificata la totalizzazione), e stampata una testata indicante il valore del campo nel nuovo gruppo di records.
Tutti i campi contenenti 'N' su 'A CAMBIO ...', fanno tutt'uno con il successivo campo contenente 'S' o 'P'( se c'e'): se cambia il loro valore tra due records, si comportano come il campo con 'S'; se invece non ci sono altri campi con 'S', (su righe successive), non e`'g gestita la rottura di gruppo sul campo.
Ad.Es, se sul dizionario dati c'e' un archivio CEDOLINI, contenente AZIENDA, NUMERO DIPENDENTE, MESE DI RETRIBUZIONE, NETTO A PAGARE, un archivio DIPENDENTI contenente DIPENDENTE NUMERO, COGNOME, QUALIFICA, ed e`'g specificato un join tra l'archivio CEDOLINI e quello DIPENDENTI tramite il campo NUMERO DIPENDENTE -> DIPENDENTE NUMERO, selezionando SET JOIN, verra` proposto questo legame; se si specifica 'S' sul campo 'S/N', sulla videata dei records saranno visibili anche i campi del COGNOME e della QUALIFICA, per ogni cedolino.
Per ogni join, e`'g necessario assegnare una SIGLA JOIN univoca composta da due caratteri, che serve per distinguere gli eventuali campi che dovessero avere lo stesso nome.
Se esiste un legame non completo, esso puo` essere completato nella formula di calcolo richiesta successivamente.
E` possibile anche creare join manuali, se i legami tra gli archivi non sono stati specificati all'atto della definizione delle strutture.
Per effettuare un join manuale, e`'g necessario digitare F1, sul primo rigo della maschera dei joins. Si deve poi specificare il numero ed il tipo record del file che si desidera agganciare, la chiave tramite la quale si vuole effettuare la lettura sul file di join, e la sigla join, come per le join automatiche.
Il legame cosi` creato e`'g per definizione incompleto, e sara` necessario valorizzare tutta la chiave nella successiva formula di calcolo; inoltre tali join vengono considerate comunque come associate all'archivio principale, anche se cio` non corrisponde alla struttura del database. Questo fatto non costituisce un problema, in quanto questa informazione e' utilizzata solamente dalle join automatiche.
Le letture degli archivi agganciati avvengono nello stesso ordine indicato nella maschera del SET JOIN.
E` necessario porre particolare attenzione all'ordine in cui si effettuano le join, sia manuali che automatiche: se si utilizzano campi che sono su un archivio agganciato (ad es. archivio A), per valorizzare parti di chiavi di altri archivi da collegare ( ad es archivio B), e`'g necessario porre la join del file di cui servono le informazioni PRIMA della join su cui tali informazioni vengono utilizzate: la join di A DEVE essere PRIMA della join di B.
E` possibile indicare un archivio anche piu` volte nell'elenco delle join (per intenderci, in una struttura del tipo distinta base, posso collegare l'archivio articoli sia al componente che al prodotto finito; sara` la sigla join che permettera` la distinzioni ad es. delle descrizioni dei due articoli).
Se si devono mettere a confronto dati dello stesso archivio (ad es. il fatturato per articolo/cliente di un anno con quello dell'anno precedente, ammesso di avere dei record di fatturato suddivisi per anno), e non si e`'g in grado di stabilire un join normale, perche' non si sa quale set di record prevale sull'altro (se possono esistere alcuni record che hanno solo dati di un anno, ed altri che anno solo dati dell'altro), si puo` definire un 'self-join'.
Con questo meccanismo e`'g la lista stessa che provvede a stabilire un legame logico tra i vari records, ammesso che si stia utilizzando una chiave tramite la quale si possa stabilire un legame gerarchico, in cui i dati da mettere a confronto siano gli ultimi della chiave: nell'esempio di cui sopra si dovra` avere una chiave 'articolo-cliente-anno', non una del tipo 'anno-articolo-cliente'. Se cosi` fosse, e' necessario utilizzare due liste collegate da un sequenziale.
Digitando F3 sulla maschera dei join, si stabilisce un legame di tipo 'self-join'; viene inoltre richiesto qual e`'g l'ultimo campo che distingue un raggruppamento di record da mettere a confronto dall'altro.
L'archivio agganciato e`'g per definizione lo stesso dell'archivio principale, e sara` gestita la rottura di codice fino al campo sopra specificato.
Per stabilire la parte restante della chiave da utilizzare, si dovra` richiamare successivamente 'SF1/set selfjoin' e si indicheranno i valori delle chiavi a confronto.
Nell'esempio di cui sopra, si indichera` che la rottura e`'g sul campo 'cliente', e su SF1/selfjoin si indicheranno quali sono i due anni da confrontare; a questo punto si selezioneranno i campi che si vogliono vedere, e la lista evidenziera` sulla stessa riga, su colonne separate, record con stesso articolo-cliente, selezionando solamente quelli dei due anni indicati.
Successivamente all'inserimento delle join da effettuare, si ha la maschera per il caricamento della formula di calcolo per valorizzare i campi non definiti nelle join incomplete e manuali; la sintassi e`'g la stessa della formula dei campi calcolati ; la differenza tra le due formule e' che questa viene eseguita piu` volte, una per ogni join, e viene eseguita PRIMA che venga effettuato il controllo dei campi definito in set inclusioni , mentre l'altra viene eseguita una volta sola per ogni record: in questa vanno valorizzati i campi di join ed i campi di selezione, mentre nell'altra vanno effettuate le operazioni di totalizzazione, che effettuate qui porterebbero a risultati errati.
All'atto della stampa si deve selezionare se si desidera avere il punto decimale invece che virgola decimale, e se si vuole una prima riga contenente i nomi dei campi, oppure le loro descrizioni, oppure nulla.
Orizzontale (default all'ingresso nelle liste stesse): si ha la visualizzazione di una riga per ogni record, con i campi che si svolgono orizzontalmente sullo schermo; ci si muove tra un campo e l'altro all'interno dello stesso record con TAB, BACK-TAB, le frecce a destra ed a sinistra; ci si muove tra i record con le frecce in alto ed in basso, PAGINA-SU e PAGINA-GIU.
Verticale: si ha la visualizzazione di una pagina per ogni record, con i campi che si svolgono verticalmente sullo schermo; ci si muove tra un campo e l'altro all'interno dello stesso record con TAB, BACK-TAB, le frecce a in alto ed in basso, PAGINA-SU e PAGINA-GIU; ci si muove tra i record con F4 (record precedente) ed F5 (record successivo).
Si puo` far scorrere la videata direttamente fino ad un campo desiderato, se se ne conosce parte del nome o della descrizione: digitando F3, si ottiene una maschera nella quale si scegliera` se si vuole ricercare sul nome o sulla descrizione, e poi si digitera` la parte di nome/descrizione ricercata; se la ricerca va a buon fine, la videata si posizionera` sul prossimo campo che soddisfa la ricerca.
Si puo` inoltre (con F1) selezionare tutti i campi della lista, oppure (con (F2) escluderli tutti.
Questa videata ha le seguenti colonne:
Si puo` sfruttare il meccanismo di costruzione dinamica delle descrizioni dei campi, se previsto dall'interfaccia verso il file utilizzato, specificando 'P' sulla scelta se il campo e`'g visualizzato S/N/(P).
Una volta creati i campi, viene proposta una videata nella quale bisogna inserire le modalita` di calcolo di tali campi (e' possibile anche ricalcolare campi diversi dai campi calcolati).
Di seguito e`'g riportata la sintassi di tale formula di calcolo: istruzione:
istruzione [ [;] istruzione .... ] , istruzione_di_assegnamento , istruzione_condizionale istruzione_di_assegnamento: LET campo = espressione istruzione_condizionale: IF espressione THEN istruzione ENDIF , IF espressione THEN istruzione ELSE istruzione ENDIF espressione: campo , ( espressione ) , espressione * espressione , espressione / espressione , espressione + espressione , espressione - espressione , espressione AND espressione, espressione OR espressione, NOT espressione, espressione = espressione, espressione > espressione, espressione < espressione, espressione >= espressione, espressione <= espressione, espressione != espressione, espressione <> espressione, min(espressione, espressione), riporta il minimo tra le due espressioni; queste devono essere dello stesso tipo (o tutte e due numeriche o tutte e due alfanumeriche)Le priorita` di calcolo sono le usuali;max(espressione, espressione), riporta il massimo tra le due espressioni; to_date(espressione), riporta la data numerica contenuta nella stringa ESPRESSIONE, in formato "MM/GGMAAAA" to_num(espressione_alfanumerica), riporta il numero contenuto nella stringa indicata to_char(espressione, interi), riporta la stringa contenente il valore numerico specificato,
la cui lunghezza e`'g indicata in INTERI to_lower(espressione), riporta la stringa ESPRESSIONE convertendo i caratteri maiuscoli in minuscoli to_upper(espressione), riporta la stringa ESPRESSIONE convertendo i caratteri minuscoli in maiuscoli add_date(espressione_numerica, espressione_numerica), aggiunge alla prima espressione (considerata come data,
in formato aaaammgg), il numero di giorni indicato nella seconda espressione, riportando una data in formato aaaammgg sub_date(espressione_numerica, espressione_numerica), sottrae dalla prima espressione (considerata come data,
in formato aaaammgg), il numero di giorni indicato nella seconda espressione, riportando una data in formato aaaammgg diff_date(espressione_numerica, espressione_numerica), calcola la differenza in giorni tra la prima e la seconda
espressione, considerate entrambe come date in formato
aaaammgg, e riporta il numero di giorni intercorrenti
tra le due substr(espressione, pos_inizio, lunghezza), estrae la porzione di stringa indicata da POS_INIZIO per LUNGHEZZA caratteri e ponendo n_spazi tra l'una e l'altra ) strcat(espressione, espressione, n_spazi) (aggancia 2 stringhe troncando spazi e ponendo n_spazi tra l'una e l'altra ) campo : CAMPO_DA_ARCHIVIO , CAMPO_CALCOLATO , pseudo_variabile pseudo_variabile: PAGENO , (numero pagina x stampe) LINENO , (numero linea nella pagina) PROGNO , (numero record) PARAnn , (parametro NN alfanumerico) PARNnn , (parametro NN numerico) GROUPLEVEL , (livello di rottura di gruppo attuale) AFTERMODIFICA , (numero campo modificato (SF1/Z))
N.B. le funzioni SET CAMPI, CAMPI CALCOLATI e SET JOIN riposizionano i campi secondo l'ordine naturale
l'elenco delle richieste effettuate al lancio S/N
essere quella di sistema.
lavoro S/N (la stampa avviene all'interno della riga del titolo)
necessario per effettuare la stampa tramite testo; se si effettua una stampa tramite file di testo, ma il nome non e`'g stato specificato, il nome del file di testo verra` richiesto
al momento della stampa effettiva.
su di una stampante particolare
su di un file particolare (utilizzato anche per il nome del file di
import, se deve essere fissato)
sulle stampe (virgola o punto)
Se export, vengono stampati solamente i dati, senza rotture di pagina. Questa opzione viene utilizzata se si devono scambiare dati con altri programmi, come fogli elettronici, data-base etc.
E` possibile non generare intestazioni, oppure generare un record di intestazione contenente le descrizioni dei vari campi (tale informazione sara` da utilizzarsi in procedure esterne), oppure i nomi degli stessi, in un formato intelligibile per un successivo import su un'altra lista (formato interno).
Se stampa tramite testo, la stampa viene formattata in base alle specifiche contenute nel file indicato sul campo ' testo di stampa '.
Se stampa binaria, il record non subisce alcuna formattazione (funzione associata alla gestione del log di procedura ).
ad es. per excel o access.
Indicare spazio, Virgolette oppure Apice. Tale opzione non ha significato, se non si e`'g selezionato 'export'.
Se sono tutti e due a zero, non viene effettuato cambio pagina. Tale opzione non ha significato, se si e`'g selezionato 'export'.
Ad es $ALOCAL$ verra` sostituita in fase di stampa dal valore del campo ALOCAL (se definito), presente nel record in stampa al momento.
Il valore cosi` ottenuto viene troncato degli spazi non significativi, e sostituito al testo $VARIABILE$.
Pertanto, se il campo ALOCAL, che nella lista e`'g lungo 30 caratteri,
vale "VIA ROMA, 106 ", e si stampa
IO ABITO IN $ALOCAL$, E CI STO BENEsi otterra`
IO ABITO IN VIA ROMA 106, E CI STO BENESe si vuole stampare un campo con lunghezza fissa, si dovra` indicare la lunghezza desiderata nel formato $nn-NOMEVARIABILE$. Con i dati precedenti,
IO ABITO IN $15-ALOCAL$, E CI STO BENEdiventa
IO ABITO IN VIA ROMA 106 , E CI STO BENEE` possibile richiamare un'altra lista da dentro un testo, indicando:
$CALL$ nome_lista eventuali_parametri_da_passare_alla_nuova_lista (i parametri possono essere a loro volta variabili) ad es.
$CALL$ stasol1 $QCODCON$ $PARA03$esegue la stampa indicata nella lista stasol1, passando come parametri i valori attuali dei campi QCODCON e PARA03.
.
.INmm-nn-ooin cui:
.xxmm-nn-ooin cui
Un esempio:
.IN72-10-08 .SN040-090-1 Spett.le $ARAGSO$ $AINDIR$ $ACAP$ $ALOCAL$ OGGETTO: ESTRATTO CONTO V/S DARE AL $PARA04$ ................Per le prime due righe, rimandiamo all' header paragrafo ;
Se i campi del record in stampa valgono
Verra` stampato: Spett.le ROSSI MARIO VIA ROMA, 206 52100 AREZZO OGGETTO: ESTRATTO CONTO V/S DARE AL 31/12/1997
Viene richiesto il tipo di lista (Sistema/Utente), ed il nome da assegnare; le liste-sistema sono quelle standardizzate, fornite insieme all'applicativo; quelle utente sono quelle che ogni utente puo` fare da se', se vi e`'g abilitato).
Viene richiesta anche se la lista dovra` essere ottimizzata (una lista ottimizzata e`'g precompilata, ed e' quindi molto piu` veloce in fase di caricamento della stessa, ma puo` non corrispondere ad eventuali variazioni della struttura del database avvenute successivamente alla sua compilazione)
Per le operazioni:
Inoltre si puo` specificare se si costruisce una lista di 'solo stampa', predisposta per generare report su carta (o export): in tal caso, al successivo richiamo della lista, verra` automaticamente generato un report, senza doverlo richiamare tramite la funzione F10.
Il campo 'modifica batch', se assume il valore 'S', indica che la lista serve per effettuare variazioni automatiche al database: quando la lista sara` eseguita, se ci sono record che contengono campi modificati (tramite campi calcolati), le modifiche effettuate vengono memorizzate nell'archivio corrispondente (dopo richiesta di conferma all'utente).
Si puo` indicare anche il nome di un programma (COBOL), predisposto per la richiesta dei parametri relativi alla lista; se indicato, tale programma verra` lanciato invece della richiesta standard dei parametri.
Il campo 'Sigla join risposta' permette di riportare in uscita di una lista (su LNK-DATI-REC) un record agganciato invece del record primario relativo alla riga selezionata.
Il campo 'Programma successivo' indica l'eventuale programma (con i relativi parametri) da lanciare dopo l'uscita dalla lista: abbinato al campo 'solo stampa' permette di lanciare una lista, che genera un sequenziale in stampa, che serve come input per un'altra lista, che legge lo stesso sequenziale .. e cosi` di seguito; cio` per evitare lista di complessita` troppo elevata (troppe join, o troppi campi calcolati, o group-by con totalizzazioni incompatibili tra di loro ..).
Si possono infine indicare fino a 20 parametri , che saranno richiesti al lancio della lista, e possono essere utilizzati in set estremi , set inclusioni e campi calcolati .
Se si vogliono passare a liste chiamate in cascata parametri derivanti dalla lista attuale, li si dovra` specificare come '%nn' in cui nn indica il numero del parametro desiderato (indicare nn sempre di due cifre !).
Per quanto riguarda i campi di tipo DATA, il valore dei parametri corrispondenti devono essere espressi in formato AAAAMMGG
E` inoltre possibile stabilire un valore di default, che e`'g quello che viene proposto all'atto dell'esecuzione della lista; si puo` specificare il valore della costante da proporre, oppure %D per la data odierna, %A per l'anno della data odierna, %PA per l'esercizio attuale, %PP per l'esercizio precedente.
Viene richiesto il campo da modificare, ed il nuovo valore che dovra` assumere; inoltre viene richiesto se il record cosi` ottenuto sara` un record nuovo (write) oppure dovra` sostituire un record preesistente (rewrite).
Si DEVE scegliere write se si modifica la chiave; altrimenti si DEVE scegliere rewrite.
Tale operazione richiede una certa prudenza nell'utilizzo: se la selezione che si e`'g effettuata non e' quella desiderata, si modifica il valore su records che non andavano toccati, e da tale operazione non si puo`, in generale, tornare indietro.
Come per la modifica, tale operazione richiede una certa prudenza nell'utilizzo: se la selezione che si e`'g effettuata non e' quella desiderata, si cancellano records che non andavano toccati, e da tale operazione non si puo`, in generale, tornare indietro.
Tale funzione e`'g attiva solamente in modalita` 'editazione dati'.
Tale funzione e`'g attiva solamente in modalita` 'editazione dati'.
Tale funzione e`'g attiva solamente in modalita` 'editazione dati'.
Tale funzione e`'g attiva solamente in modalita` 'editazione dati'.
Viene richiesto il nome del file da cui fare l'import, e l'eventuale delimitatore di campo utilizzato; nel file di import devono esserci tutti i campi componenti la chiave primaria, e che non sono valorizzati dal calcolo dei join, ma non e`'g obbligatorio che ci siano tutti gli altri: se il record specificato non esiste, viene inserito con i campi che ci sono, se invece esiste gia` i campi presenti nell'import sostituiscono quelli del record, mentre gli altri rimangono inalterati.
E` possibile valorizzare campi tramite la formula di calcolo inserita dopo il set join .
Si potranno, sempre su LNK-DATI-STRINGA, indicare alcuni parametri standard:
La selezione/deselezione dei records si effettua tramite INVIO; si puo` selezionare tutto/deselezionare tutto tramite SF1 ed opzione relativa.
Ad es., se si e`'g generata una lista di nome "DIPE", di tutti i dipendenti di una ditta, e si e' previsto come parametro il numero della ditta, si potra` richiamare la lista dei dipendenti della ditta 1 con il seguente frammento di codice:
MOVE "DIPE -S 0001" TO LNK-DATI-STRINGA CALL "DIZLST" USING LNK-DATI IF LNK-DATI-RISP = "S" MOVE LNK-DATI-REC TO RECORD-DIPENDENTI .......Le ultime due righe verificano se l'utente ha selezionato un record, e se lo ha fatto, recuperano l'informazione per un successivo utilizzo.