COGE64 — Gestione Sportelli Bancari¶
Sorgente: cbl/coge64.cbl | Program-ID: COGE64 | Tipo: Programma di gestione tabella
Menu: Contabilita' > Archivi & Tabelle > Tabelle > Sportelli Bancari
Scopo¶
Gestione dell'archivio banche e sportelli bancari (inserimento, modifica, consultazione, cancellazione). Opera su due livelli: banca (solo ABI) e sportello (ABI+CAB). Utilizza il file COGBNCA con tipo record "B" (banca) e "S" (sportello).
Struttura della maschera¶
Screen Designer con coge64-01.scr. La maschera e' organizzata con un approccio a livelli: prima si inserisce ABI/CAB, poi il sistema mostra i campi della banca o dello sportello in base a cosa esiste.
Campi di ricerca¶
| Campo | Variabile | Tipo | Descrizione |
|---|---|---|---|
| ABI | tm-abi |
9(05) | Codice ABI della banca |
| CAB | tm-cab |
9(05) | Codice CAB dello sportello |
Campi banca (tipo "B")¶
| Campo | Variabile | Tipo | Descrizione |
|---|---|---|---|
| Nome Banca | tm-ban-banca |
x(60) | Denominazione della banca |
| ABI Acquirente | tm-ban-acq |
9(05) | Codice ABI banca acquirente |
| ABI Assuntrice | tm-ban-ass |
9(05) | Codice ABI banca assuntrice |
Campi sportello (tipo "S")¶
| Campo | Variabile | Tipo | Descrizione |
|---|---|---|---|
| Sportello | tm-spo-sportello |
x(60) | Denominazione dello sportello |
| Localita' | tm-spo-loc |
x(30) | Localita' |
| Indirizzo | tm-spo-ind |
x(30) | Indirizzo |
| CAP | tm-spo-cap |
9(05) | Codice avviamento postale |
Logica di elaborazione¶
Flusso principale¶
apri: apertura file, init, impostazione tasti funzione (F3 conferma, F3 aggiorna, F4 cancella, F8 aiuto)a4: inizializzazionetab-maschera, setfl-ins-var = "A"- Accept ABI (
a-tm-abi): - F8: ricerca banca via COGU03W (
cerca-banca-win) - Conferma:
x-controlla-tm-abi→carica-banca - Accept CAB (
a-tm-cab): - F8: ricerca sportello via COGU03W (
cerca-sportello-win) - F4: cancellazione banca (se ABI esistente e CAB = 0) o sportello
- Conferma:
x-controlla-tm-cab→carica-sportello a-conferma-dati: validazione complessiva- Se ABI esiste e CAB = 0 →
a-tm-ban-banca(modifica/inserimento banca) - Se ABI esiste e CAB nuovo →
a-tm-spo-sportello(inserimento sportello) - Se ABI nuovo →
a-tm-ban-banca(inserimento banca)
Livello Banca¶
Accept sequenziale:
1. a-tm-ban-banca: nome banca (obbligatorio)
2. a-tm-ban-acq: ABI acquirente (verifica esistenza e diversita' da ABI corrente)
3. a-tm-ban-ass: ABI assuntrice (verifica esistenza e diversita' da ABI corrente)
4. a-conferma-banca: validazione finale, conferma, write/rewrite
Livello Sportello¶
Accept sequenziale:
1. a-tm-spo-sportello: nome sportello (obbligatorio)
2. a-tm-spo-loc: localita'
3. a-tm-spo-ind: indirizzo
4. a-tm-spo-cap: CAP
5. a-conferma-sportello: validazione finale, conferma, write/rewrite
Caricamento dati (carica-banca, carica-sportello)¶
carica-banca:
1. Inizializza bnc-rec, imposta tm-tipo = "B", tm-cab = 0
2. st-cogbnca-notmin → rdnxt-cogbnca
3. Se bnc-abi = tm-abi: fl-abi-ok = "S", popola tm-ban-banca, tm-ban-acq, tm-ban-ass
4. Altrimenti: fl-abi-ok = "N" (banca non esiste)
carica-sportello:
1. Imposta tm-tipo = "S", chiave bnc-chia1 da tm-dati-r
2. rd-cogbnca (read diretto)
3. Se trovato: fl-cab-ok = "S", popola tm-spo-sportello, tm-spo-loc, tm-spo-ind, tm-spo-cap
4. Altrimenti: fl-cab-ok = "N" (sportello non esiste)
carica-banca-acq, carica-banca-ass: verificano che l'ABI indicato esista come banca (tipo "B") e sia diverso dall'ABI corrente.
Inserimento/Aggiornamento (inserisci-dati, aggiorna-dati)¶
Inserimento:
- Se fl-abi-ok = "N": crea record tipo "B" con ABI, nome, ABI acq, ABI ass
- Se fl-abi-ok = "S" e fl-cab-ok = "N": crea record tipo "S" con ABI, CAB, sportello, localita', indirizzo, CAP
Aggiornamento: rewrite del record esistente con i nuovi valori.
Cancellazione¶
Due punti di cancellazione:
- cancella-banca: da F4 su campo CAB con banca selezionata e CAB = 0
- cancella-sportello: da F4 su campo sportello con sportello selezionato
Entrambi richiedono conferma (acc-conf).
File utilizzati¶
| File | Accesso | Scopo |
|---|---|---|
| FEURTAB | Lettura | Tabella nomi file |
| COGBNCA | I-O | Archivio banche e sportelli (chiave: tipo+ABI+CAB) |
+ file da coge64.select/coge64.fd |
Altri file dichiarati nella screen |
Programmi chiamati¶
| Programma | Scopo |
|---|---|
| COGU03W | Ricerca banca (cerca-banca-win) e sportello (cerca-sportello-win) con F8 |
Copybook principali¶
coge64.select, coge64.fd, coge64.wrk, coge64.decla, coge64-01.scr, cogfiles.cpy, wgrave.cpy, wnscr.cpy, wopenf.cpy, wstato.cpy, cogazien.cpy, utilcogu03w.cpy, wcont.cpy, wcont1.cpy
Struttura chiave COGBNCA¶
La chiave primaria bnc-chia1 e' composta da:
| Componente | Tipo | Valori |
|---|---|---|
bnc-tipo |
x(01) | "B" = banca, "S" = sportello |
bnc-abi |
9(05) | Codice ABI |
bnc-cab |
9(05) | Codice CAB (0 per banca) |
Per le banche (tipo "B"), il CAB e' sempre 0. Per gli sportelli (tipo "S"), il CAB identifica la filiale specifica.
Flag di stato¶
| Flag | Descrizione |
|---|---|
fl-abi-ok |
"S" = banca trovata in archivio, "N" = banca non esistente |
fl-cab-ok |
"S" = sportello trovato, "N" = sportello non esistente |
fl-acq-ok |
"S" = ABI acquirente valido |
fl-ass-ok |
"S" = ABI assuntrice valido |
fl-ins-var |
"I" = inserimento, "A" = aggiornamento |
Gestione eventi form¶
Il programma gestisce tre contesti di form con exception handler separati:
| Handler | Contesto |
|---|---|
z-99-exception-form |
Ricerca ABI/CAB → conferma dati |
z-99-exception-form-banca |
Campi banca → conferma banca |
z-99-exception-form-sportello |
Campi sportello → conferma sportello (+ F4 cancellazione) |
Il test mouse (x-test-mouse) gestisce tre range di control-id:
- 101-199: campi ricerca (ABI, CAB)
- 201-299: campi banca (nome, ABI acq, ABI ass)
- 301-399: campi sportello (sportello, localita', indirizzo, CAP)
Note¶
- Il programma e' stato convertito dal character-mode al GUI da Claudio il 19/08/2005.
- La validazione ABI acquirente e assuntrice verifica che il codice sia diverso dall'ABI della banca corrente (
bnc-abi not = tm-abi). - Il flusso di navigazione tra livello banca e livello sportello dipende dai flag
fl-abi-okefl-cab-okdeterminati dalla lettura iniziale. - Non utilizza griglie: e' un programma di gestione singolo record con flusso accept sequenziale.