Utilizzo dei sottofile

I file secondari possono essere specificati nella DDS per un file di dispositivi di visualizzazione per consentire di gestire più record dello stesso tipo sul display. (Vedi Figura 1.) Un sottofile è un gruppo di record letti da o scritti su un file di dispositivi di visualizzazione. Ad esempio, un programma legge i record da un file di database e crea un sottofile di record di output. Quando l'intero sottofile è stato scritto, il programma invia l'intero sottofile al dispositivo di visualizzazione in un'unica operazione di scrittura. L'utente della stazione di lavoro può modificare i dati o inserire ulteriori dati nel sottofile. Il programma legge quindi l'intero sottofile dal dispositivo di visualizzazione nel programma e elabora ogni record nel sottofile singolarmente.

I record che si desidera essere inclusi in un sottofile sono specificati nella DDS per il file. Il numero di record che possono essere inclusi in un sottofile deve essere specificato anche nel DDS. Un file può contenere più di un sottofile e fino a 12 file secondari possono essere attivi contemporaneamente. Due file secondari possono essere visualizzati contemporaneamente.

Il DDS per un sottofile è costituito da due formati record: un formato subfile - record e un formato record di controllo subfile. Il formato subfile - record contiene le informazioni sul campo che vengono trasferite a o dal file di visualizzazione sotto controllo del formato di controllo del sottofile. Il formato di controllo - record del sottofile provoca le operazioni di lettura, scrittura o controllo fisico di un sottofile da effettuare. Figura 2 mostra un esempio di DDS per un formato subfile - record e Figura 1 mostra un esempio di DDS per un formato di controllo - record del sottofile.

Per una descrizione dell'uso delle parole chiave dei sottofili, fare riferimento alla sezione Db2 for i della categoria Database e File System nella Documentazione di IBM® in questo sito web: https://www.ibm.com/docs/i.

Figura 1. Visualizzazione sottofile

Customer Name Search

Search Code _______

Number  Name                  Address               City                  State

XXXX    XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XX
XXXX    XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XX
XXXX    XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XX
XXXX    XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XX
XXXX    XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XX
XXXX    XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XX
XXXX    XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XX
XXXX    XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XX
XXXX    XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XX
XXXX    XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XX
XXXX    XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XX
XXXX    XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XX
XXXX    XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XX
XXXX    XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XX
XXXX    XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XX
XXXX    XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XX
XXXX    XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XX
XXXX    XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XXXXXXXXXXXXXXXXXXXX  XX

Per utilizzare un file secondario per un file di dispositivi di visualizzazione in un programma RPG è necessario specificare la parola chiave SFILE su una specifica di descrizione file per il file WORKSTN. Il formato della parola chiave SFILE è SFILE (nome formato record:Nome campo RECNO). Il file WORKSTN deve essere un file descritto esternamente (E in posizione 22).

È necessario specificare per la parola chiave SFILE il nome del formato record del sottofile (non il formato record di controllo) e il nome del campo che contiene il relativo numero di record da utilizzare nell'elaborazione del sottofile.

In un programma RPG, l'elaborazione del numero di record relativo è definita come parte della definizione SFILE. La definizione SFILE implica un file di aggiornamento procedurale completo con ADD per il sottofile. Pertanto, le operazioni di file valide per il sottofile non dipendono dalla definizione del file principale di WORKSTN. Ovvero il file WORKSTN può essere definito come un file principale o un file completo - processuale.

Utilizzare i codici di operazione CHAIN, READC, UPDATE o WRITE con il formato record del sottofile per trasferire i dati tra il programma e il sottofile. Utilizzare i codici di operazione READ, WRITE o EXFMT con il formato di controllo - record del sottofile per trasferire i dati tra il programma e il dispositivo di visualizzazione o per elaborare le operazioni di controllo del sottofile.

L'elaborazione del sottofile segue le regole per l'elaborazione relativa del numero di record. Il programma RPG colloca il numero relativo - record di qualsiasi record richiamato da un'operazione READC nel campo denominato nella seconda posizione della parola chiave SFILE. Questo campo viene utilizzato anche per specificare il numero record che il programma RPG utilizza per l'operazione WRITE al file secondario o per le operazioni di output che utilizzano ADD. Il nome campo RECNO specificato per la parola chiave SFILE deve essere definito come numerico con zero posizioni decimali. Il campo deve avere posizioni sufficienti per contenere il numero record più grande per il file. (Vedere la parola chiave SFLSIZ nella sezione Db2 for i nella sezione della categoria Database e File System della Documentazione di IBM in questo sito web: https://www.ibm.com/docs/i.) Il codice di operazione WRITE e la specifica ADD sulle specifiche di uscita richiedono che venga specificato un campo relativo - numero - record nella seconda posizione della parola chiave SFILE sulla specifica di descrizione del file.

Se un file WORKSTN ha un sottofile associato, tutte le operazioni di input implicite ed operazioni di calcolo esplicite che fanno riferimento al nome del file vengono elaborate contro il file principale WORKSTN. Tutte le operazioni che specificano un nome formato da record che non è designato come sottofile vengono elaborati sul file principale di WORKSTN.

Se si preme un tasto funzione specificato durante una lettura di un record non sottofile, le successive letture di un record di sottofile provocherà l'attivazione dell'indicatore chiave di funzione corrispondente, anche se l'indicatore della chiave di funzione è stato impostato tra le letture. Questo continuerà fino a quando non verrà letto un record non sottofile dal file WORKSTN.

Figura 2. Specifiche Descrizione dati per un formato record di sottofile
*.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 ..*
AAN01N02N03T.Name++++++RLen++TDpBLinPosFunctions++++++++++++++++++++*
A** CUSTOMER NAME SEARCH
A                                      REF(DSTREF)  1 
A          R SUBFIL                    SFL  2 
A                                      TEXT('Subfile Record')
A            CUST      R           7  3
A            NAME      R           7 10
A            ADDR      R           7 32  3 
A            CITY      R           7 54
A            STATE     R           7 77
A*
Le specifiche di descrizione dei dati (DDS) per un formato record di sottofile descrivono i record nel sottofile:
1
Gli attributi per i campi nel formato record sono contenuti nel file di riferimento del campo DSTREF come specificato dalla parola chiave REF.
2
La parola chiave SFL identifica il formato record come sottofile.
3
Le voci di riga e posizione definiscono la posizione dei campi sul display.