ASN025 - Pagine scheda di stima¶
Sorgente: cbl/asn025.cbl (1.225 righe) | Tipo: Programma interattivo con griglia editabile, file di transito; utilizzabile standalone o come chiamato (selezione pagina)
Menu: Assist 2.0 > Archivi > Strumenti > Pagine scheda di stima
Scopo¶
Gestisce l'elenco delle pagine (ASNSKPAG) associate a un modello di scheda di stima/check-list (ASNSKMOD). Per un modello selezionato mostra in griglia le sue pagine (numero pagina, descrizione, sequenza, flag di conformita' e flag di verifica) e ne consente inserimento, modifica, cancellazione e riordino della sequenza.
Il programma opera in due modalita':
- Aggiornamento (
a-modalita = "A", uso standalone da menu): la griglia e' editabile, con aggiunta riga (Ctrl+A), eliminazione riga (Ctrl+E) e salvataggio (F3). - Selezione (
a-modalita = "S", quando chiamato conasn025-in-modvalorizzato): la griglia e' in sola lettura e serve a scegliere una pagina, restituita al chiamante. F3 alterna selezione/modifica.
Il salvataggio ricalcola le sequenze delle pagine e sincronizza le chiavi verso KPN/Areagate (SWN042).
Interfaccia chiamato (linkage)¶
util-asn025 (copybook utilasn025.cpy):
| Campo | Uso |
|---|---|
asn025-called / asn025-caller |
Identificativi chiamante/chiamato |
asn025-in-mod |
Codice modello di ingresso: se valorizzato, il programma va direttamente all'elenco pagine di quel modello (salta l'accept del modello) |
asn025-out-cod |
(output) numero pagina selezionata |
asn025-out-des |
(output) descrizione pagina selezionata |
Se asn025-called = k-program-id e asn025-caller valorizzato, w-dc-called = "S" (modalita' chiamato): abilita F3 selezione/modifica e Invio per la selezione. Altrimenti F3 aggiorna.
File acceduti¶
Input/lettura¶
| File | Copybook | Uso |
|---|---|---|
| ASNSKMOD | askm-rec |
Modello scheda: validazione codice modello (askm-cod) e descrizione (askm-des) |
| ASNSKINF | aski-rec |
Informazioni associate alle pagine: controllo in cancellazione (una pagina con informazioni collegate non e' cancellabile) e duplicazione informazioni tra pagine |
| ASNSKIN1 | aski1-rec |
Informazioni della pagina "originale" da duplicare (st-asnskin1-notmin) |
Aggiornamento¶
| File | Copybook | Scrittura |
|---|---|---|
| ASNSKPAG | askp-rec |
Pagine del modello. Inserimento (wr-asnskpag), modifica (rwr-asnskpag), cancellazione (del-asnskpag) e ricalcolo sequenza (askp-seq). Chiave secondaria asnskpag.k02 (per askp-mod-nome) |
| ASNSKINF | aski-rec |
Scrittura informazioni duplicate quando una pagina viene clonata da un'altra (vuoi-duplicare) |
Transito¶
| File | Scopo |
|---|---|
| cogtrans (dichiarata manualmente nel sorgente, non da Screens) | Buffer per il riordino delle pagine in fase di salvataggio: memorizza in ordine di lettura le chiavi askp-chia1 (trs-askp-chia1) e ne rilegge la sequenza per riassegnare askp-seq progressiva. File temporaneo con nome #$asn025.<oper> in ext-tmp-dir |
Chiavi secondarie¶
cogtrans.k01asnskpag.k02(peraskp-mod-nome)
Il record cogtrans e' definito manualmente nel sorgente (trs-chia1 numerico + trs-askp-chia1), coerentemente con la convenzione per cui le tabelle di transito non sono gestite da Screens.
Programmi chiamati¶
| Programma | Operazione | Scopo |
|---|---|---|
| ASN029 | (lookup modello) | F8 sul campo modello: ricerca/selezione del modello scheda (asn029-out-cod) |
| ASN026 | (gestione informazioni pagina) | F5 su riga: gestione delle informazioni della pagina selezionata (asn026-in-mod, asn026-in-pag) |
| SWN042 | AGPRG-CALLED / ESPORTA-KEY |
Sincronizzazione della chiave pagina verso KPN/Areagate (paragrafo x-sincronizza-kpn, dal 26/02/2021) |
| GRIDADMN | Personalizzazione griglia (Prepara / SF4) |
Logica di caricamento (a-avanti / a10-loop)¶
- Crea/riapre il file di transito
cogtrans(nome temporaneo#$asn025.<oper>; su errore 93 messaggiom-asn025-3-1). - Scorre
ASNSKPAGper il modello (chiavechia2suaskp-mod-nome) e riempie la griglia (tm-grid-dati): numero pagina (tm-pagetm-pag-prec), descrizione, flag conformita' (default"N"), flag verifica, sequenza. Massimok-max-ele-tab= 500 righe. - Tiene traccia del numero pagina massimo (
w-pag) per assegnare i nuovi numeri.
Logica di salvataggio (b-aggiorna)¶
Per ogni riga di griglia confronta numero pagina attuale (tm-pag) e precedente (tm-pag-prec):
- descrizione vuota +
tm-pag-prec != 0-> cancella (b3-cancella); tm-pag = tm-pag-prec(e != 0) con riga modificata (tm-fl-riga-mod = "S") -> modifica (b2-modifica);- altrimenti -> eventuale cancellazione della precedente + inserimento (
b1-inserisci).
Dopo le operazioni sui record:
- rilegge tutte le pagine del modello scrivendole in
cogtrans(in ordine di chiave); - rilegge
cogtranse riassegnaaskp-seqprogressiva a ciascuna pagina (rwr-asnskpag), sincronizzando la chiave conx-sincronizza-kpn.
L'inserimento (b1-inserisci) e la scrittura (scrivi-asnskpag) gestiscono la collisione di numero pagina incrementando w-pag finche' la write non ha successo. Se la pagina inserita/modificata deriva da una pagina "originale" (tm-pag-orig != 0) viene proposta la duplicazione delle sue informazioni (vuoi-duplicare).
Flag di riga¶
tm-fl-conformita(askp-fl-conformita): flag di conformita' della pagina (default"N").tm-fl-verifica(askp-fl-verifica, introdotto 09/05/2024): flag di verifica. Vincolo (x-controlla-tm-fl-conformita/x-controlla-tm-fl-verifica): non e' ammessa la combinazioneconformita' = "S"converifica = "F"(messaggiom-asn025-21).
Validazioni¶
- Modello (
x-controlla-tm-mod): obbligatorio (m-asn025-12-1) e deve esistere inASNSKMOD(m-asn025-13-1). - Numero pagina (
x-controlla-tm-pag): in inserimento non deve gia' esistere (m-cod-gia-pres). - Descrizione (
x-controlla-tm-des): obbligatoria se la sequenza e' valorizzata (m-des-obb); se descrizione valorizzata e sequenza vuota, la sequenza viene inizializzata alla descrizione. - Sequenza (
x-controlla-tm-seq): obbligatoria se la descrizione e' valorizzata (m-asn025-14-1). - Cancellazione (
c1-ctrl-canc): bloccata se la pagina ha informazioni collegate inASNSKINF(m-asn025-8-1) o se la griglia e' vuota (m-asn025-7-1).
Messaggi principali¶
| ID | Contesto |
|---|---|
m-asn025-2-1 |
Titolo maschera |
m-asn025-3-1 |
Errore apertura file transito (errore 93) |
m-asn025-4-1 |
Utente non abilitato all'inserimento |
m-asn025-5-1 |
Utente non abilitato all'aggiornamento |
m-asn025-6-1 |
Conferma salvataggio modifiche prima di uscire dall'aggiornamento |
m-asn025-7-1 |
Nessuna pagina da cancellare |
m-asn025-8-1 |
Pagina con informazioni collegate: non cancellabile |
m-asn025-9-1 |
Duplicazione informazioni non eseguita |
m-asn025-10-1 / 10-2 |
Pagina non piu' esistente in modifica: conferma ricreazione |
m-asn025-11-1 / 11-2 |
Conferma duplicazione informazioni dalla pagina originale |
m-asn025-12-1 |
Modello obbligatorio |
m-asn025-13-1 |
Modello inesistente |
m-asn025-14-1 |
Sequenza obbligatoria |
m-asn025-15-1 / 16-1 |
Etichette pulsanti custom (F5 informazioni, F1 salva) |
m-asn025-21 |
Combinazione conformita' "S" / verifica "F" non ammessa |
Nota sulla denominazione¶
L'etichetta di menu e' "Pagine scheda di stima". Nell'intestazione del sorgente e nei messaggi il concetto e' reso anche come "modello check-list" (e ASN02D lo chiama esplicitamente "Modello check-list"): si tratta della stessa entita' ASNSKMOD / pagine ASNSKPAG. Il termine "provincia/regione" che compare in alcuni commenti e' un residuo del template di partenza e non riflette la funzione reale (gestione pagine di scheda).
Note implementative¶
- La struttura
cogtransdi transito e' dichiarata manualmente (SELECT + FD +01 trs-rec), non generata da Screens, secondo la convenzione per le tabelle temporanee. - Il ricalcolo della sequenza in due passate (scrittura su transito + rilettura) serve a compattare le sequenze dopo inserimenti/cancellazioni.
- La sincronizzazione KPN (
x-sincronizza-kpn-> SWN042ESPORTA-KEY) e' invocata dopo ogni write/rewrite/delete di pagina.