Vai al contenuto

COGW03 - Associazione estensioni file a programmi esterni

Sorgente: cbl/cogw03.cbl | Tipo: Programma interattivo GUI con griglia | Program-ID: COGW03

Menu:

  • Sistema > Configurazione > Estensioni > Generiche
  • Sistema > Configurazione > Estensioni > Locali

Scopo

Gestisce l'associazione tra estensione di file e programma esterno da usare per aprirlo: per ogni estensione (es. pdf, xls, doc) definisce il comando/percorso dell'applicativo di apertura e le eventuali opzioni da passargli. E' il pannello con cui si configura come il gestionale apre i documenti allegati/prodotti in base al loro tipo.

Le associazioni sono memorizzate sul file di configurazione COGCNF (lo stesso store letto da RNEWCONF, gestito dall'editor generale CFG03) sotto:

  • pacchetto "C", gruppo arc-ott;
  • chiave comando-open-ext (il comando di apertura) e chiave opzioni-open-ext (le opzioni), con suddivisione (cfg-param-sub) pari all'estensione del file.

Il programma opera in due modalita' decise dal parametro di avvio wo-parametro (voce di menu):

  • Generiche (parametro vuoto -> dep-tip = spaces): configurazioni valide per tutte le postazioni; i record COGCNF hanno postazione (cfg-post) a spazi. Titolo maschera "Associazione con programmi (generale)".
  • Locali (parametro valorizzato -> dep-tip = "S"): configurazioni specifiche della postazione corrente (ext-postazione); i record COGCNF hanno cfg-post = ext-postazione. Titolo "Associazione con programmi (postazione ...)". In modalita' locale, l'inserimento di una nuova riga puo' proporre (proponi-dati) i valori gia' definiti a livello generale per la stessa estensione.

Nota: l'intestazione storica del sorgente riporta "Gestione configurazione ARC-OTT"; il programma gestisce effettivamente l'apertura file per estensione tramite le chiavi arc-ott/comando-open-ext e opzioni-open-ext.


Struttura del programma

Il programma segue il pattern standard delle maschere Eurocoge a griglia con dettaglio: una griglia (e-tm-tab, gestita via GRIDADMN) elenca le associazioni e un frame di dettaglio consente inserimento/modifica della singola riga. La tabella interna tab-maschera (fino a k-max-ele-tab = 800 elementi) e' l'immagine di lavoro; ogni riga (tm-ele) contiene estensione (tm-sub), comando (tm-comando) e opzioni (tm-opzioni).

Inizializzazione (apri)

z-99-init-program, ctr-abil, rd-azi, open-files. Determina la modalita' (generale/locale) da wo-parametro, imposta il titolo, abilita i tasti funzione (invio modifica, F3 conferma, F5 apri file, Shift-F4 griglia, Ctrl-A aggiungi, Ctrl-E elimina), prepara la griglia (z-prepara-tm-grid) e i controlli.

Caricamento (a4 / carica-griglia)

carica-griglia scandisce COGCNF dai record "C"/arc-ott/comando-open-ext (st-cogcnf-notmin + rdnxt-cogcnf), filtrando per postazione secondo la modalita' (a spazi per le generiche, uguale a ext-postazione per le locali). Per ogni estensione trovata carica il comando in tm-comando; poi, in carica-griglia-fine, per ciascuna riga rilegge la chiave opzioni-open-ext (rd-cogcnf) per popolare tm-opzioni (in modalita' locale, se manca il record di postazione, ripiega sul record generale). Costruisce infine la griglia (z-costruisci-grid).

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

Sulla griglia: invio apre la riga in modifica (a-operazione = "M"), Ctrl-A aggiunge una riga ("I"), Ctrl-E elimina previa conferma (c-cancella). Shift-F4 apre la personalizzazione colonne (GRIDADMN). Le abilitazioni inserimento/modifica/cancellazione sono soggette ai flag w-abi-ins / w-abi-agg / w-abi-del.

Riga di dettaglio (a-riga-dettaglio -> a-tm-sub / a-tm-comando / a-tm-opzioni)

