Vai al contenuto

COGT25 - Periferiche per postazione

Sorgente: cbl/cogt25.cbl | Tipo: Programma interattivo GUI con griglia (gestione tabella) | Program-ID: COGT25

Menu:

  • Sistema > Configurazione > Stampanti

Scopo

Gestisce l'abbinamento tra una postazione di lavoro e le periferiche che su di essa possono essere utilizzate. Per la postazione selezionata mostra in griglia l'elenco delle periferiche abilitate; permette di aggiungere e rimuovere righe di abbinamento. Ogni riga collega la postazione (PRNTPOST) a una periferica (PRNTPERF) e ne visualizza a corredo la stampante collegata (PRNTSTMP).

I dati risiedono nella tabella di raccordo PRNTPFPS (periferiche abilitate per postazione), che contiene solo la coppia postazione+periferica; descrizioni di periferica e stampante sono lette dalle rispettive anagrafiche per la sola visualizzazione.

Il programma puo' operare come funzione autonoma da menu oppure essere richiamato in modalita' selezione da un chiamante (variabile w-dc-called, oggi predisposta ma con il blocco di attivazione commentato in apri): in modalita' selezione la griglia consente di scegliere una periferica e restituirla al chiamante.


Struttura del programma

Il programma segue il pattern standard delle maschere Eurocoge a due livelli: griglia di elenco (a-grid) piu' riga di dettaglio (a-riga-dettaglio), con la griglia gestita da GRIDADMN.

Inizializzazione (apri)

ctr-abil, z-99-init-program, open-files, rd-azi; abilitazione dei tasti funzione previsti (Invio, F3 conferma, F8 aiuto, Shift-F4 griglia, Ctrl-A aggiungi, Ctrl-E elimina); lettura lingua e titolo maschera (x-carica-lingua, rd-msk-pop); impostazione della modalita' (a-modalita = "S" se richiamato, altrimenti "A"); preparazione griglia (z-prepara-tm-grid) e controlli (z-costruisci-controlli).

Selezione postazione (a-tm-pst-cod)

Accept del codice postazione con:

  • F8: help postazioni tramite COGT27 (restituisce t27-out-cod in tm-pst-cod);
  • validazione x-controlla-tm-pst-cod: la postazione deve esistere in PRNTPOST (rd-prntpost), altrimenti errore; letta la descrizione (ptpo-des) in tm-pst-des.

Confermata la postazione, a-inizio-dati esegue carica-dati e costruisce la griglia.

Caricamento righe (carica-dati)

Scansione di PRNTPFPS a partire da ptps-pst = tm-pst-cod (st-prntpfps-notmin + rdnxt-prntpfps), con rottura quando ptps-pst cambia. Per ogni periferica trovata (ptps-prf):

  • legge PRNTPERF (rd-prntperf) per descrizione (ptpf-des) e stampante collegata (ptpf-stm);
  • legge PRNTSTMP (rd-prntstmp) per la descrizione della stampante (ptst-des).

Le righe sono accumulate in tm-tab (max k-max-ele-tab = 900).

Griglia (a-grid / a-accept-grid)

Navigazione con GRIDADMN. Da qui:

  • F3 commuta tra modalita' Aggiornamento e Selezione;
  • Ctrl-A apre il dettaglio in inserimento (a-operazione = "I");
  • Ctrl-E elimina la riga corrente previa conferma (c1-ctrl-canc, c-cancella);
  • Invio in modalita' selezione restituisce la periferica al chiamante (ramo commentato).

Riga di dettaglio (a-riga-dettaglio / a-tm-prf-cod)

Accept del codice periferica con:

  • F8: help periferiche tramite COGT24 (restituisce t24-out-cod in tm-prf-cod);
  • validazione x-controlla-tm-prf-cod: la periferica deve esistere in PRNTPERF; vengono lette descrizione, stampante collegata e descrizione stampante; se in inserimento la coppia postazione+periferica esiste gia' in PRNTPFPS (rd-prntpfps-lk) l'inserimento e' rifiutato.

