summaryrefslogtreecommitdiff
path: root/src/FYBA/FYLS.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/FYBA/FYLS.cpp')
-rw-r--r--src/FYBA/FYLS.cpp678
1 files changed, 678 insertions, 0 deletions
diff --git a/src/FYBA/FYLS.cpp b/src/FYBA/FYLS.cpp
new file mode 100644
index 0000000..e4261fc
--- /dev/null
+++ b/src/FYBA/FYLS.cpp
@@ -0,0 +1,678 @@
+/* == AR 891104 ========================================== */
+/* STATENS KARTVERK - FYSAK-PC */
+/* Fil: fyls.c */
+/* Innhold: Serienummer system for fysak-pc */
+/* ======================================================= */
+
+#include "stdafx.h"
+
+#include <ctype.h>
+
+
+/* Globale variabler */
+extern LC_SYSTEMADM Sys;
+
+
+/*
+AR-910930
+CH LS_Indx Oppdater indekstabellen
+CD =============================================================================
+CD Formål:
+CD Oppdater søketabellen for serienummer.
+CD
+CD Parametre: ingen
+CD
+CD Bruk:
+CD LS_Indx();
+================================================================================
+*/
+void LS_Indx(void)
+{
+ long lSnr = LC_GetSn();
+
+ /* Legg inn snr i tabellen og oppdaterer max snr for filen */
+ LS_PutSn(Sys.GrId.pFil,Sys.GrId.lNr,lSnr);
+}
+
+
+/*
+AR-910930
+CH LC_SBSn Sett søkegrense for serienummer
+CD ==========================================================================
+CD Formål:
+CD Setter søkegrenser for serienummersøk.
+CD
+CD Parametre:
+CD Type Navn I/U Forklaring
+CD --------------------------------------------------------------------------
+CD LC_SNR_ADM * pSnrAdm iu Peker til statusblokk for serienummersøk
+CD LC_FILADM * pFil i Peker til FilAdm
+CD long lMinSnr i Fra og med serienummer
+CD long lMaxSnr i Til og med serienummer
+CD
+CD Bruk:
+CD LC_SNR_ADM SnrAdm;
+CD LC_SBSn(&SnrAdm,pFil,lMinSnr,lMaxSnr);
+=============================================================================
+*/
+SK_EntPnt_FYBA void LC_SBSn(LC_SNR_ADM * pSnrAdm,LC_FILADM *pFil,long lMinSnr,long lMaxSnr)
+{
+ /* LO_TestFilpeker(pFil,"LC_SBSn"); */
+ LO_TestFilpeker(pFil,"SBSn");
+
+ pSnrAdm->pFil = pFil;
+ pSnrAdm->lMinSnr = lMinSnr;
+ pSnrAdm->lMaxSnr = lMaxSnr;
+}
+
+
+/*
+AR-911118
+CH LC_FiSn Finn gruppenummer for et serienummer
+CD ==========================================================================
+CD Formål:
+CD Finn gruppenummer for et gitt serienummer i søkeområdet for serienummer.
+CD Endrer IKKE "current gruppe".
+CD
+CD Parametre:
+CD Type Navn I/U Forklaring
+CD -----------------------------------------------------------------------------
+CD LC_FILADM * pFil i Peker til FilAdm
+CD long lSnr i Serienummer som skal finnes
+CD LC_BGR * pBgr u Gruppenummer i basen
+CD short sstat r Søkestatus (UT_TRUE=Funnet, UT_FALSE=Ingen funnet)
+CD
+CD Bruk:
+CD sstat = LC_FiSn(pFil,lSnr,&Bgr);
+================================================================================
+*/
+SK_EntPnt_FYBA short LC_FiSn(LC_FILADM *pFil,long lSnr,LC_BGR * pBgr)
+{
+ /* LO_TestFilpeker(pFil,"LC_FiSn"); */
+ LO_TestFilpeker(pFil,"FiSn");
+
+ pBgr->pFil = pFil;
+ pBgr->lNr = LI_GetSnr(pFil,lSnr);
+
+ /* Ukjent serienummer ==> */
+ if (pBgr->lNr == INGEN_GRUPPE) return UT_FALSE;
+
+ return UT_TRUE;
+}
+
+
+/*
+AR-91118
+CH LC_MoveSn Flytt til gruppenummer for et serienummer
+CD ==========================================================================
+CD Formål:
+CD Finn gruppenummer for et gitt serienummer i søkeområdet for serienummer.
+CD Intern "aktuellt serienummer" blir endret, slik at videre søk med
+CD neste/forrige nå tar utgangspunkt i dette serienummer.
+CD (Bare hvis snr er funnet).
+CD
+CD Parametre:
+CD Type Navn I/U Forklaring
+CD -----------------------------------------------------------------------------
+CD LC_SNR_ADM * pSnrAdm iu Peker til statusblokk for serienummersøk
+CD long lSnr i Serienummer som skal finnes
+CD LC_BGR * pBgr u Gruppenummer i basen
+CD short sstat r Søkestatus (UT_TRUE=Funnet, UT_FALSE=Ingen funnet)
+CD
+CD Bruk:
+CD sstat = LC_MoveSn(pSnrAdm,snr,&Bgr);
+================================================================================
+*/
+SK_EntPnt_FYBA short LC_MoveSn(LC_SNR_ADM * pSnrAdm,long lSnr,LC_BGR * pBgr)
+{
+ /* LO_TestFilpeker(pSnrAdm->pFil,"LC_MoveSn"); */
+ LO_TestFilpeker(pSnrAdm->pFil,"MoveSn");
+
+ pBgr->pFil = pSnrAdm->pFil;
+ pBgr->lNr = LI_GetSnr(pSnrAdm->pFil,lSnr);
+
+ /* Ukjent serienummer ==> */
+ if (pBgr->lNr == INGEN_GRUPPE) return UT_FALSE;
+
+ pSnrAdm->lAktSnr = lSnr;
+
+ return UT_TRUE;
+}
+
+
+/*
+AR-910930
+CH LC_FiArraySn Finn gruppenummer for flere serienummer
+CD ==========================================================================
+CD Formål:
+CD Finner gruppenummer for tabell med serienummer.
+CD Endrer IKKE "current gruppe".
+CD Serienummertabellen kan være "rå" slik den kommer fra GetRef. Linjer med
+CD start øy og slutt øy overses.
+CD
+CD Parametre:
+CD Type Navn I/U Forklaring
+CD -----------------------------------------------------------------------------
+CD LC_FILADM *pFil i Peker til FilAdm
+CD short antall i Antall linjer brukt i serienummertabellen
+CD long *snr i Tabell med serienummer som skal finnes
+CD long *bgr u Tabell med gruppenummer funnet
+CD (INGEN_GRUPPE = ikke funnet)
+CD
+CD Bruk:
+CD LC_FiArraySn(pFil,antall,snr,bgr);
+================================================================================
+*/
+SK_EntPnt_FYBA void LC_FiArraySn(LC_FILADM *pFil,short antall,long *snr,long *bgr)
+{
+ short s;
+
+ LO_TestFilpeker(pFil,"LC_FiArraySn");
+
+ /* Søk gjennom hele serienummertabellen */
+ for (s=0; s<antall; s++) {
+ if (snr[s] == START_OY || snr[s] == SLUTT_OY) {
+ bgr[s] = INGEN_GRUPPE;
+
+ } else {
+ bgr[s] = LI_GetSnr(pFil,labs(snr[s]));
+ } /* endif */
+ }
+}
+
+
+/*
+AR-911022
+CH LC_FASn Finn alle serienummer
+CD ==========================================================================
+CD Formål:
+CD Finner alle grupper i fil/serienummer søkeområdet og merker i kolonne
+CD BT_SNRSOK i brukttabellen.
+CD
+CD Parametre:
+CD Type Navn I/U Forklaring
+CD --------------------------------------------------------------------------
+CD LC_SNR_ADM * pSnrAdm i Peker til statusblokk for serienummersøk
+CD long antall r Antall grupper funnet.
+CD
+CD Bruk:
+CD antall_funnet = LC_FASn(&SnrAdm);
+=============================================================================
+*/
+SK_EntPnt_FYBA long LC_FASn(LC_SNR_ADM * pSnrAdm)
+{
+ short ngi;
+ long nko;
+ unsigned short info;
+ LC_BGR AktBgr,Bgr;
+ long lSnr,lGrNr;
+ long lAntall = 0;
+ long lMaxSnr = min(pSnrAdm->pFil->lMaxSnr, pSnrAdm->lMaxSnr);
+
+
+ /* LO_TestFilpeker(pSnrAdm->pFil,"LC_FASn"); */
+ LO_TestFilpeker(pSnrAdm->pFil,"FASn");
+
+ /* Husk aktuell gruppe */
+ AktBgr = Sys.GrId;
+
+ /* Blanker brukttabellen */
+ LI_EraseBt(BT_SNRSOK,BT_SNRSOK);
+
+ /* Sjekker alle serienummer i søkeområdet */
+ Bgr.pFil = pSnrAdm->pFil;
+ for (lSnr=pSnrAdm->lMinSnr; lSnr<=lMaxSnr; lSnr++) {
+ if ((lGrNr = LI_GetSnr(pSnrAdm->pFil,lSnr)) != INGEN_GRUPPE) {
+ Bgr.lNr = lGrNr;
+ LC_RxGr(&Bgr,LES_OPTIMALT,&ngi,&nko,&info);
+ lAntall += LC_MerkGr(BT_SNRSOK,1); /* Tilslag */
+ }
+ }
+
+ /* Les tilbake aktuell gruppe */
+ if (AktBgr.lNr != INGEN_GRUPPE) {
+ LC_RxGr(&AktBgr,LES_OPTIMALT,&ngi,&nko,&info);
+ }
+
+ return lAntall;
+}
+
+
+/*
+AR-911022
+CH LC_FFSn Finn første serienummer
+CD =============================================================================
+CD Formål:
+CD Finner første gruppe i fil/serienummer søkeområdet.
+CD
+CD Parametre:
+CD Type Navn I/U Forklaring
+CD -----------------------------------------------------------------------------
+CD LC_SNR_ADM * pSnrAdm iu Peker til statusblokk for serienummersøk
+CD LC_BGR * pBgr u Gruppenummer
+CD short sstat r Søkestatus (UT_TRUE=Funnet, UT_FALSE=Ingen funnet)
+CD
+CD Bruk:
+CD sstat = LC_FFSn(&SnrAdm,&Bgr);
+================================================================================
+*/
+SK_EntPnt_FYBA short LC_FFSn(LC_SNR_ADM * pSnrAdm,LC_BGR * pBgr)
+{
+ long lSnr,lGrNr;
+ long lMaxSnr;
+
+ if (pSnrAdm->pFil == NULL) {
+ LC_Error(5,"(LC_FFSn)","Ingen aktuelt fil.");
+ return UT_FALSE;
+ }
+
+ /* LO_TestFilpeker(pSnrAdm->pFil,"LC_FFSn"); */
+ LO_TestFilpeker(pSnrAdm->pFil,"FFSn");
+
+ lMaxSnr = min(pSnrAdm->pFil->lMaxSnr, pSnrAdm->lMaxSnr);
+
+ /* Sjekker fra starten av søkeområdet */
+ for (lSnr=pSnrAdm->lMinSnr; lSnr<=lMaxSnr; lSnr++) {
+ if ((lGrNr = LI_GetSnr(pSnrAdm->pFil,lSnr)) != INGEN_GRUPPE) {
+ /* Tilslag ==> */
+ pBgr->pFil = pSnrAdm->pFil;
+ pBgr->lNr = lGrNr;
+ pSnrAdm->lAktSnr = lSnr;
+ return UT_TRUE;
+ }
+ }
+
+ return UT_FALSE;
+}
+
+
+/*
+AR-911022
+CH LC_FFSnBt Finn første serienummer med tilleggskrav
+CD ==========================================================================
+CD Formål:
+CD Finner første gruppe som er merka i gitt kolonne i brukttabellen.
+CD
+CD Parametre:
+CD Type Navn I/U Forklaring
+CD --------------------------------------------------------------------------
+CD LC_SNR_ADM * pSnrAdm i Peker til statusblokk for serienummersøk
+CD short kolonne i Kolonne i brukt-tabellen som skal sjekkes
+CD LC_BGR * pBgr u Gruppenummer
+CD short sstat r Søkestatus (UT_TRUE=Funnet, UT_FALSE=Ingen funnet)
+CD
+CD Bruk:
+CD sstat = LC_FFSnBt(&SnrAdm,BT_GEOSOK,&Bgr);
+=============================================================================
+*/
+SK_EntPnt_FYBA short LC_FFSnBt(LC_SNR_ADM * pSnrAdm,short kolonne,LC_BGR * pBgr)
+{
+ long lSnr,lGrNr;
+ LC_BGR Bgr;
+ long lMaxSnr;
+
+ /* LO_TestFilpeker(pSnrAdm->pFil,"LC_FFSnBt"); */
+ LO_TestFilpeker(pSnrAdm->pFil,"FFSnBt");
+
+ lMaxSnr = min(pSnrAdm->pFil->lMaxSnr, pSnrAdm->lMaxSnr);
+
+ /* Sjekker fra starten av søkeområdet */
+ for (lSnr=pSnrAdm->lMinSnr; lSnr<=lMaxSnr; lSnr++) {
+ if ((lGrNr = LI_GetSnr(pSnrAdm->pFil,lSnr)) != INGEN_GRUPPE) {
+ Bgr.pFil = pSnrAdm->pFil;
+ Bgr.lNr = lGrNr;
+ if (LC_GetBt(&Bgr,kolonne)) { /* Merka? */
+ /* Tilslag ==> */
+ pBgr->pFil = pSnrAdm->pFil;
+ pBgr->lNr = lGrNr;
+ pSnrAdm->lAktSnr = lSnr;
+ return UT_TRUE;
+ }
+ }
+ }
+
+ return UT_FALSE;
+}
+
+
+/*
+AR-911022
+CH LC_FNSn Finn neste serienummer
+CD ==========================================================================
+CD Formål:
+CD Finner neste gruppe i fil/serienummer søkeområdet.
+CD
+CD Parametre:
+CD Type Navn I/U Forklaring
+CD --------------------------------------------------------------------------
+CD LC_SNR_ADM * pSnrAdm iu Peker til statusblokk for serienummersøk
+CD LC_BGR * pBgr u Gruppenummer
+CD short sstat r Søkestatus (UT_TRUE=Funnet, UT_FALSE=Ingen funnet)
+CD
+CD Bruk:
+CD sstat = LC_FNSn(&SnrAdm,&Bgr);
+================================================================================
+*/
+SK_EntPnt_FYBA short LC_FNSn(LC_SNR_ADM * pSnrAdm,LC_BGR * pBgr)
+{
+ long lSnr,lGrNr;
+ long lMaxSnr;
+
+ /* LO_TestFilpeker(pSnrAdm->pFil,"LC_FNSn"); */
+ LO_TestFilpeker(pSnrAdm->pFil,"FNSn");
+
+ lMaxSnr = min(pSnrAdm->pFil->lMaxSnr, pSnrAdm->lMaxSnr);
+
+ /* Sjekker fra aktuellt serienummer */
+ for (lSnr=pSnrAdm->lAktSnr+1L; lSnr<=lMaxSnr; lSnr++) {
+ if ((lGrNr = LI_GetSnr(pSnrAdm->pFil,lSnr)) != INGEN_GRUPPE) {
+ /* Tilslag ==> */
+ pBgr->pFil = pSnrAdm->pFil;
+ pBgr->lNr = lGrNr;
+ pSnrAdm->lAktSnr = lSnr;
+ return UT_TRUE;
+ }
+ }
+
+ return UT_FALSE;
+}
+
+
+/*
+AR-911022
+CH LC_FNSnBt Finn neste serienummer med tilleggskrav
+CD ==========================================================================
+CD Formål:
+CD Finner neste gruppe også er merka i gitt kolonne i brukttabellen.
+CD
+CD Parametre:
+CD Type Navn I/U Forklaring
+CD -----------------------------------------------------------------------------
+CD LC_SNR_ADM * pSnrAdm i Peker til statusblokk for serienummersøk
+CD short kolonne i Kolonne i brukt-tabellen som skal sjekkes
+CD LC_BGR * pBgr u Gruppenummer
+CD short sstat r Søkestatus (UT_TRUE=Funnet, UT_FALSE=Ingen funnet)
+CD
+CD Bruk:
+CD sstat = LC_FNSnBt(&SnrAdm,BT_GEOSOK,&Bgr);
+================================================================================
+*/
+SK_EntPnt_FYBA short LC_FNSnBt(LC_SNR_ADM * pSnrAdm,short kolonne,LC_BGR * pBgr)
+{
+ long lSnr,lGrNr;
+ LC_BGR Bgr;
+ long lMaxSnr;
+
+ /* LO_TestFilpeker(pSnrAdm->pFil,"LC_FNSnBt"); */
+ LO_TestFilpeker(pSnrAdm->pFil,"FNSnBt");
+
+ lMaxSnr = min(pSnrAdm->pFil->lMaxSnr, pSnrAdm->lMaxSnr);
+
+ /* Sjekker fra aktuellt serienummer */
+ for (lSnr=pSnrAdm->lAktSnr+1L; lSnr<=lMaxSnr; lSnr++) {
+ if ((lGrNr = LI_GetSnr(pSnrAdm->pFil,lSnr)) != INGEN_GRUPPE) {
+ Bgr.pFil = pSnrAdm->pFil;
+ Bgr.lNr = lGrNr;
+ if (LC_GetBt(&Bgr,kolonne)) { /* Merka? */
+ /* Tilslag ==> */
+ pBgr->pFil = pSnrAdm->pFil;
+ pBgr->lNr = lGrNr;
+ pSnrAdm->lAktSnr = lSnr;
+ return UT_TRUE;
+ }
+ }
+ }
+
+ return UT_FALSE;
+}
+
+
+/*
+AR-911022
+CH LC_FPSn Finn forige serienummer
+CD =============================================================================
+CD Formål:
+CD Finner forrige gruppe i fil/serienummer søkeområdet.
+CD
+CD Parametre:
+CD Type Navn I/U Forklaring
+CD -----------------------------------------------------------------------------
+CD LC_SNR_ADM * pSnrAdm iu Peker til statusblokk for serienummersøk
+CD LC_BGR * pBgr u Gruppenummer
+CD short sstat r Søkestatus (UT_TRUE=Funnet, UT_FALSE=Ingen funnet)
+CD
+CD Bruk:
+CD sstat = LC_FPSn(&SnrAdm,&Bgr);
+================================================================================
+*/
+SK_EntPnt_FYBA short LC_FPSn(LC_SNR_ADM * pSnrAdm,LC_BGR * pBgr)
+{
+ long lSnr,lGrNr;
+
+ /* LO_TestFilpeker(pSnrAdm->pFil,"LC_FPSn"); */
+ LO_TestFilpeker(pSnrAdm->pFil,"FPSn");
+
+ /* Sjekker fra aktuellt serienummer */
+ for (lSnr=pSnrAdm->lAktSnr-1L; lSnr>=pSnrAdm->lMinSnr; lSnr--) {
+ if ((lGrNr = LI_GetSnr(pSnrAdm->pFil,lSnr)) != INGEN_GRUPPE) {
+ /* Tilslag ==> */
+ pBgr->pFil = pSnrAdm->pFil;
+ pBgr->lNr = lGrNr;
+ pSnrAdm->lAktSnr = lSnr;
+ return UT_TRUE;
+ }
+ }
+
+ return UT_FALSE;
+}
+
+
+/*
+AR-910930
+CH LC_FPSnBt Finn forige serienummer med tilleggskrav
+CD ==========================================================================
+CD Formål:
+CD Finner forrige gruppe i fil/serienummer søkeområdet, som også er merka i
+CD gitt kolonne i brukttabellen.
+CD
+CD Parametre:
+CD Type Navn I/U Forklaring
+CD -----------------------------------------------------------------------------
+CD LC_SNR_ADM * pSnrAdm i Peker til statusblokk for serienummersøk
+CD short kolonne i Kolonne i brukt-tabellen som skal sjekkes
+CD LC_BGR * pBgr u Gruppenummer
+CD short sstat r Søkestatus (UT_TRUE=Funnet, UT_FALSE=Ingen funnet)
+CD
+CD Bruk:
+CD sstat = LC_FPSnBt(&SnrAdm,BT_GEOSOK,&Bgr);
+================================================================================
+*/
+SK_EntPnt_FYBA short LC_FPSnBt(LC_SNR_ADM * pSnrAdm,short kolonne,LC_BGR * pBgr)
+{
+ long lSnr,lGrNr;
+ LC_BGR Bgr;
+
+ /* LO_TestFilpeker(pSnrAdm->pFil,"LC_FPSnBt"); */
+ LO_TestFilpeker(pSnrAdm->pFil,"FPSnBt");
+
+ /* Sjekker fra aktuellt serienummer */
+ for (lSnr=pSnrAdm->lAktSnr-1L; lSnr>=pSnrAdm->lMinSnr; lSnr--) {
+ if ((lGrNr = LI_GetSnr(pSnrAdm->pFil,lSnr)) != INGEN_GRUPPE) {
+ Bgr.pFil = pSnrAdm->pFil;
+ Bgr.lNr = lGrNr;
+ if (LC_GetBt(&Bgr,kolonne)) { /* Merka? */
+ /* Tilslag ==> */
+ pBgr->pFil = pSnrAdm->pFil;
+ pBgr->lNr = lGrNr;
+ pSnrAdm->lAktSnr = lSnr;
+ return UT_TRUE;
+ }
+ }
+ }
+
+ return UT_FALSE;
+}
+
+
+/*
+AR-910930
+CH LC_FLSn Finn siste serienummer
+CD =============================================================================
+CD Formål:
+CD Finner siste gruppe i fil/serienummer søkeområdet.
+CD
+CD Parametre:
+CD Type Navn I/U Forklaring
+CD -----------------------------------------------------------------------------
+CD LC_SNR_ADM * pSnrAdm iu Peker til statusblokk for serienummersøk
+CD LC_BGR * pBgr u Gruppenummer
+CD short sstat r Søkestatus (UT_TRUE=Funnet, UT_FALSE=Ingen funnet)
+CD
+CD Bruk:
+CD sstat = LC_FLSn(&SnrAdm,&Bgr);
+================================================================================
+*/
+SK_EntPnt_FYBA short LC_FLSn(LC_SNR_ADM * pSnrAdm,LC_BGR * pBgr)
+{
+ long lGrNr;
+ long lSnr;
+
+ /* LO_TestFilpeker(pSnrAdm->pFil,"LC_FLSn"); */
+ LO_TestFilpeker(pSnrAdm->pFil,"FLSn");
+
+ lSnr = min(pSnrAdm->pFil->lMaxSnr, pSnrAdm->lMaxSnr);
+
+ /* Sjekker fra slutten av tabellen */
+ for (; lSnr>=pSnrAdm->lMinSnr; lSnr--) {
+ if ((lGrNr = LI_GetSnr(pSnrAdm->pFil,lSnr)) != INGEN_GRUPPE) {
+ /* Tilslag ==> */
+ pBgr->pFil = pSnrAdm->pFil;
+ pBgr->lNr = lGrNr;
+ pSnrAdm->lAktSnr = lSnr;
+ return UT_TRUE;
+ }
+ }
+
+ return UT_FALSE;
+}
+
+
+/*
+AR-910930
+CH LC_FLSnBt Finn siste serienummer med tilleggskrav
+CD ==========================================================================
+CD Formål:
+CD Finner siste gruppe i fil/serienummer søkeområdet som også er merka i
+CD gitt kolonne i brukttabellen.
+CD
+CD Parametre:
+CD Type Navn I/U Forklaring
+CD -----------------------------------------------------------------------------
+CD LC_SNR_ADM * pSnrAdm i Peker til statusblokk for serienummersøk
+CD short kolonne i Kolonne i brukt-tabellen som skal sjekkes
+CD LC_BGR * pBgr u Gruppenummer
+CD short sstat r Søkestatus (UT_TRUE=Funnet, UT_FALSE=Ingen funnet)
+CD
+CD Bruk:
+CD sstat = LC_FLSnBt(&SnrAdm,BT_GEOSOK,&Bgr);
+================================================================================
+*/
+SK_EntPnt_FYBA short LC_FLSnBt(LC_SNR_ADM * pSnrAdm,short kolonne,LC_BGR * pBgr)
+{
+ long lGrNr;
+ LC_BGR Bgr;
+ long lSnr;
+
+ /* LO_TestFilpeker(pSnrAdm->pFil,"LC_FLSnBt"); */
+ LO_TestFilpeker(pSnrAdm->pFil,"FLSnBt");
+
+ lSnr = min(pSnrAdm->pFil->lMaxSnr, pSnrAdm->lMaxSnr);
+
+ /* Sjekker fra slutten av tabellen */
+ for (; lSnr>=pSnrAdm->lMinSnr; lSnr--) {
+ if ((lGrNr = LI_GetSnr(pSnrAdm->pFil,lSnr)) != INGEN_GRUPPE) {
+ Bgr.pFil = pSnrAdm->pFil;
+ Bgr.lNr = lGrNr;
+ if (LC_GetBt(&Bgr,kolonne)) { /* Merka? */
+ /* Tilslag ==> */
+ pBgr->pFil = pSnrAdm->pFil;
+ pBgr->lNr = lGrNr;
+ pSnrAdm->lAktSnr = lSnr;
+ return UT_TRUE;
+ }
+ }
+ }
+
+ return UT_FALSE;
+}
+
+
+/*
+AR-910930
+CH LS_PutSn Legg inn serienummer
+CD ==========================================================================
+CD Formål:
+CD Legg inn snr i tabellen og oppdaterer max snr for filen
+CD
+CD Parametre:
+CD Type Navn I/U Forklaring
+CD --------------------------------------------------------------------------
+CD LC_FILADM *pFil i Peker til FilAdm
+CD long lGrNr i Gruppenummer
+CD long lSnr i Serienummer
+CD
+CD Bruk:
+CD LS_PutSn(pFil,lGrNr,lSnr);
+=============================================================================
+*/
+void LS_PutSn(LC_FILADM *pFil,long lGrNr,long lSnr)
+{
+ if (lSnr >= 0L) {
+ /* LO_TestFilpeker(pFil,"LC_PutSn"); */
+ LO_TestFilpeker(pFil,"PutSn");
+
+ /* Max snr på filen */
+ if (lSnr > pFil->lMaxSnr) {
+ pFil->lMaxSnr = lSnr;
+ }
+
+ /* Legg inn verdi */
+ LI_PutSnr(pFil,lSnr,lGrNr);
+
+ } else {
+ UT_SNPRINTF(err().tx,LC_ERR_LEN," %ld ",lSnr);
+ LC_Error(61,"(LS_PutSn)",err().tx);
+ }
+}
+
+
+/*
+AR-891104
+CH LS_VisSn Vis serienummer-tabellen
+CD =============================================================================
+CD Formål:
+CD Henter en linje fra serienummer-tabellen som formatert streng.
+CD
+CD Parametre:
+CD Type Navn I/U Forklaring
+CD -----------------------------------------------------------------------------
+CD LC_FILADM *pFil i Peker til FilAdm
+CD long lin i Linjenummer i SN-tab som skal hentes
+CD char *tx r Peker til streng med formatert SN-linje
+CD
+CD Bruk:
+CD UT_FPRINTF(stderr,"\nSerienummertabell:\n");
+CD for (lin=0L; lin<100L; lin++) {
+CD UT_FPRINTF(stderr,"%s\n",LS_VisSn(BlaFile,lin));
+CD }
+ =============================================================================
+*/
+char *LS_VisSn(LC_FILADM *pFil,long lin)
+{
+ if (lin >= 0L && lin < pFil->lMaxSnr){
+ UT_SNPRINTF(err().tx,LC_ERR_LEN,"%8ld: %8ld",lin,LI_GetSnr(pFil,lin));
+ } else{
+ *err().tx = '\0';
+ }
+ return err().tx;
+}