Vai al contenuto

COGM40 - Aspetti Esteriori

Sorgente: cbl/cogm40.cbl | Tipo: Programma interattivo con griglia | Program-ID: COGM40

Menu:

  • Magazzino > Archivi & Tabelle > Tabelle > Aspetti Esteriori

Scopo

Gestione CRUD della tabella aspetti esteriori (tipo 73 di COGTABEL). La tabella contiene codice (2 caratteri), descrizione e peso in Kg per ogni aspetto esteriore. Il programma supporta sia la modalita' standalone (aggiornamento) sia la modalita' di selezione quando richiamato da un altro programma (tramite linkage util-m40).


Struttura del programma

Flusso principale

  1. Inizializzazione (apri): apertura file, determinazione modalita' (standalone "A" o chiamato "S"), impostazione tasti funzione, preparazione griglia
  2. Caricamento (a10 - a10-loop): scansione sequenziale di COGTABEL con euta-tipo = 73, caricamento in tm-tab (fino a 900 righe)
  3. Griglia (a-grid / a-accept-grid): visualizzazione e navigazione della tabella
  4. Dettaglio (a-riga-dettaglio): accept campi codice, descrizione, peso per inserimento o modifica
  5. Cancellazione (c-cancella): eliminazione record dalla tabella e ricompattazione array

Modalita' operative

Modalita' a-modalita Descrizione
Aggiornamento "A" CRUD completo: inserimento (Ctrl+A), modifica (Invio), eliminazione (Ctrl+E)
Selezione "S" Solo selezione: Invio restituisce il codice in m40-out-cod e chiude

La commutazione tra le modalita' avviene con F3 (solo se il programma e' chiamato, w-dc-called = "S").

Dettaglio riga

L'accept dei campi segue l'ordine:

  1. a-tm-cod - Codice (solo in inserimento; in modifica si salta)
  2. a-tm-des - Descrizione (obbligatoria)
  3. a-tm-peso - Peso in Kg (accept tramite UTILU20)

Alla conferma (a-riga-dettaglio-fine):

  • Validazione campi con x-imposta-conferma
  • Richiesta conferma all'utente
  • Lettura/lock del record su COGTABEL
  • Se inserimento e record gia' esistente: converte in modifica con avviso
  • Se modifica e record cancellato: converte in inserimento con avviso
  • Scrittura con wr-cogtabel o rwr-cogtabel
  • Aggiornamento griglia tramite GRIDADMN

Tabelle e file

File logico Tabella Tipo record Accesso
FEURTAB / COGTABEL COGTABEL euta-tipo = 73 (aspetti esteriori) Indexed, dynamic

Campi del record COGTABEL usati

Campo Mapping Descrizione
euta-tipo Costante k-euta-tipo = 73 Tipo tabella
euta-cod tm-cod (2 char) Codice aspetto esteriore
euta-asp-des tm-des (30 char) Descrizione
euta-asp-peso tm-peso (6.3) Peso in Kg

Struttura in memoria

tab-maschera (array di lavoro)

tm-tab: array di k-max-ele-tab (900) righe
  tm-cod          PIC X(02)       - Codice
  tm-des          PIC X(30)       - Descrizione
  tm-peso         PIC 9(06)V999   - Peso in Kg
tm-pnt:           PIC 9(04)       - Numero righe caricate

grid-record (interscambio con griglia)

grd-cod           PIC X(05)       - Codice (formattato)
grd-des           PIC X(30)       - Descrizione
grd-peso          PIC ZZZZ.ZZ9,999  - Peso editato

COPY incluse

Working-Storage

cogm40.wrk, wstato.cpy, wgrave.cpy, wgrid.cpy, wopenf.cpy, wnscr.cpy, cogazien.cpy, utilgdad.cpy, utilu20.cpy

Linkage

wcont.cpy, wcont1.cpy, utilm40.cpy

Procedure Division

cogm40.prc, stato1.cpy, stato.cpy, winmsg.cpy, grave.cpy, opengen.cpy, mmmask.cpy, utilgrid.cpy


CALL a sottoprogrammi

Programma Scopo
GRIDADMN Gestione griglia (Prepara, Svuota-Tutto, Add-Record, Modify-Record, configurazione colonne)

Interfaccia di chiamata

Il programma e' richiamabile come sottoprogramma tramite linkage util-m40:

  • Input: m40-called = k-program-id, m40-caller = <programma chiamante>
  • Output: m40-out-cod = codice aspetto esteriore selezionato

Note tecniche

  • Il controllo duplicati (x-controlla-duplicati) scansiona l'intero array tm-tab per verificare che il codice inserito non sia gia' presente.
  • La gestione del resize della finestra (z-99-event-form-1) ricalcola le dimensioni della griglia.
  • Il campo peso viene accettato tramite la subroutine UTILU20 (accept numerico con formattazione).
  • Il programma usa PERFORM THRU nei paragrafi c-cancella thru ex-c e c1-ctrl-canc thru ex-c1.