Conferma / salvataggio (a-riga-dettaglio-fine)

Con F3 conferma: aggiorna la griglia via GRIDADMN (Add-Record / Modify-Record), quindi scrive su PRNTPFPS la coppia ptps-pst (postazione) + ptps-prf (periferica) con wr-prntpfps (inserimento) o rwr-prntpfps (riscrittura). Il controllo rd-prntpfps-lk immediatamente precedente riallinea l'operazione tra "I" e "M" a seconda della presenza effettiva del record.

Chiusura (fine / z-chiudi)

z-close-files, chiusura finestra, z-99-exit-program, exit program.


Tabelle e file

File logico Chiave / accesso Descrizione
FEURTAB - Tabella di sistema
PRNTPFPS primaria ptps-chia1 (ptps-pst + ptps-prf) Periferiche abilitate per postazione (tabella di raccordo postazione↔periferica)
PRNTPOST ptpo-cod Anagrafica postazioni di lavoro (descrizione ptpo-des)
PRNTPERF ptpf-cod Anagrafica periferiche (descrizione ptpf-des, stampante collegata ptpf-stm)
PRNTSTMP ptst-cod Anagrafica stampanti (descrizione ptst-des)

COPY incluse

Working-Storage

cogt25.wrk, wgrave.cpy, wgrid.cpy, wnscr.cpy, wopenf.cpy, wstato.cpy, cogazien.cpy, utilgdad.cpy, utilt24.cpy, utilt27.cpy

Linkage

wcont.cpy, wcont1.cpy

Procedure Division

cogt25.decla, cogt25-01.scr (screen), stato.cpy, stato1.cpy, winmsg.cpy, grave.cpy, opengen.cpy, mmmask.cpy, utilgrid.cpy, cogt25.prc


CALL a sottoprogrammi

Programma Scopo
COGT27 Help / selezione postazione di lavoro (F8 su codice postazione)
COGT24 Help / selezione periferica (F8 su codice periferica)
GRIDADMN Gestione griglia (Prepara, Svuota-Tutto, Add-Record, Modify-Record)

I gestori delle tabelle indicizzate (rd-prntpost, rd-prntperf, rd-prntstmp, st-prntpfps-notmin, rdnxt-prntpfps, rd-prntpfps-lk, wr-prntpfps, rwr-prntpfps, del-prntpfps) sono i gestori tabella generati (Y*), richiamati via PERFORM tramite le COPY di procedura.


Configurazioni RNEWCONF

Il programma non legge configurazioni RNEWCONF: non include utilncnf.cpy e non contiene un paragrafo x99-confi. Il comportamento e' interamente determinato dal contenuto delle tabelle stampanti (PRNTPFPS/PRNTPOST/PRNTPERF/PRNTSTMP).


Note tecniche

  • Tabella di raccordo minimale: PRNTPFPS memorizza solo la coppia postazione+periferica; tutte le descrizioni mostrate in griglia (periferica, stampante) sono derivate a runtime dalle anagrafiche e non persistite.
  • Coerenza operazione I/M: prima della scrittura, rd-prntpfps-lk verifica l'effettiva presenza del record e riallinea a-operazione ("I"→"M" se gia' presente, "M"→"I" se scomparso), evitando errori di chiave duplicata o record inesistente.
  • Modalita' richiamata: il supporto alla modalita' selezione (w-dc-called = "S", tasti F3-selezione/F3-modifica e ritorno t25-out-cod/t25-out-des) e' predisposto nel codice ma attualmente commentato nel paragrafo apri e nel ramo Invio di a-accept-grid.
  • Limite griglia: massimo 900 righe per postazione (k-max-ele-tab); al raggiungimento viene mostrato m-tabella-piena e la scansione si interrompe.