Vai al contenuto

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 con asn025-in-mod valorizzato): 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.k01
  • asnskpag.k02 (per askp-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)

  1. Crea/riapre il file di transito cogtrans (nome temporaneo #$asn025.<oper>; su errore 93 messaggio m-asn025-3-1).
  2. Scorre ASNSKPAG per il modello (chiave chia2 su askp-mod-nome) e riempie la griglia (tm-grid-dati): numero pagina (tm-pag e tm-pag-prec), descrizione, flag conformita' (default "N"), flag verifica, sequenza. Massimo k-max-ele-tab = 500 righe.
  3. 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:

  1. rilegge tutte le pagine del modello scrivendole in cogtrans (in ordine di chiave);
  2. rilegge cogtrans e riassegna askp-seq progressiva a ciascuna pagina (rwr-asnskpag), sincronizzando la chiave con x-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 combinazione conformita' = "S" con verifica = "F" (messaggio m-asn025-21).

Validazioni

  • Modello (x-controlla-tm-mod): obbligatorio (m-asn025-12-1) e deve esistere in ASNSKMOD (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 in ASNSKINF (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 cogtrans di 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 -> SWN042 ESPORTA-KEY) e' invocata dopo ogni write/rewrite/delete di pagina.