Accetta in sequenza:

  • Estensione (a-tm-sub, chiave della suddivisione): editabile solo in inserimento; in inserimento verifica che l'estensione non esista gia' (x-controlla-tm-sub rilegge COGCNF comando-open-ext);
  • Comando/percorso (a-tm-comando, obbligatorio): con F5 apre il dialogo di selezione file C$OPENSAVEBOX per scegliere l'eseguibile/percorso; in inserimento locale con campi vuoti propone i valori generali (proponi-dati);
  • Opzioni (a-tm-opzioni, facoltative).

Salvataggio (a-fine-dettaglio)

Alla conferma (F3) rilegge il record comando-open-ext per l'estensione (rd-cogcnf-lk) per stabilire se e' un vero inserimento o una modifica, poi scrive/riscrive su COGCNF sia la chiave comando-open-ext (con cfg-value = tm-comando) sia la chiave opzioni-open-ext (con cfg-value = tm-opzioni); in modalita' locale valorizza cfg-post = ext-postazione. Aggiorna infine la griglia (GRIDADMN Add/Modify-Record).

Cancellazione (c-cancella)

Rilegge in lock ed elimina entrambe le chiavi COGCNF associate all'estensione (comando-open-ext e, se presente, opzioni-open-ext).


Tabelle e file

File logico Chiave / accesso Descrizione
FEURTAB - Tabella di sistema (aperta via cogfiles.cpy)
COGCNF cfg-chia1 con cfg-pack="C", cfg-prog="arc-ott", cfg-param-key in {comando-open-ext, opzioni-open-ext}, cfg-param-sub = estensione, cfg-post = postazione (locali) Store delle configurazioni: comando e opzioni di apertura per estensione

Le routine di I/O su COGCNF (st-cogcnf-notmin, rdnxt-cogcnf, rd-cogcnf, rd-cogcnf-lk, wr-cogcnf, rwr-cogcnf, del-cogcnf) sono i gestori tabella generati dallo Screen Designer, inclusi nella catena di COPY (cogw03.prc).


COPY incluse

Working-Storage

cogw03.wrk, wgrave.cpy, wnscr.cpy, wopenf.cpy, wstato.cpy, cogazien.cpy, wgrid.cpy, utilgdad.cpy, opensave.def

Linkage

wcont.cpy, wcont1.cpy

Procedure Division

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


CALL a sottoprogrammi

Programma Scopo
GRIDADMN Gestione griglia (Prepara, Svuota-Tutto, Add/Modify-Record) e personalizzazione colonne (Shift-F4)
C$OPENSAVEBOX Dialogo di selezione del file/percorso del programma di apertura (F5 sul campo comando)

Configurazioni RNEWCONF

COGW03 non legge configurazioni via RNEWCONF: opera direttamente sul file COGCNF (lettura/scrittura tramite i verbi rd-/wr-/rwr-/del-cogcnf), scrivendo proprio le chiavi che gli altri programmi leggeranno via RNEWCONF.

Chiavi gestite (pacchetto "C", gruppo arc-ott):

Chiave Suddivisione Uso
comando-open-ext estensione file Comando/percorso del programma esterno di apertura per quell'estensione
opzioni-open-ext estensione file Opzioni/parametri passati al programma di apertura

La distinzione generale/locale e' data dal campo postazione cfg-post del record (a spazi = generale; = ext-postazione = locale).


Note tecniche

  • Due voci di menu, un solo programma: le voci "Generiche" e "Locali" lanciano lo stesso COGW03; il discriminante e' il parametro di menu wo-parametro (vuoto = generale, valorizzato = locale della postazione corrente).
  • Fallback locale -> generale: in modalita' locale, sia in caricamento delle opzioni sia in inserimento di una nuova associazione, se non esiste il record specifico di postazione il programma ripiega sui valori generali (proponi-dati / lettura con cfg-post a spazi).
  • Estensione = chiave: l'estensione e' la suddivisione (cfg-param-sub) della configurazione; e' modificabile solo in inserimento e non puo' duplicare un'associazione gia' esistente.
  • Coppia di record per riga: ogni associazione di griglia corrisponde a due record COGCNF (comando e opzioni); inserimento, modifica e cancellazione operano su entrambi.
  • Il file selezionato con C$OPENSAVEBOX viene memorizzato in minuscolo (function lower-case).