summaryrefslogtreecommitdiff
path: root/doc/no_NB/fyba2.html
diff options
context:
space:
mode:
Diffstat (limited to 'doc/no_NB/fyba2.html')
-rw-r--r--doc/no_NB/fyba2.html6795
1 files changed, 6795 insertions, 0 deletions
diff --git a/doc/no_NB/fyba2.html b/doc/no_NB/fyba2.html
new file mode 100644
index 0000000..0f44612
--- /dev/null
+++ b/doc/no_NB/fyba2.html
@@ -0,0 +1,6795 @@
+<HTML>
+<HEAD>
+<META http-equiv="Content-Type" CONTENT="text/htm; iso-8859-1">
+</HEAD>
+<BODY BGCOLOR="ffffff">
+<BODY>
+<BR>
+<BR>
+<FONT COLOR="Red" SIZE="+6" FACE="Comic Sans MS"><I><B><CENTER>FYBA</CENTER></I></B></FONT>
+<BR>
+<FONT SIZE="+2" FACE="Comic Sans MS"><I><B><CENTER>Et lagringssystem for geodata på SOSI-format.</CENTER></I></B></FONT>
+<BR>
+<BR>
+<BR>
+<BR>
+<FONT SIZE="-1"><CENTER>Sist oppdatert: 2013-10-09 av rosand</CENTER></FONT>
+
+
+
+<BR>
+<BR>
+<HR COLOR=#80ff80 SIZE=5 NOSHADE>
+<BR>
+<BR>
+<BR>
+<A ID="O1"NAME="O1"></A><H1>1 Innledning</H1>
+
+</PRE>
+FYBA er et rutinebibliotek for å kunne håndtere
+<A TARGET="top" HREF="http://www.statkart.no/nor/sosi/" target="_new">SOSI</A>-filer på en
+mest mulig elegant måte, både mht. søking, lesing og oppdatering.
+FYBA er nå tilpasset <A TARGET="top" HREF="http://www.statkart.no/nor/sosi/" target="_new">SOSI</A>-format
+versjon 4.0, og blir fortløpende tilpasset nye <A TARGET="top" HREF="http://www.statkart.no/nor/sosi/" target="_new"">SOSI</A>-versjoner.
+<BR>
+Dene brukerveiledningen er laget for personell som er familiær med
+SOSI og C-programmering.
+
+Alle rutinegrensesnitt og konstanter er definert på filen FYBA.H.
+Denne filen bør derfor inkluderes i alle filer som skal bruke FYBA-rutinene.
+
+<BR>
+FYBA er skrevet i ANSI C, og kan i utgangspunktet kompileres på alle
+platformer der det finnes en passende kompilator.
+Det er imidlertid en del hjelperutiner som er maskin/operativsystem-avhengig.
+Disse er skillt ut til et eget bibliotek (UT) som må tilpasses til
+maskin/opperativsystem. Dette er testet under DOS, OS/2-16, OS/2-32, Win16, Win32, X64 og
+div. UNIX varianter (POSIX, HPUX, Silicon graphics).
+
+
+<BR>
+<BR>
+<HR COLOR=#80ff80 SIZE=5 NOSHADE>
+<BR>
+<BR>
+<BR>
+<A ID="O2"NAME="O2"></A><H1>2 Oversikt over funksjonaliteten til FYBA</H1>
+
+</PRE>
+FYBA et rutinebibliotek som etablerer og vedlikeholder
+egne "indeks-filer" (.IDX) med nødvendige opplysninger for
+lesing,skriving,søk og manipulering av data på SOSI-filene.
+
+
+Som en oversikt kan følgende figur forklare sammenhengen mellom
+SOSI-filene ,biblioteket og brukerprogrammene.
+
+<PRE>
+ !---------------!
+ !---------------->! Indeks-filer !<-------!
+ ! !---------------! !
+ ! ^ !
+ ! ! !
+ ! !---!-----! ! !-----------------!
+ ! ! ! !-->! !
+ ! ! Buffer ! ! !
+!------!------! LC_Rxxxx ! ! LC_PutXxx ! Bruker-program !
+! SOSI-fil(er)!<----------- ! internt !<------------- ! !
+! ! ----------->! ! ! !
+!-------------! LC_Wxxxx ! i ! ------------->! !
+ ! ! LC_GetXxx ! !
+ ! FYBA- ! ! !
+ ! ! ! !
+ ! rutinene! !-----------------!
+ ! !
+ !---------!
+
+
+<BR>
+<BR>
+<HR COLOR=#80ff80 SIZE=5 NOSHADE>
+<BR>
+<BR>
+<BR>
+<A ID="O3"NAME="O3"></A><H1>3 Indeks-systemets oppbygning</H1>
+
+Indeks-systemet er bygt opp av en hel rekke tabeller. Disse ligger
+delevis i minnet, og delevis som filer på disken.
+
+Nedenfor følger en tegning av aktuelle tabeller.
+Dette bare til informasjon. Bruker behøver stort-sett ikke
+kjenne til oppbygningen av disse:
+
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="Gruppetabell"NAME="Gruppetabell"></A><H2>Gruppetabell</H2>
+<BIG><I><B>Gruppetabell</I></B></BIG><PRE>
+Dette er hovedtabellen med informasjon om hver enkelt gruppe på SOSI-filen.
+
+!------------------------------:-----------------------------------------------*
+!Start !Start !Ant. !Ant. ! Gruppeinnhold !
+! på ! i !tegn !tegn !-----------------------------------------------!
+!SOSI- ! RB !GINFO- !PINFO- !Gruppe!ant. !ant. !Kvali- !Enhet ! Div. info !
+!fil ! !buffer !buffer !navn !GINFO! NØ ! tet ! ! (bit def.) !
+!-------!------!-------!-------!------!-----!-----!--------!------!------------!
+!sosi_st!rb_st !ulGiLen!ulPiLen!gnavn !ngi !nko !Kvalitet!dEnhet! info !
+! n64 ! n64 ! ul ! ul ! s ! s ! l ! struct ! d ! us !
+! ! ! ! ! ! ! ! ! !0=i !
+! ! ! ! ! ! ! ! ! !1=H !
+! ! ! ! ! ! ! ! ! !2=KP !
+! ! ! ! ! ! ! ! ! !3=REF !
+! ! ! ! ! ! ! ! ! !4=REF med ØY!
+! ! ! ! ! ! ! ! ! !5=sletta !
+! ! ! ! ! ! ! ! ! !6=NGIS oppd !
+*------------------------------------------------------------------------------*
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="Brukttabell"NAME="Brukttabell"></A><H2>Brukttabell</H2>
+<BIG><I><B>Merking av grupper</I></B></BIG><PRE>
+Denne tabellen brukes delevis internt av FYBA, og delevis av brukerprogrammet.
+
+Følgende bit er definert:
+-------------------------------------------------------------------------
+ 31 Gruppen er funnet ved geografisk søk -----! Brukere kan lese/bruke
+ 30 Gruppen er funnet ved GINFO-utvalg ! disse, men det er ikke
+ 29 Gruppen er funnet ved serienummer-søk ! lov til å endre dem.
+ 28 Gruppen er i ringbufferet !
+ 27 Referanser er brukt i omskrevet blokk ------!
+ 26 -----!
+ . ! Brukere har
+ . ! full tilgang
+ 2 ! til disse.
+ 1 -----!
+ 0 Gruppen ligger i kø for skriving til SOSI-filen
+</PRE>
+
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="SOSI-buffer"NAME="SOSI-buffer"></A><H2>SOSI-buffer</H2>
+<BIG><I><B>Binær kopi av SOSI-filen</I></B></BIG><PRE>
+For å øke hastigheten holder FYBA en binær kopi av SOSI-filen.
+Denne kopien ligger delevis i minne og delevis på disk.
+
+Denne kopien består av gruppeinformasjon, koordinater og punktinformasjon.
+
+Gruppeinformasjonen for en gruppe handteres som en lang streng med pekere
+til startposisjon for hver GINFO-linje.
+
+!-----------:-----------:----------:----------------------------------!
+! GINFO 1 ! GINFO 2 ! GINFO 3 ! ..... !
+!-----------:-----------:----------:----------------------------------!
+ ! ! !
+ !---------! ! !
+ ! ! !
+!--------! ! ! !
+! GINFO ! ! ! !
+!--------! ! ! !
+! ofset !-! ! !
+! !----- !
+! !-----------------
+
+Koordinatene lagres i egne array. Punktinformasjonen lagres som
+en lang streng for hele gruppen med peker for hvert punkt til startposisjon
+for PINFO for hvert punkt på samme måte som GINFO.
+
+!--------! !--------! !--------:-------:--------!
+! Øst ! ! Nord ! ! Høyde ! KP ! PINFO !
+!--------! !--------! !--------!-------!--------!
+! double ! ! double ! ! double ! short ! ushort !
+! m ! ! m ! ! m ! ! ofset !
+</PRE>
+
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="Serienummer-tabell"NAME="Serienummer-tabell"></A><H2>Serienummer-tabell</H2>
+!-------------*
+! Gruppenummer!
+!-------------! Linjenummer i tabellen er serienummer.
+! lGrNr !
+! (long) !
+*-------------*
+</PRE>
+
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="Geografisk-søketabell"NAME="Geografisk-søketabell"></A><H2>Geografisk-søketabell</H2>
+<BIG><I><B>Geografisk søketabell</I></B></BIG><PRE>
+
+Geografisk søk er basert på omskrevet boks.
+Boksene organiseres i et R-tre.
+
+!-----------------------------------*
+! Omskreven boks !
+! !
+! min-N ! min-Ø ! max-N ! max-Ø !
+! ! ! ! !
+!--------!--------!--------!--------!
+!dMinNord!dMinAust!dMaxNord!dMaxAust!
+! d ! d ! d ! d !
+! ! ! ! !
+*-----------------------------------*
+</PRE>
+
+<BR>
+<BR>
+<HR COLOR=#80ff80 SIZE=5 NOSHADE>
+<BR>
+<BR>
+<BR>
+<A ID="O4"NAME="O4"></A><H1>4 Navnekonvensjoner</H1>
+
+</PRE>
+Variabelnavn er fritt valgt for å si mest mulig om hva variabelen inneholder.
+<BR>
+De fleste rutiner i brukergrensesnittet starter med "LC_":
+<BR>
+I tillegg kommer noen spesielle rutiner for å lese filhodet direkte fra
+SOSI-fil. Disse har navn som starter med "HO_":
+
+<BR>
+<BR>
+<HR COLOR=#80ff80 SIZE=5 NOSHADE>
+<BR>
+<BR>
+<BR>
+<A ID="O5"NAME="O5"></A><H1>5 Initiering og styring</H1>
+
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_Init"NAME="LC_Init"></A><H2>LC_Init</H2>
+<BIG><I><B>Initierer FYBA</I></B></BIG><PRE>
+=============================================================================
+Formål:
+Initierer FYBA.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+Bruk:
+LC_Init();
+ =============================================================================
+
+SK_EntPnt_FYBA void LC_Init(void)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_InqVer"NAME="LC_InqVer"></A><H2>LC_InqVer</H2>
+<BIG><I><B>Identifikasjon</I></B></BIG><PRE>
+=============================================================================
+Formål:
+Henter versjons-identifikasjon for dette biblioteket.
+ =============================================================================
+
+SK_EntPnt_FYBA char *LC_InqVer(void)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_Close"NAME="LC_Close"></A><H2>LC_Close</H2>
+<BIG><I><B>Stenger ned FYBA</I></B></BIG><PRE>
+=============================================================================
+Formål:
+Stenger ned FYBA.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+Bruk:
+LC_Close();
+ =============================================================================
+
+SK_EntPnt_FYBA void LC_Close(void)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_ErInitiert"NAME="LC_ErInitiert"></A><H2>LC_ErInitiert</H2>
+<BIG><I><B>Er FYBA initiert</I></B></BIG><PRE>
+=============================================================================
+Formål:
+Sjekker om FYBA er initiert / tilgjengelig for bruk.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+short sStaus r 0=ikke initiert, eller FYBA er stengt ned
+ 1=initiert
+Bruk:
+sStatus = LC_ErInitiert();
+ =============================================================================
+
+SK_EntPnt_FYBA short LC_ErInitiert(void)
+</PRE>
+
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_MaxSkriv"NAME="LC_MaxSkriv"></A><H2>LC_MaxSkriv</H2>
+<BIG><I><B>Max skriv før lagring</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Setter max antall skriv uten lagring til SOSI-filen.
+(0 = allt skrives direkte til SOSI-filen.)
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+long antall i Max antall skriv uten lagring til SOSI-filen
+Bruk:
+LC_MaxSkriv(antall);
+ =============================================================================
+
+SK_EntPnt_FYBA void LC_MaxSkriv(long antall)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_InqMaxSkriv"NAME="LC_InqMaxSkriv"></A><H2>LC_InqMaxSkriv</H2>
+<BIG><I><B>Max skriv før lagring</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Spørr etter max antall skriv uten lagring til SOSI-filen.
+(0 = allt skrives direkte til SOSI-filen.)
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+long antall i Max antall skriv uten lagring til SOSI-filen
+Bruk:
+antall = LC_InqMaxSkriv();
+ =============================================================================
+
+SK_EntPnt_FYBA long LC_InqMaxSkriv(void)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_SetNgisModus"NAME="LC_SetNgisModus"></A><H2>LC_SetNgisModus</H2>
+<BIG><I><B>Velg NGIS modus</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Velger handteringsmåte for grupper som er merket for oppdatering av NGIS.
+Standardverdi fra LC_Init er NGIS_NORMAL.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+short modus i Behandlingsmåte:
+ NGIS_NORMAL (0) = Vanlig handtering
+ NGIS_SPESIAL (1) = Spesialmodus der det er mulig å lese
+ grupper som er merka som sletta.
+Bruk:
+LC_SetNgisModus(NGIS_NORMAL);
+ ==========================================================================
+
+SK_EntPnt_FYBA void LC_SetNgisModus(short modus)
+</PRE>
+
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_SetDefLpfi"NAME="LC_SetDefLpfi"></A><H2>LC_SetDefLpfi</H2>
+<BIG><I><B>Ledig plass mellom grupper</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Legger inn standardverdi for antall tegn ledig plass bak gruppe
+på .SOS-fil.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+short ant_tegn i Antall tegn ledig plass.
+Bruk:
+LC_SetDefLpfi(ant_tegn);
+ =============================================================================
+
+SK_EntPnt_FYBA void LC_SetDefLpfi(short ant_tegn)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_InqDefLpfi"NAME="LC_InqDefLpfi"></A><H2>LC_InqDefLpfi</H2>
+<BIG><I><B>Hent ledig plass mellom grupper</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Henter ut standardverdi for antall tegn ledig plass bak gruppe
+på .SOS-fil.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+short ant_tegn r Antall tegn ledig plass.
+Bruk:
+ant_tegn = LC_InqDefLpfi();
+ =============================================================================
+
+SK_EntPnt_FYBA short LC_InqDefLpfi(void)
+</PRE>
+
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_SetUtvidModus"NAME="LC_SetUtvidModus"></A><H2>LC_SetUtvidModus</H2>
+<BIG><I><B>Velg utvis modus</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Velger handteringsmåte for utvidelse av SOSI-filer.
+Standardverdi fra LC_Init er LC_UTVID_SIKKER.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+short modus i Behandlingsmåte:
+ LC_UTVID_SIKKER (0) = SOSI-filen stenges og filstørrelsen
+ oppdateres etter hver gruppe som er
+ skrevet på slutten av filen.
+ LC_UTVID_RASK (1) = SOSI-filen stenges IKKE etter hver
+ gruppe som er skrevet på slutten
+ av filen.
+ (Må bare brukes i spesielle tilfeller.)
+Bruk:
+LC_SetUtvidModus(LC_UTVID_SIKKER);
+ ==========================================================================
+
+SK_EntPnt_FYBA void LC_SetUtvidModus(short modus)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_GetUtvidModus"NAME="LC_GetUtvidModus"></A><H2>LC_GetUtvidModus</H2>
+<BIG><I><B>Hent utvis modus</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Henter valgt handteringsmåte for utvidelse av SOSI-filer.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+short modus r Behandlingsmåte:
+ LC_UTVID_SIKKER (0) = SOSI-filen stenges og filstørrelsen
+ oppdateres etter hver gruppe som er
+ skrevet på slutten av filen.
+ LC_UTVID_RASK (1) = SOSI-filen stenges IKKE etter hver
+ gruppe som er skrevet på slutten
+ av filen.
+ (Må bare brukes i spesielle tilfeller.)
+Bruk:
+short sModus = LC_GetUtvidModus();
+ ==========================================================================
+
+SK_EntPnt_FYBA short LC_GetUtvidModus(void)
+</PRE>
+
+<BR>
+<BR>
+<HR COLOR=#80ff80 SIZE=5 NOSHADE>
+<BR>
+<BR>
+<BR>
+<A ID="O6"NAME="O6"></A><H1>6 Åpning av base og sosi-filer</H1>
+
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_OpenBase"NAME="LC_OpenBase"></A><H2>LC_OpenBase</H2>
+<BIG><I><B>Åpner ny base</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Åpner en base, nullstiller tabellene.
+Hvis basen er kladdebase opprettes en SOSI-fil med en gruppe i basen,
+denne brukes som buffer for les / skriv.
+Kladdefilen legges på current directory.
+Kladdebase brukes bare når alle SOSI-filer åpnes med sekvensiell les/skriv.
+
+Den nye basen velges som aktuell base.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+short sBaseType i Basetype. Konstanter definert:
+ LC_BASE = Vanlig base.
+ LC_KLADD = Kladdebase. Brukes bare i spesielle
+ tilfeller hvis ingen fil åpnes
+ som LC_BASE_xx.
+LC_BASEADM * pBase r Basepeker.
+Bruk:
+pBase = LC_OpenBase(sBaseType);
+ ==========================================================================
+
+SK_EntPnt_FYBA LC_BASEADM * LC_OpenBase(short sBaseType)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_CloseBase"NAME="LC_CloseBase"></A><H2>LC_CloseBase</H2>
+<BIG><I><B>Steng base</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Stenger alle filer i basen, og frigir baseadministrasjonsblokken.
+Hvis aktuell base blir stengt blir første base i systemet valgt som ny
+aktuell base.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+PLCBASEADM pBase i Peker tilBaseAdm
+short s_stat i Slutt-status
+ RESET_IDX = Fjern indeksfilene
+ SAVE_IDX = Lagrer indeksfilene.
+ ABORT = Fjerner indeksfilene (ved avbrutt
+ indeks oppbygging).
+Bruk:
+LC_CloseBase(pBase,s_stat);
+ ==========================================================================
+
+SK_EntPnt_FYBA void LC_CloseBase(LC_BASEADM * pBase,short s_stat)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_SelectBase"NAME="LC_SelectBase"></A><H2>LC_SelectBase</H2>
+<BIG><I><B>Velg aktuell base</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Velger ny aktuell base.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+LC_BASEADM * pBase i Peker til BasAdm.
+Bruk:
+LC_SelectBase(pBase);
+ ==========================================================================
+
+SK_EntPnt_FYBA void LC_SelectBase(LC_BASEADM * pBase)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_InqCurBase"NAME="LC_InqCurBase"></A><H2>LC_InqCurBase</H2>
+<BIG><I><B>Aktuell base</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Spørr etter aktuell base.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+LC_BASEADM * pBase r Basepeker.
+Bruk:
+pBase = LC_InqCurBase();
+ =============================================================================
+
+SK_EntPnt_FYBA LC_BASEADM * LC_InqCurBase(void)
+</PRE>
+
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_OpenSos"NAME="LC_OpenSos"></A><H2>LC_OpenSos</H2>
+<BIG><I><B>Åpner og sjekker SOSI-fil</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Åpner en ny fil i aktuell base.
+Allokerer minne til ny filadministrasjonsblokk og initierer denne.
+Åpner SOSI-filen og legger navn mm. inn i fil-adm.
+Leser hodet og tolker det inn i filtabellen.
+Hode blir ikke generert for nye filer. Dette kan lages med LC_PutGi, eller
+LC_NyttHode eller kopieres fra annen fil, og skrives med LC_WsGr
+eller LC_WxGr.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------
+char *fil i Filnavn inkl. sti og fil-type
+ (Hvis fil-type mangler forutsettes .SOS)
+short sModus i Filmodus
+ LC_BASE_FRAMGR = Framgrunnsfil
+ LC_BASE_BAKGR = Bakgrunnsfil (Bare les)
+ LC_SEKV_LES = Sekvensiell, les
+ LC_SEKV_SKRIV = Sekvensiell, skriv
+ LC_SEKV_UTVID = Sekvensiell, utvid gammel fil
+short sNyIdx i Indeksgenerering:
+ LC_NY_IDX = Tvungen nygenerering
+ LC_GML_IDX = Bruk gammel .idx hvis den er OK
+short sVisStatus i Vis indeksoppbygging
+ LC_VIS_STATUS = Vis status
+ LC_INGEN_STATUS = Ikke vis status
+LC_FILADM **pFil u Peker til FilAdm blokk.
+short *o_stat u Detaljert åpningsstatus:
+ 0: Åpning og hode OK
+ >0: Åpningsfeil feilmelding
+ -1: Åpning OK, tom fil / ikke SOSI-fil
+ -2: Ikke åpnet, kan ikke bruke append på
+ tom fil / ikke sosi-fil
+ -3: (LC_CANCEL): Ikke åpnet,
+ indeksoppbygging avbrutt med [Esc],
+ eller feil på filen.
+ -4: (LC_DUBLIKAT): Filen er i basen fra før (pFil)
+ -5: (LC_OPPTATT): Filen er åpen i annet program
+short status r Åpningsstatus: UT_TRUE = OK
+ UT_FALSE = Feil, (o_stat gir detalj)
+Bruk:
+ist=LC_OpenSos(fil,LC_BASE_FRAMGR,LC_NY_IDX,LC_VIS_STATUS,&pFil,&o_stat);
+ist=LC_OpenSos(fil,LC_SEKV_LES,LC_NY_IDX,LC_INGEN_STATUS,&pFil,&o_stat);
+ ==========================================================================
+
+/// <summary><c>LC_OpenSos</c> Åpner og sjekker SOSI-fil <c>FYBA</c> biblioteket.
+/// </summary>
+/// <param name="fil">Filnavn inkl. sti og fil-type (Hvis fil-type mangler forutsettes .SOS)</param>
+SK_EntPnt_FYBA short LC_OpenSos(const char *fil,short sModus,short sNyIdx,short sVisStatus,
+ LC_FILADM **pFil, short *o_stat)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_CloseSos"NAME="LC_CloseSos"></A><H2>LC_CloseSos</H2>
+<BIG><I><B>Steng SOSI-fil</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Stenger en SOSI-fil, og fjerner den fra basen.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+LC_FILADM *pFil i Peker til FilAdm-blokk
+short s_stat i Slutt-status
+ RESET_IDX = Fjern indeksfilene
+ SAVE_IDX = Lagrer indeksfilene.
+Bruk:
+LC_CloseSos(pFil,SAVE_IDX);
+ ==========================================================================
+
+SK_EntPnt_FYBA void LC_CloseSos(LC_FILADM *pFil,short s_stat)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_DelIdx"NAME="LC_DelIdx"></A><H2>LC_DelIdx</H2>
+<BIG><I><B>Sletter indeksfilene</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Sletter indeksfilene for gitt SOSI-fil.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+char *szSosFil i SOSI-filnavn
+Bruk:
+LC_DelIdx(szSosFil);
+ ==========================================================================
+
+SK_EntPnt_FYBA void LC_DelIdx(char *szSosFil)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_FcloseSos"NAME="LC_FcloseSos"></A><H2>LC_FcloseSos</H2>
+<BIG><I><B>Steng åpen SOSI-fil i filsystemet</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Denne rutinen brukes til å sikre at en fil er oppdatert og stengt i filsystemet,
+slik at SOSI-filen kan leses fra andre program.
+OBS!
+Stenger bare filen i filsystemet.
+Filen er fortsatt åpen i basen.
+FYBA åpner automatisk filen på nytt når det er behov for dette.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+LC_FILADM *pFil i Peker til FilAdm-blokk
+Bruk:
+LC_FcloseSos(pFil);
+==========================================================================
+
+SK_EntPnt_FYBA void LC_FcloseSos(LC_FILADM *pFil)
+</PRE>
+
+
+<BR>
+<BR>
+<HR COLOR=#80ff80 SIZE=5 NOSHADE>
+<BR>
+<BR>
+<BR>
+<A ID="O7"NAME="O7"></A><H1>7 Hjelpefunksjoner</H1>
+
+<BR>
+<BR>
+<BR>
+<A ID="O8"NAME="O8"></A><H2>7.1 Base og fil</H2>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_GetBaOm"NAME="LC_GetBaOm"></A><H2>LC_GetBaOm</H2>
+<BIG><I><B>Hent baseområde</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Henter baseområdet for aktuell base (Sum av filhodene).
+Sekvensielle filer regnes ikke med.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+unsigned short usLag i Velg hvilke "lag" det skal søkes i.
+ LC_FRAMGR og /eller LC_BAKGR
+ (Bruk "|" for å kombinere.)
+double *nva u Nedre venstre øst
+double *nvn u Nedre venstre nord
+double *oha u Øvre høyre øst
+double *ohn u Øvre høyre nord
+short sStatus r UT_TRUE=OK, UT_FALSE=ingen fil
+Bruk:
+sStatus = LC_GetBaOm(LC_FRAMGR,&nva,&nvn,&oha,&ohn);
+ ==========================================================================
+
+SK_EntPnt_FYBA short LC_GetBaOm(unsigned short usLag,double *nva,double *nvn,double *oha,
+ double *ohn)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_GetFiOm"NAME="LC_GetFiOm"></A><H2>LC_GetFiOm</H2>
+<BIG><I><B>Hent område fra fil-hode</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Hent område for en SOSI-fil i basen.
+Fungerer ikke mot sekvensielle filer.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+LC_FILADM *pFil i Peker til FilAdm
+double nva u Nedre venstre øst
+double nvn u Nedre venstre nord
+double oha u Øvre høyre øst
+double ohn u Øvre høyre nord
+short ist r Status (UT_TRUE=OK, UT_FALSE=sekvensiell fil)
+Bruk:
+ist = LC_GetFiOm(pFil,&nva,&nvn,&oha,&ohn);
+ ==========================================================================
+
+SK_EntPnt_FYBA short LC_GetFiOm(LC_FILADM *pFil,double *nva,double *nvn,double *oha,double *ohn)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_GetFiNr"NAME="LC_GetFiNr"></A><H2>LC_GetFiNr</H2>
+<BIG><I><B>Get fil nummer</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Sjekker alle filer i aktuell base om noen av den har det gitte filnavnet.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+char fil_navn i Filnavn
+LC_FILADM *pFil r Peker til FilAdm for filen. (NULL = ukjent fil)
+Bruk:
+pFil = LC_GetFiNr(fil_navn);
+ ==========================================================================
+
+SK_EntPnt_FYBA LC_FILADM *LC_GetFiNr(const char *fil_navn)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_GetFiNa"NAME="LC_GetFiNa"></A><H2>LC_GetFiNa</H2>
+<BIG><I><B>Hent filnavn</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Henter filnavnet for en fil i basen. Fungerer både for basefiler
+og for sekvensielle filer.
+OBS! Hvis du skal endre på filnavnet må du først kopiere det
+ til en lokale varialel.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+LC_FILADM *pFil i Peker til FilAdm
+char *fil_navn r Peker til filnavn
+Bruk:
+fil_navn = LC_GetFiNa(pFil);
+ ==========================================================================
+
+SK_EntPnt_FYBA char *LC_GetFiNa(LC_FILADM *pFil)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_GetTegnsett"NAME="LC_GetTegnsett"></A><H2>LC_GetTegnsett</H2>
+<BIG><I><B>Finner tegnsett</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Finne tegnsett i ginfo i aktuell gruppe.
+OBS! Forutsetter at aktuell gruppe er et SOSI-filhode.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+short *psTegnsett u Tegnsett, konstanter definert:
+ TS_DOSN8 = DOS norsk 8-bits(standardverdi)
+ TS_ND7 = Norsk Data 7-bits
+ TS_ISO8859 = ISO8859-10 norsk/samisk
+ TS_DECM8 = DEC multinasjonal 8-bits
+ TS_DECN7 = DEC norsk 7-bits
+short sStatus r Status: UT_TRUE = Funnet
+ UT_FALSE = Ikke funnet
+Bruk:
+ sStatus = LC_GetTegnsett(&sTegnsett);
+==========================================================================
+
+SK_EntPnt_FYBA short LC_GetTegnsett(short *psTegnsett)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_InqLag"NAME="LC_InqLag"></A><H2>LC_InqLag</H2>
+<BIG><I><B>Finn hvilet lag aktuell gruppe tilhører</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Finn hvilket lag aktuell gruppe tilhører.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+unsigned short *usLag u "Lag": LC_FRAMGR eller LC_BAKGR
+short status r UT_TRUE = OK, UT_FALSE = Ingen aktuell gruppe
+Bruk:
+ status = LC_InqLag(&usLag);
+ ==========================================================================
+
+SK_EntPnt_FYBA short LC_InqLag(unsigned short *usLag)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_InqFilLag"NAME="LC_InqFilLag"></A><H2>LC_InqFilLag</H2>
+<BIG><I><B>Finn hvilet lag en fil tilhører</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Finn hvilket lag en fil tilhører.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+LC_FILADM *pFil i Filpeker
+unsigned short usLag r "Lag": LC_FRAMGR eller LC_BAKGR
+Bruk:
+ usLag = LC_InqFilLag(pFil);
+ ==========================================================================
+
+SK_EntPnt_FYBA unsigned short LC_InqFilLag(LC_FILADM *pFil)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_SetFilLag"NAME="LC_SetFilLag"></A><H2>LC_SetFilLag</H2>
+<BIG><I><B>Velg hvilet lag en fil tilhører</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Velg hvilket lag en fil tilhører.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+LC_FILADM *pFil i Filpeker
+unsigned short usLag i "Lag": LC_FRAMGR eller LC_BAKGR
+Bruk:
+ LC_SetFilLag(pFil,LC_FRAMGR);
+ ==========================================================================
+
+SK_EntPnt_FYBA void LC_SetFilLag(LC_FILADM *pFil,unsigned short usLag)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_FiLastGr"NAME="LC_FiLastGr"></A><H2>LC_FiLastGr</H2>
+<BIG><I><B>Finn siste gruppe i filen</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Finner gruppenummer for siste gruppe i filen.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+LC_FILADM *pFil i Peker til FilAdm
+bgr long r Gruppenummer
+Bruk:
+bgr = LC_FiLastGr(pFil);
+ ==========================================================================
+
+SK_EntPnt_FYBA long LC_FiLastGr(LC_FILADM *pFil)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_ErFilBase"NAME="LC_ErFilBase"></A><H2>LC_ErFilBase</H2>
+<BIG><I><B>Sjekker om en fil er i basen</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Sjekker om en fil er i basen.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------
+char *fil i Filnavn inkl. sti og fil-type
+ (Hvis fil-type mangler forutsettes .SOS)
+short status r Status: UT_TRUE = Filen er med i basen.
+ UT_FALSE = Filen er IKKE med i basen.
+Bruk:
+ist = LC_ErFilBase(fil);
+ ==========================================================================
+
+SK_EntPnt_FYBA short LC_ErFilBase(const char *fil)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_ErKoordsysLik"NAME="LC_ErKoordsysLik"></A><H2>LC_ErKoordsysLik</H2>
+<BIG><I><B>Sjekker KOORDSYS</I></B></BIG><PRE>
+=======================================================================
+Formål:
+Sjekk at alle filene i basen har samme koordinatsystem.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------
+short status r Status: UT_TRUE = KOORDSYS er lik.
+ UT_FALSE = KOORDSYS er IKKE lik.
+Bruk:
+ist = LC_ErKoordsysLik();
+ =======================================================================
+
+SK_EntPnt_FYBA short LC_ErKoordsysLik(void)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_ErVertdatumLik"NAME="LC_ErVertdatumLik"></A><H2>LC_ErVertdatumLik</H2>
+<BIG><I><B>Sjekker VERT-DATUM</I></B></BIG><PRE>
+=======================================================================
+Formål:
+Sjekk at alle filene i basen har samme VERT-DATUM.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------
+short status r Status: UT_TRUE = VERT-DATUM er lik.
+ UT_FALSE = VERT-DATUM er IKKE lik.
+Bruk:
+ist = LC_ErVertdatumLik();
+ =======================================================================
+
+SK_EntPnt_FYBA short LC_ErVertdatumLik(void)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_Backup"NAME="LC_Backup"></A><H2>LC_Backup</H2>
+<BIG><I><B>Lag backup av gitt SOSI-fil</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Lag backup av gitt SOSI-fil.
+Kopien legges på en underkatlog med navn "Backup" under den katalogen
+SOSI-filen ligger på. Kopien navnes "Filnavn.nnn" der nnn er et
+fortløpende nummer fra 000 og oppover. Det første ledige numret blir brukt.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+LC_FILADM *pFil i Filpeker
+char *pszBackupPath i Katalognavn for lagring av backup.
+short sStatus r UT_TRUE = OK
+ UT_FALSE = Feil.
+Bruk:
+ sStatus = LC_Backup(pFil, szBackupPath);
+ ==========================================================================
+
+SK_EntPnt_FYBA short LC_Backup(LC_FILADM *pFil, const char *pszBackupPath)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_GetNgisLag"NAME="LC_GetNgisLag"></A><H2>LC_GetNgisLag</H2>
+<BIG><I><B>Hent NGIS-LAG </I></B></BIG><PRE>
+==========================================================================
+Formål:
+Henter NGIS-LAG for gitt fil.
+Strengen ligger i et felles "returbuffer" for alle get-rutiner i fyba.
+Dette blir ødelagt ved neste kall til en "get-rutine". For å ta vare på
+strengen må den kopieres over til egen streng. (Bruk strcpy).
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+LC_FILADM *pFil i Fil det ønskes opplsninger om.
+char* pszNgisLag r NGIS-lag.
+ Tom streng = ..NGIS-LAG er ikke funnet
+ "0" = Bare leseaksess (..NGIS-LAG 0)
+Bruk:
+pszNgisLag = LC_GetNgisLag(pFil);
+ ==========================================================================
+
+SK_EntPnt_FYBA char* LC_GetNgisLag(LC_FILADM *pFil)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_SetFilType"NAME="LC_SetFilType"></A><H2>LC_SetFilType</H2>
+<BIG><I><B>Setter filtype for en sosifil</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Setter filtype for en fil.
+Denne rutinen er primært tenkt brukt i GabEdit hvor det er behov for å
+definere flere typer arbeidsfil.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+LC_FILADM * pFil i Peker til filen
+short type i Filtypen som skal settes
+ LC_FILTYPE_UKJENT
+ LC_FILTYPE_INAKTIV
+ LC_FILTYPE_GAB_EIENDOM
+ LC_FILTYPE_GAB_ADRESSE
+ LC_FILTYPE_GAB_BYGNING
+ LC_FILTYPE_BYGG
+ LC_FILTYPE_DEK
+ LC_FILTYPE_DEK_ENDRING
+ LC_FILTYPE_GRUNNKRETS
+ LC_FILTYPE_POSTKRETS
+ LC_FILTYPE_SKOLEKRETS
+ LC_FILTYPE_KIRKESOGN
+ LC_FILTYPE_TETTSTED
+ LC_FILTYPE_VALGKRETS
+Bruk:
+LC_SetFilType(pFil,type);
+=============================================================================
+
+SK_EntPnt_FYBA void LC_SetFilType(LC_FILADM *pFil, short sType)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_GetFilType"NAME="LC_GetFilType"></A><H2>LC_GetFilType</H2>
+<BIG><I><B>Henter filtype for en sosifil</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Finner filtypen for en fil.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+LC_FILADM * pFil i Peker til filen
+short type r Filtypen som skal settes
+ LC_FILTYPE_UKJENT
+ LC_FILTYPE_INAKTIV
+ LC_FILTYPE_GAB_EIENDOM
+ LC_FILTYPE_GAB_ADRESSE
+ LC_FILTYPE_GAB_BYGNING
+ LC_FILTYPE_BYGG
+ LC_FILTYPE_DEK
+ LC_FILTYPE_DEK_ENDRING
+ LC_FILTYPE_GRUNNKRETS
+ LC_FILTYPE_POSTKRETS
+ LC_FILTYPE_SKOLEKRETS
+ LC_FILTYPE_KIRKESOGN
+ LC_FILTYPE_TETTSTED
+ LC_FILTYPE_VALGKRETS
+Bruk:
+type = LC_GetFilType(pFil);
+=============================================================================
+
+SK_EntPnt_FYBA short LC_GetFilType(LC_FILADM *pFil)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_ErLik_Avrundet"NAME="LC_ErLik_Avrundet"></A><H2>LC_ErLik_Avrundet</H2>
+<BIG><I><B>Rund av og sjekk om sammenfallende punkt</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Runder av til valgt enhet, og sjekker om de to punktene er sammenfallende.
+(Avviket er mindre enn 1/10 enhet både nord og øst)
+Parametre:
+Type Navn I/U Forklaring
+---------------------------------------------------------------------------
+double dA1 i P1
+double dN1 i
+double dA2 i P2
+double dN2 i
+double dEnhet i Enhet som skal brukes i sammenligningen
+bool bErLike r Status: true = Samme koordinat
+ false = Ikke samme koordinat
+Bruk:
+bSammenfallende = LC_ErLik(dA1,dN1,dA2,dN2,dEnhet);
+ ===========================================================================
+
+SK_EntPnt_FYBA bool LC_ErLik_Avrundet(double dA1,double dN1,double dA2, double dN2, double dEnhet)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_ErLik_IkkeAvrundet"NAME="LC_ErLik_IkkeAvrundet"></A><H2>LC_ErLik_IkkeAvrundet</H2>
+<BIG><I><B>Sjekk om sammenfallende punkt (uten avrunding)</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Sjekker om de to punktene er sammenfallende innen gitt nøyaktighet.
+Det skjer ingen avrunding av koordinatene før sammenligningen.
+(Avviket er mindre enn 1/10 enhet både nord og øst)
+Parametre:
+Type Navn I/U Forklaring
+---------------------------------------------------------------------------
+double dA1 i P1
+double dN1 i
+double dA2 i P2
+double dN2 i
+double dEnhet i Enhet som skal brukes i sammenligningen
+bool bErLike r Status: true = Samme koordinat
+ false = Ikke samme koordinat
+Bruk:
+bSammenfallende = LC_ErLik(dA1,dN1,dA2,dN2,dEnhet);
+ ===========================================================================
+
+SK_EntPnt_FYBA bool LC_ErLik_IkkeAvrundet(double dA1,double dN1,double dA2, double dN2, double dEnhet)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_ErReferert"NAME="LC_ErReferert"></A><H2>LC_ErReferert</H2>
+<BIG><I><B>Sjekk om gruppe er referert</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Sjekker om aktuell gruppe er referert fra andre grupper.
+Parametre:
+Type Navn I/U Forklaring
+---------------------------------------------------------------------------
+bool bReferert r Det finnes referanser til gruppen
+Bruk:
+bReferert = LC_ErReferert();
+===========================================================================
+
+SK_EntPnt_FYBA bool LC_ErReferert(void)
+</PRE>
+
+<BR>
+<BR>
+<BR>
+<A ID="O9"NAME="O9"></A><H2>7.2 SOSI-gruppe</H2>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_GetGrNr"NAME="LC_GetGrNr"></A><H2>LC_GetGrNr</H2>
+<BIG><I><B>Hent gruppe-nummer</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Henter gruppenummer for aktuell gruppe.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+LC_BGR * pBgr iu Peker til gruppestruktur der gruppenummer lagres
+short status r Status UT_TRUE=OK, UT_FALSE=ingen aktuell gruppe
+Bruk:
+ status = LC_GetGrNr(&Bgr)
+ ==========================================================================
+
+SK_EntPnt_FYBA short LC_GetGrNr(LC_BGR * pBgr)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_GetGrPara"NAME="LC_GetGrPara"></A><H2>LC_GetGrPara</H2>
+<BIG><I><B>Hent gruppe-parametre</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Henter diverse opplysninger om aktuell gruppe.
+Parametre:
+Type Navn I/U Forklaring
+------------------------------------------------------------------------
+short *ngi u Antall linjer GINFO
+long *nko u Antall koordinater
+short *info u Diverse informasjon. En sum av følgende:
+ GI_PINFO = gruppen har PINFO
+ GI_NAH = gruppen har høyde informasjon (..NØH)
+ GI_NAD = gruppen har dybde informasjon (..NØD)
+ GI_KP = gruppen har knutepunkt (...KP n)
+ GI_REF = gruppen har referanser (.. :n)
+ GI_OY_REF= gruppen har referanser med øy
+ GI_NGIS = gruppen er tatt ut fra NGIS for oppdat.
+ GI_SLETTA = gruppen er sletta (merka som sletta)
+ GI_READ_ONLY = gruppen kan ikke endres.
+short gnavn r Gruppenavn. (Se under <A HREF="file:///LC_RxGr">LC_RxGr</A>)
+Bruk:
+ gnavn = LC_GetGrPara(&ngi,&nko,&info);
+ ==========================================================================
+
+SK_EntPnt_FYBA short LC_GetGrPara(short *ngi,long *nko,unsigned short *info)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_GetGrParaBgr"NAME="LC_GetGrParaBgr"></A><H2>LC_GetGrParaBgr</H2>
+<BIG><I><B>Hent gruppe-parametre for gruppe</I></B></BIG><PRE>
+=============================================================================
+Formål:
+Henter diverse opplysninger om gitt gruppenummer.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+LC_BGR * pBgr i Gruppenummer det ønskes opplysninger om.
+short *ngi u Antall linjer GINFO (0=sletta eller ulovlig nummer)
+long *nko u Antall koordinater
+unsigned short *info u Diverse informasjon. En sum av følgende:
+ GI_PINFO = gruppen har PINFO
+ GI_NAH = gruppen har høyde informasjon (..NØH)
+ GI_NAD = gruppen har døbde informasjon (..NØD)
+ GI_KP = gruppen har knutepunkt (...KP n)
+ GI_REF = gruppen har referanser (.. :n)
+ GI_OY_REF= gruppen har referanser med øy
+ GI_NGIS = gruppen er tatt ut fra NGIS for oppdat.
+ GI_SLETTA = gruppen er sletta (merka som sletta)
+ GI_READ_ONLY = gruppen kan ikke endres.
+short gnavn r Gruppenavn. (Se under <A HREF="file:///LC_RxGr">LC_RxGr</A>)
+Bruk:
+ gnavn = LC_GetGrParaBgr(pBgr,&ngi,&nko,&info,&snr);
+ =============================================================================
+
+SK_EntPnt_FYBA short LC_GetGrParaBgr(LC_BGR * pBgr,short *ngi,long *nko,unsigned short *info)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_GetGrFi"NAME="LC_GetGrFi"></A><H2>LC_GetGrFi</H2>
+<BIG><I><B>Hent gruppe-filnr</I></B></BIG><PRE>
+=============================================================================
+Formål:
+Henter peker til FilAdm for aktuell gruppe.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+LC_FILADM * *ppFil u Peker til FilAdm-peker
+short status r UT_TRUE = OK, UT_FALSE = Ingen aktuell gruppe
+Bruk:
+ status = LC_GetGrFi(&pFil);
+ =============================================================================
+
+SK_EntPnt_FYBA short LC_GetGrFi(LC_FILADM **ppFil)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_SetEndringsstatus"NAME="LC_SetEndringsstatus"></A><H2>LC_SetEndringsstatus</H2>
+<BIG><I><B>Setter endringsstatus for aktuell gruppe</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Setter endringsstatus for aktuell gruppe.
+NB! Denne rutinen bør normalt ikke brukes av vanlige klient-program!
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+short sStatus i Kode for endring:
+ END_UENDRA 0 Ikke endra
+ END_KOPI 1 Endra ved totalkopi fra annen gruppe
+ END_ENDRA 2 Endra ved normal Put fra program
+Bruk:
+LC_dg_SetEndringsstatus(END_KOPI);
+=============================================================================
+
+SK_EntPnt_FYBA void LC_SetEndringsstatus(short sStatus)
+</PRE>
+
+<BR>
+<BR>
+<BR>
+<A ID="O10"NAME="O10"></A><H2>7.3 Hode, aktuell gruppe</H2>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_NyttHode"NAME="LC_NyttHode"></A><H2>LC_NyttHode</H2>
+<BIG><I><B>Lager nytt hode</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Legger inn et standard SOSI-filhode i ginfo i aktuell gruppe.
+Parametre:
+ ingen
+Bruk:
+ LC_NyttHode();
+==========================================================================
+
+SK_EntPnt_FYBA void LC_NyttHode(void)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_TestHode"NAME="LC_TestHode"></A><H2>LC_TestHode</H2>
+<BIG><I><B>Tester SOSI-hodet</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Sjekker at ginfo i aktuell gruppe er et lovlig SOSI-filhode.
+Parametre:
+ Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+ short ist r status: UT_TRUE=OK, UT_FALSE=feil
+Bruk:
+ ist = LC_TestHode();
+==========================================================================
+
+SK_EntPnt_FYBA short LC_TestHode(void)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_GetOmr"NAME="LC_GetOmr"></A><H2>LC_GetOmr</H2>
+<BIG><I><B>Finner ..OMRÅDE i hodet</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Henter ut område fra ginfo i aktuell gruppe.
+OBS! Forutsetter at aktuell gruppe er et SOSI-filhode.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+double *nv_a u Område
+double *nv_n u
+double *oh_a u
+double *oh_n u
+short ist r status: UT_TRUE=OK, UT_FALSE=feil (navn er ikke funnet)
+Bruk:
+ ist = LC_GetOmr(&nv_a,&nv_n,&oh_a,&oh_n);
+==========================================================================
+
+SK_EntPnt_FYBA short LC_GetOmr(double *nv_a,double *nv_n,double *oh_a,double *oh_n)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_PutOmr"NAME="LC_PutOmr"></A><H2>LC_PutOmr</H2>
+<BIG><I><B>Legger inn ..OMRÅDE i hodet</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Legger inn område i ginfo i aktuell gruppe.
+Hvis område ikke har noen utstrekning justeres
+dette med 1 meter i hver retning.
+OBS! Forutsetter at aktuell gruppe er et SOSI-filhode av ny type.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+double nv_a i Område
+double nv_n i
+double oh_a i
+double oh_n i
+short ist r status: UT_TRUE=OK, UT_FALSE=feil
+Bruk:
+ ist = LC_PutOmr(nv_a,nv_n,oh_a,oh_n);
+==========================================================================
+
+SK_EntPnt_FYBA short LC_PutOmr(double nv_a,double nv_n,double oh_a,double oh_n)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_GetTrans"NAME="LC_GetTrans"></A><H2>LC_GetTrans</H2>
+<BIG><I><B>Finner ..TRANSPAR i hodet</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Henter ut transformasjonsparametrene fra ginfo i aktuell gruppe.
+Forutsetter at aktuell gruppe er et SOSI-filhode.
+OBS! Denne rutinen opprettholdes bare for bakoverkompatibilitet.
+ For nye programmer bør LC_GetTransEx benyttes. LC_GetTransEx er
+ kompatibel med nye versjoner av SOSI.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+short *koosys u Koordinatsystem
+double *origo_a u Origo øst
+double *origo_n u Origo nord
+double *enhet u Enhet
+double *enhet_h u ...ENHET-H
+double *enhet_d u ...ENHET-D
+short ist r status: UT_TRUE=OK, UT_FALSE=feil (navn er ikke funnet)
+Bruk:
+ ist = LC_GetTrans(&koosys,&origo_a,&origo_n,&enhet,&enhet_h,&enhet_d);
+==========================================================================
+
+SK_EntPnt_FYBA short LC_GetTrans(short *koosys,double *origo_a,double *origo_n,double *enhet,
+ double *enhet_h,double *enhet_d)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_GetTransEx"NAME="LC_GetTransEx"></A><H2>LC_GetTransEx</H2>
+<BIG><I><B>Henter ..TRANSPAR fra hodet</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Henter ut innholdet under ..TRANSPAR fra ginfo i aktuell gruppe.
+OBS! Forutsetter at aktuell gruppe er et SOSI-filhode.
+Må velge mellom KOORDSYS, TRANSSYS eller GEOSYS. Kun en av disse kan benyttes i filhodet.
+KOORDSYS er den mest vanlige måte å definere referansesystem.
+GEOKOORD skal benyttes for GEOSYS og for TRANSSYS
+Må velge mellom VERT-DATUM eller VERT-INT.
+VERT-DATUM er den mest vanlige beskrivelsesmåten.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+unsigned short *pusMaske iu [Inn] Styrer hvilke deler av TRANSPAR som skal hentes
+ [Ut] Viser hvilke deler av TRANSPAR som er funnet/hentet.
+ Følgende konstanter er definert:
+ LC_TR_ALLT - Alle deler av ..TRANSPAR hentes
+ LC_TR_KOORDSYS - Koordsys
+ LC_TR_TRANSSYS - Transsys
+ LC_TR_GEOSYS - Geosys
+ LC_TR_GEOKOORD - Geokoord
+ LC_TR_ORIGO - Origo-nø
+ LC_TR_ENHET - Enhet
+ LC_TR_ENHETH - Enhet-h
+ LC_TR_ENHETD - Enhet-d
+ LC_TR_VERTDATUM - Vert-datum
+ LC_TR_VERTINT - Vert-int
+ LC_TR_VERTDELTA - Vert-delta
+LC_TRANSPAR * pTrans iu Peker til struktur som skal motta ..TRANSPAR informasjonen.
+short sStatus r Status: UT_TRUE=OK, UT_FALSE=feil (ikke funnet).
+Bruk:
+unsigned short usMaske = LC_TR_ALLT;
+LC_TRANSPAR Trans;
+ist = LC_GetTransEx(&usMaske,&Trans);
+==========================================================================
+
+SK_EntPnt_FYBA short LC_GetTransEx(unsigned short *pusMaske, LC_TRANSPAR * pTrans)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_PutTrans"NAME="LC_PutTrans"></A><H2>LC_PutTrans</H2>
+<BIG><I><B>Legger inn ..TRANSPAR i hodet</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Legger inn transformasjonsparametrene i ginfo i aktuell gruppe.
+Forutsetter at aktuell gruppe er et SOSI-filhode versjon 3.x.
+OBS! Denne rutinen opprettholdes bare for bakoverkompatibilitet.
+ For nye programmer bør LC_PutTransEx benyttes. LC_PutTransEx er
+ kompatibel med nye versjoner av SOSI.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+short koosys i Koordinatsystem
+double origo_a i Origo øst
+double origo_n i Origo nord
+double enhet i Enhet
+double enhet_h i Enhet-H
+double enhet_d i Enhet-D
+short ngi r Antall GINFO-linjer etter oppdateringen.
+Bruk:
+ ngi = LC_PutTrans(koosys,origo_a,origo_n,enhet,enhet_h,enhet_d);
+==========================================================================
+
+SK_EntPnt_FYBA short LC_PutTrans(short koosys,double origo_a,double origo_n,
+ double enhet,double enhet_h,double enhet_d)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_PutTransEx"NAME="LC_PutTransEx"></A><H2>LC_PutTransEx</H2>
+<BIG><I><B>Legger inn ..TRANSPAR i hodet</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Legger inn innholdet under ..TRANSPAR i ginfo i aktuell gruppe.
+OBS! Forutsetter at aktuell gruppe er et SOSI-filhode versjon 3.x.
+Må velge mellom KOORDSYS, TRANSSYS eller GEOSYS.
+Kun en av disse kan benyttes i filhodet.
+KOORDSYS er den mest vanlige måte å definere referansesystem.
+GEOKOORD skal benyttes for GEOSYS og for TRANSSYS
+Må velge mellom VERT-DATUM eller VERT-INT.
+VERT-DATUM er den mest vanlige beskrivelsesmåten.
+Følgende kompaktifisering brukes:
+ ..TRANSPAR
+ ...KOORDSYS <SYSKODE> <DATUM> <PROJEK>
+ ...TRANSSYS <TILSYS> <KONSTA1> <KONSTB1> <KONSTA2> <KONSTB2> <KONSTC1> <KONSTC2>
+ ...GEOSYS <GEO-DATUM> <GEO-PROJ> <GEO-SONE>
+ ...GEOKOORD <GEOKOORD>
+ ...ORIGO-NØ <ORIGO-N> <ORIGO-Ø>
+ ...ENHET <ENHET>
+ ...ENHET-H <ENHET-H>
+ ...ENHET-D <ENHET-D>
+ ...VERT-DATUM <HØYDE-REF> <DYBDE-REF> <FRISEIL-REF> <HØYDE-TYPE>
+ ...VERT-INT <H-REF-INT> <D-REF-INT> <F-REF-INT>
+ ...VERT-DELTA <V-DELTA-MIN> <V-DELTA-MAX>
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+unsigned short usMaske i Maske som styrer hvilke deler av TRANSPAR som brukt
+ Følgende konstanter er definert:
+ LC_TR_KOORDSYS - Koordsys
+ LC_TR_TRANSSYS - Transsys
+ LC_TR_GEOSYS - Geosys
+ LC_TR_GEOKOORD - Geokoord
+ LC_TR_ORIGO - Origo-nø
+ LC_TR_ENHET - Enhet
+ LC_TR_ENHETH - Enhet-h
+ LC_TR_ENHETD - Enhet-d
+ LC_TR_VERTDATUM - Vert-datum
+ LC_TR_VERTINT - Vert-int
+ LC_TR_VERTDELTA - Vert-delta
+LC_TRANSPAR * pTrans i Peker til struktur med ..TRANSPAR informasjonen.
+short ngi r Antall GINFO-linjer etter oppdateringen.
+Bruk:
+LC_TRANSPAR Trans;
+unsigned short usMaske = LC_TR_KOORDSYS | LC_TR_ORIGO | LC_TR_ENHET;
+Trans.sKoordsys = 32;
+Trans.dOrigoAust = 0.0;
+Trans.dOrigoNord = 0.0;
+Trans.dEnhet = 1.0;
+ngi = LC_PutTransEx(usMaske,&Trans);
+==========================================================================
+
+SK_EntPnt_FYBA short LC_PutTransEx(unsigned short usMaske, LC_TRANSPAR * pTrans)
+</PRE>
+
+<BR>
+<BR>
+<BR>
+<A ID="O11"NAME="O11"></A><H2>7.4 Hode, direkte fra SOSI-fil</H2>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="HO_New"NAME="HO_New"></A><H2>HO_New</H2>
+<BIG><I><B>Lager nytt hode</I></B></BIG><PRE>
+ =========================================================================
+Formål:
+Genererer et nytt SOSI-filhode.
+Hvis område ikke har noen utstrekning justeres
+dette med 1 meter i hver retning.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+char *pszFil i Fullstendig filnavn
+short koosys i Koordinatsystem
+double origo_a i Origo øst
+double origo_n i Origo nord
+double enhet i Enhet
+double enhet_h i Enhet-H
+double enhet_d i Enhet-D
+double nv_a i Område: Nedre venstre hjørne
+double nv_n i
+double oh_a i Øvre høyre hjørne
+double oh_n i
+short sStatus r Status: UT_TRUE = Funnet
+ UT_FALSE = Ikke funnet
+Bruk:
+sStatus = HO_New(fil,koosys,origo_a,origo_n,enhet,enhet_h-enhet_d,
+ nv_a,nv_n,oh_a,oh_n);
+=============================================================================
+
+SK_EntPnt_FYBA short HO_New(const char *pszFil,short koosys,double origo_a,double origo_n,
+ double enhet,double enhet_h,double enhet_d,
+ double nv_a,double nv_n,double oh_a,double oh_n)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="HO_TestSOSI"NAME="HO_TestSOSI"></A><H2>HO_TestSOSI</H2>
+<BIG><I><B>Tester SOSI-filen</I></B></BIG><PRE>
+=============================================================================
+Formål:
+Sjekker at filen er en SOSI-fil, og finner posisjonen for .SLUTT.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+char *pszFil i Fullstendig filnavn
+UT_INT64 *sluttpos u Posisjon for .SLUTT
+short ist r Status: UT_TRUE = OK
+ UT_FALSE = feil
+Bruk:
+ ist = HO_TestSOSI(pszFil,&sluttpos);
+=============================================================================
+
+SK_EntPnt_FYBA short HO_TestSOSI(const char *pszFil,UT_INT64 *sluttpos)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="HO_GetKvalitet"NAME="HO_GetKvalitet"></A><H2>HO_GetKvalitet</H2>
+<BIG><I><B>Finner kvalitetsopplysninger</I></B></BIG><PRE>
+=============================================================================
+Formål:
+Finne kvalitetsopplysninger i filhode.
+(Ikke aktuellt etter SOSI v. 4.00.)
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+char *pszFil i Fullstendig filnavn
+short *psMetode u Hvordan data er registrert.
+ KVAL_MET_UNDEF metode er udefinert.
+long *pLNnoyaktighet u Registreringsnøyaktighet
+ KVAL_NOY_UKJENT nøyaktighet er ukjent.
+short *psSynbarhet u Synbarhet i bilde
+ KVAL_SYN_UNDEF synbarhet er udefinert.
+short *psHoydeMetode u Hvordan høyden er registrert.
+ KVAL_MET_UNDEF metode er udefinert.
+long *plHoydeNoyaktighet u Registreringsnøyaktighet
+ KVAL_NOY_UKJENT nøyaktighet er ukjent.
+short ist r Statusvariabel: UT_TRUE - OK, ..KVALITET er funnet
+ UT_FALSE - ikke funnet
+Bruk:
+ ist = HO_GetKvalitet(fil,&sMetode,&lNoyaktighet,&sSynbarhet,
+ &sHoydeMetode,&lHoydeNoyaktighet);
+=============================================================================
+
+SK_EntPnt_FYBA short HO_GetKvalitet(const char *pszFil,short *psMetode,long *plNoyaktighet,
+ short *psSynbarhet,short *psHoydeMetode,long *plHoydeNoyaktighet)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="HO_GetTegnsett"NAME="HO_GetTegnsett"></A><H2>HO_GetTegnsett</H2>
+<BIG><I><B>Finner tegnsett</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Finne tegnsett i filhodet.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+char *pszFil i Fullstendig filnavn
+short *psTegnsett u Tegnsett, konstanter definert:
+ TS_DOSN8 = DOS norsk 8-bits(standardverdi)
+ TS_ND7 = Norsk Data 7-bits
+ TS_DECM8 = DEC multinasjonal 8-bits
+ TS_ISO8859 = ISO8859-10 Norsk/samisk tegnsett
+ TS_DECN7 = DEC norsk 7-bits
+short sStatus r Status: UT_TRUE = Funnet
+ UT_FALSE = Ikke funnet
+Bruk:
+ sStatus = HO_GetTegnsett(pszFil,&sTegnsett);
+==========================================================================
+
+SK_EntPnt_FYBA short HO_GetTegnsett(const char *pszFil,short *psTegnsett)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="HO_GetVal"NAME="HO_GetVal"></A><H2>HO_GetVal</H2>
+<BIG><I><B>Finn verdien til et SOSI-navn</I></B></BIG><PRE>
+=============================================================================
+Formål:
+Henter parametrene til et SOSI-navn.
+Strengen ligger i et felles "returbuffer" for alle get-rutiner i fyba.
+Dette blir ødelagt ved neste kall til en "get-rutine". For å ta vare på
+strengen må den kopieres over til egen streng. (Bruk strcpy).
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+char *pszFil i Fullstendig filnavn
+char *sosi_navn i SOSI-navn det skal finnes verdi til
+short *sett_nr i/u i: "Sett nummer"(linjenummer) for start søking (min 1)
+ u: Ved tilslag returneres "Sett nummer" for
+ tilslaget.
+char *para_peker r Peker til parameter-streng avslutta med '/0'.
+ Hvis SOSI-navnet ikke er funnet returneres NULL.
+Bruk:
+para_peker = HO_GetVal(fil,sosi_navn,&sett_nr);
+ =============================================================================
+
+SK_EntPnt_FYBA char *HO_GetVal(const char *pszFil,char *sosi_navn,short *sett_nr)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="HO_GetTrans"NAME="HO_GetTrans"></A><H2>HO_GetTrans</H2>
+<BIG><I><B>Finner .TRANSPAR i hodet</I></B></BIG><PRE>
+=============================================================================
+Formål:
+Henter transformasjonsparametrene fra filhodet.
+OBS! Denne rutinen opprettholdes bare for bakoverkompatibilitet.
+ For nye programmer bør HO_GetTransEx benyttes. HO_GetTransEx er
+ kompatibel med nye versjoner av SOSI.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+char *pszFil i Fullstendig filnavn
+short *koosys u Koordinatsystem
+double *origo_a u ..ORIGO-AUST
+double *origo_n u ..ORIGO-NORD
+double *enhet u ...ENHET
+double *enhet_h u ...ENHET-H
+double *enhet_d u ...ENHET-D
+short sStatus r UT_TRUE, eller UT_FALSE.
+Bruk:
+sStatus = HO_GetTrans(fil,&koosys,&origo_a,&origo_n,&enhet,&enhet_h,&enhet_d);
+ =============================================================================
+
+SK_EntPnt_FYBA short HO_GetTrans(const char *pszFil,short *koosys,double *origo_a,
+ double *origo_n,double *enhet,double *enhet_h,double *enhet_d)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="HO_GetTransEx"NAME="HO_GetTransEx"></A><H2>HO_GetTransEx</H2>
+<BIG><I><B>Finner .TRANSPAR i hodet</I></B></BIG><PRE>
+=============================================================================
+Formål:
+Henter ut innholdet under ..TRANSPAR fra fra filhodet.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+char *pszFil i Fullstendig filnavn
+unsigned short *pusMaske iu [Inn] Styrer hvilke deler av TRANSPAR som skal hentes
+ [Ut] Viser hvilke deler av TRANSPAR som er funnet/hentet.
+ Følgende konstanter er definert:
+ LC_TR_ALLT - Alle deler av ..TRANSPAR hentes
+ LC_TR_KOORDSYS - Koordsys
+ LC_TR_TRANSSYS - Transsys
+ LC_TR_GEOSYS - Geosys
+ LC_TR_GEOKOORD - Geokoord
+ LC_TR_ORIGO - Origo-nø
+ LC_TR_ENHET - Enhet
+ LC_TR_ENHETH - Enhet-h
+ LC_TR_ENHETD - Enhet-d
+ LC_TR_VERTDATUM - Vert-datum
+ LC_TR_VERTINT - Vert-int
+ LC_TR_VERTDELTA - Vert-delta
+LC_TRANSPAR * pTrans iu Peker til struktur som skal motta ..TRANSPAR informasjonen.
+short sStatus r Status: UT_TRUE=OK, UT_FALSE=feil (ikke funnet).
+Bruk:
+unsigned short usMaske = LC_TR_ALLT;
+LC_TRANSPAR Trans;
+ist = HO_GetTransEx("Test.sos",&usMaske,&Trans);
+==========================================================================
+
+SK_EntPnt_FYBA short HO_GetTransEx(const char *pszFil,unsigned short *pusMaske, LC_TRANSPAR * pTrans)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="HO_GetOmr"NAME="HO_GetOmr"></A><H2>HO_GetOmr</H2>
+<BIG><I><B>Finner ..OMRÅDE i hodet</I></B></BIG><PRE>
+=============================================================================
+Formål:
+Henter områdeangivelsen fra filhodet.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+char *pszFil i Fullstendig filnavn
+double *nv_a u
+double *nv_n u
+double *oh_a u
+double *oh_n u
+short sStatus r UT_TRUE, eller UT_FALSE.
+Bruk:
+sStatus = HO_GetOmr(pszFil,&nv_a,&nv_n,&oh_a,&oh_n);
+ =============================================================================
+
+SK_EntPnt_FYBA short HO_GetOmr(const char * pszFil,double *nv_a,double *nv_n,double *oh_a,double *oh_n)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="HO_SjekkTegnsett"NAME="HO_SjekkTegnsett"></A><H2>HO_SjekkTegnsett</H2>
+<BIG><I><B>Sjekker tegnsett på SOSI-filen</I></B></BIG><PRE>
+=============================================================================
+Formål:
+Sjekker faktisk tegnsett i .HODE.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+char *pszFil i Fullstendig filnavn
+short *psTegnsett u Tegnsett, konstanter definert:
+ TS_UKJENT = Fikk ikke sjekket tegnsett
+ TS_DOSN8 = DOS norsk 8-bits(standardverdi)
+ TS_ND7 = Norsk Data 7-bits
+ TS_DECM8 = DEC multinasjonal 8-bits
+ TS_ISO8859 = ISO8859-10 Norsk/samisk tegnsett
+ TS_DECN7 = DEC norsk 7-bits
+short sStatus r Status: 0 = Ikke funnet
+ 1 = Ett tegnsett funnet
+ 2 = Flere tegnsett funnet
+Bruk:
+ sStatus = HO_SjekkTegnsett(fpek,tegnsett);
+=============================================================================
+
+SK_EntPnt_FYBA short HO_SjekkTegnsett(const char *pszFil,short *psTegnsett)
+</PRE>
+
+<BR>
+<BR>
+<HR COLOR=#80ff80 SIZE=5 NOSHADE>
+<BR>
+<BR>
+<BR>
+<A ID="O12"NAME="O12"></A><H1>8 Ny gruppe</H1>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_NyGr"NAME="LC_NyGr"></A><H2>LC_NyGr</H2>
+<BIG><I><B>Ny gruppe i basen</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Lager en ny gruppe i basen, og tildeler serienummer.
+Sjekker at gruppenavnet er lovlig i denne versjon av FYBA.
+Ved feil navn vil ".LINJE" bli valgt.
+Legger inn gruppenavn i buffer.
+Gruppen blir "aktuell" gruppe.
+Sjekker ledig plass både for indeks-fil og sosi-fil.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+LC_FILADM *pFil i Peker til FilAdm
+char *sosi i Gruppenavn (Eks. ".KURVE")
+LC_BGR * pBgr iu Tildelt gruppenummer i basen
+ (Bgr.lNr=INGEN_GRUPPE = Feil, ikke oppretta)
+long snr u Tildelt serienummer
+gnavn short r Gruppenavn. (Se under <A HREF="file:///LC_RxGr">LC_RxGr</A>)
+ INGEN_GRUPPE hvis det ikke er opprettet noen ny gruppe.
+Bruk:
+gnavn = LC_NyGr (pFil,sosi,&Bgr,&snr);
+ =============================================================================
+
+SK_EntPnt_FYBA short LC_NyGr (LC_FILADM *pFil,char *sosi,LC_BGR * pBgr,long *snr)
+</PRE>
+
+<BR>
+<BR>
+<HR COLOR=#80ff80 SIZE=5 NOSHADE>
+<BR>
+<BR>
+<BR>
+<A ID="O13"NAME="O13"></A><H1>9 Direkte les/skriv</H1>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_RxGr"NAME="LC_RxGr"></A><H2>LC_RxGr</H2>
+<BIG><I><B>Les gruppe fra base</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Velger en gruppe som aktiv gruppe, og leser den fra SOSI-filen hvis den
+ikke er i RB fra før. (Styres også av les_sosi.)
+Hvis gruppen ikke finnes (sletta eller ulovlig gruppenummer) returneres
+ngi=0 og nko=0.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+LC_BGR * pBgr i Peker til fil- og gruppenummer.
+short les_sosi i Lesemetode: Følgende konstanter er definert:
+ LES_OPTIMALT (0 = Les mest effektivt base/SOSI)
+ LES_SOSI (1 = Les alltid fra SOSI-filen)
+short *ngi u Antall linjer GINFO
+long *nko u Antall koordinater
+unsigned short *info u Diverse informasjon. En sum av følgende:
+ GI_PINFO = gruppen har PINFO
+ GI_NAH = gruppen har høyde informasjon (..NØH)
+ GI_NAD = gruppen har dybde informasjon (..NØD)
+ GI_KP = gruppen har knutepunkt (...KP n)
+ GI_REF = gruppen har referanser (.. eller ..REF)
+ GI_OY_REF = gruppen har referanser med øy
+ GI_NGIS = gruppen er tatt ut fra NGIS for oppdat.
+ GI_SLETTA = gruppen er sletta (merka som sletta)
+ GI_READ_ONLY = gruppen kan ikke endres.
+short gnavn r Gruppenavn - Følgende konstanter er definert:
+ INGEN_GRUPPE = Gruppen finnes ikke, ikke lest.
+ L_SLUTT = (.SLUTT)
+ L_PUNKT = (.PUNKT)
+ L_LINJE = (.LINJE)
+ L_KURVE = (.KURVE)
+ L_BUE = (.BUE)
+ L_BUEP = (.BUEP)
+ L_SIRKEL = (.SIRKEL)
+ L_SIRKELP = (.SIRKELP)
+ L_KLOTOIDE = (.KLOTOIDE)
+ L_SVERM = (.SVERM)
+ L_TEKST = (.TEKST)
+ L_TRASE = (.TRASE)
+ L_FLATE = (.FLATE)
+ L_BEZIER = (.BEZIER)
+ L_RASTER = (.RASTER)
+ L_DEF = (.DEF)
+ L_OBJDEF = (.OBJDEF)
+ L_MLINJE = (.MLINJE)
+ L_STRUKTUR = (.STRUKTUR)
+ L_OBJEKT = (.OBJEKT)
+ L_SYMBOL = (.SYMBOL)
+ L_HODE = (.HODE)
+
+Bruk:
+ gnavn = LC_RxGr(&Bgr,LES_OPTIMALT,&ngi,&nko,&info);
+ if (info & GI_PINFO) (gruppen har PINFO)
+ ;
+ if (info & GI_KP) (gruppen har KP)
+ ;
+ ==========================================================================
+
+SK_EntPnt_FYBA short LC_RxGr(LC_BGR * pBgr,short les_sosi,short *ngi,long *nko,unsigned short *info)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_WxGr"NAME="LC_WxGr"></A><H2>LC_WxGr</H2>
+<BIG><I><B>Skriv gruppe til base</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Skriver aktuell gruppe til tilhørende SOSI-fil.
+Brukerindeks og geografisk indeks oppdateres straks, uavhengig av kø.
+Ledig plass fram til neste gruppe blir blanket.
+Filhode blir ALLTID skrevet direkte til SOSI-filen.
+Parametre:
+Type Navn I/U Forklaring
+------------------------------------------------------------------------
+short k_stat i Skrivemetode: Følgende konstanter er definert:
+ SKRIV_OPTIMALT = Skriv mest effektivt kø/SOSI
+ SKRIV_SOSI = Skriv direkte til SOSI-filen
+short status r Status: UT_TRUE = OK
+ UT_FALSE = Ikke utført, pga. feil.
+Bruk:
+LC_WxGr(k_stat)
+ ==========================================================================
+
+SK_EntPnt_FYBA short LC_WxGr(short k_stat)
+</PRE>
+
+<BR>
+<BR>
+<HR COLOR=#80ff80 SIZE=5 NOSHADE>
+<BR>
+<BR>
+<BR>
+<A ID="O14"NAME="O14"></A><H1>10 Sekvensiell les/skriv</H1>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_RsGr"NAME="LC_RsGr"></A><H2>LC_RsGr</H2>
+<BIG><I><B>Les gruppe sekvensielt</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Leser en datagruppe fra ekstern SOSI-fil inn i aktuell gruppe i ringbuffer.
+Rutinen tilsvarer put fra brukerprogram inn i ringbufferet, men rutinen
+tildeler selv nødvendig plass..
+Gruppen beholder serienummer tildelt i LC_NyGr.
+Brukerindeks og geografisk-indeks blir ikke oppdatert.
+(Dette skjer først når gruppen skrives til basen.)
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+short *rstat iu Lesestatus
+ Inn: 1=Les fra starten, 0=Les neste
+ Ut: 0=OK, -1=slutten av filen er nådd
+LC_FILADM *pFil i Peker til FilAdm
+short *ngi u Antall linjer GINFO
+long *nko u Antall koordinater
+unsigned short *info u Diverse informasjon. En "sum" av følgende:
+ GI_PINFO = gruppen har PINFO
+ GI_NAH = gruppen har høyde informasjon (..NØH)
+ GI_NAD = gruppen har dybde informasjon (..NØD)
+ GI_KP = gruppen har knutepunkt (...KP n)
+ GI_REF = gruppen har referanser (.. eller ..REF)
+ GI_OY_REF = gruppen har referanser med øy
+ GI_NGIS = gruppen er tatt ut fra NGIS for oppdat.
+ GI_SLETTA = gruppen er sletta (merka som sletta)
+ GI_READ_ONLY = gruppen kan ikke endres.
+long gml_snr u Serienummer gruppen hadde på ekstern fil
+short gnavn r Gruppenavn. (Se under <A HREF="file:///LC_RxGr">LC_RxGr</A>)
+Bruk:
+ gnavn = LC_RsGr(&rstat,pFil,&ngi,&nko,&info,&gml_snr);
+ if (info & GI_PINFO) (gruppen har PINFO)
+ ;
+ if (info & GI_KP) (gruppen har KP)
+ ;
+ ==========================================================================
+
+SK_EntPnt_FYBA short LC_RsGr(short *rstat,LC_FILADM *pFil,short *ngi,long *nko,
+ unsigned short *info,long *gml_snr)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_RsHode"NAME="LC_RsHode"></A><H2>LC_RsHode</H2>
+<BIG><I><B>Les filhode sekvensiellt</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Leser et filhode fra ekstern SOSI-fil inn i aktuell gruppe i ringbuffer.
+Rutinen tilsvarer put fra brukerprogram inn i ringbufret, men rutinen
+tildeler selv nødvendig plass i RB.
+Denne rutinen er stort sett lik LC_RsGr, men LC_RsHode forandrer
+ikke aktuell filposisjon på den sekvensielle filen.
+Gruppen beholder serienummer hodet hadde på SOSI-filen.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+LC_FILADM *pFil i Peker til FilAdm
+short *ngi u Antall linjer GINFO
+long *nko u Antall koordinater
+unsigned short *info u Diverse informasjon. En "sum" av følgende:
+ GI_PINFO = gruppen har PINFO
+ GI_NAH = gruppen har høyde informasjon (..NØH)
+ GI_NAD = gruppen har dybde informasjon (..NØD)
+ GI_KP = gruppen har knutepunkt (...KP n)
+ GI_REF = gruppen har referanser (.. :n)
+ GI_OY_REF= gruppen har referanser med øy
+short gnavn r Gruppenavn. (Se under <A HREF="file:///LC_RxGr">LC_RxGr</A>)
+Bruk:
+ gnavn = LC_RsHode(pFil,&ngi,&nko,&info);
+ =============================================================================
+
+short LC_RsHode(LC_FILADM *pFil,short *ngi,long *nko,unsigned short *info)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_WsGr"NAME="LC_WsGr"></A><H2>LC_WsGr</H2>
+<BIG><I><B>Skriv gruppe sekvensiellt</I></B></BIG><PRE>
+=============================================================================
+Formål:
+Skriver aktuell gruppe til ekstern, sekvensiell SOSI-fil.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+LC_FILADM *pFil i Peker til FilAdm
+Bruk:
+LC_WsGr(pFil);
+ =============================================================================
+
+SK_EntPnt_FYBA void LC_WsGr(LC_FILADM *pFil)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_WsGrPart"NAME="LC_WsGrPart"></A><H2>LC_WsGrPart</H2>
+<BIG><I><B>Skriv del av gruppe sekvensiellt</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Skriver en del av aktuell gruppe til ekstern, sekvensiell SOSI-fil.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+LC_FILADM *pFil i Peker til FilAdm
+long fra_punkt i Punktnummer for første koordinat som skal skrives.
+ (Lovlig: 1 <= fra_punkt <= nko)
+long antall i Antall koordinatlinjer som skal skrives.
+ (Lovlig: 0 <= antall <= nko)
+Bruk:
+LC_WsGrPart(pFil,fra_punkt,antall);
+ ==========================================================================
+
+SK_EntPnt_FYBA void LC_WsGrPart(LC_FILADM *pFil,long fra_punkt,long antall)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_EndreHode"NAME="LC_EndreHode"></A><H2>LC_EndreHode</H2>
+<BIG><I><B>Endre hodet på eksisterende SOSI-fil</I></B></BIG><PRE>
+=============================================================================
+Formål:
+Skriver aktuell gruppe til starten av sekvensiell SOSI-fil.
+Det er en forutsetning at aktuell gruppe er et filhode.
+Denne rutinen er stort sett lik LC_WsGr, men LC_EndreHode forandrer ikke
+aktuell filposisjon på den sekvensielle filen.
+OBS!
+Det må være nok ledig plass før neste gruppe for tilbakeskrivingen.
+Det er ikke mulig å forandre koordinatsystem, enhet eller origo på fil
+som inneholder data.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+LC_FILADM *pFil i Peker til FilAdm
+short oppdatert r Skrivestatus (1=OK, 0=Det er ikke plass
+ til å skrive hodet)
+Bruk:
+ist = LC_EndreHode(pFil);
+ =============================================================================
+
+SK_EntPnt_FYBA short LC_EndreHode(LC_FILADM *pFil)
+</PRE>
+
+<BR>
+<BR>
+<HR COLOR=#80ff80 SIZE=5 NOSHADE>
+<BR>
+<BR>
+<BR>
+<A ID="O15"NAME="O15"></A><H1>11 Slette gruppe</H1>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_DelGr"NAME="LC_DelGr"></A><H2>LC_DelGr</H2>
+<BIG><I><B>Slett gruppe</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Fjerner aktuell gruppe fra basen.
+Grupper som er tatt ut fra NGIS for oppdatering blir ikke sletta fra
+SOSI-filen, men de blir merka som sletta. (LC_SetNgisModus avgjør da om
+disse kan leses.)
+Det er ikke mulig å slette grupper fra sekvensielle filer, eller grupper
+som er brukt i flater.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+short sStatus r Status: UT_TRUE = OK
+ UT_FALSE = feil, ikke sletta
+Bruk:
+sStatus = LC_DelGr();
+ ==========================================================================
+
+SK_EntPnt_FYBA short LC_DelGr(void)
+</PRE>
+
+<BR>
+<BR>
+<HR COLOR=#80ff80 SIZE=5 NOSHADE>
+<BR>
+<BR>
+<BR>
+<A ID="O16"NAME="O16"></A><H1>12 Tilbakeskriving av buffret info til SOSI-fil</H1>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_Save"NAME="LC_Save"></A><H2>LC_Save</H2>
+<BIG><I><B>Tøm skrivekøa</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Skriver gruppene som ligger i skrivekø ut til SOSI-fil.
+Parametre: ingen
+Bruk:
+LC_Save();
+ ==========================================================================
+
+SK_EntPnt_FYBA void LC_Save(void)
+</PRE>
+
+
+<BR>
+<BR>
+<HR COLOR=#80ff80 SIZE=5 NOSHADE>
+<BR>
+<BR>
+<BR>
+<A ID="O17"NAME="O17"></A><H1>13 Reservere plass i ringbuffer</H1>
+</PRE>
+Dette er rutiner for å tildele/reservere plass til Ginfo/Koordinater
+i ringbufferet, og må utføres før det legges data inn i rungbuffer
+med rutiner som LC_PuGi og LC_PuTK
+
+ OBS: Aktuell datagruppe må først være lest/valgt med rutinene
+ LC_RxGr eller LC_NyGr.
+
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_InsGiL"NAME="LC_InsGiL"></A><H2>LC_InsGiL</H2>
+<BIG><I><B>Skyt inn GINFO-linjer</I></B></BIG><PRE>
+=============================================================================
+Formål:
+Skyter inn linjer GINFO-delen i en gruppe.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+short linje i Linjenummer linjen skal skytes inn forran.
+ (Lovlig: 1 til ngi+1)
+short antall i Antall linjer som skal skytest inn.
+short ngi r Antall GINFO-linjer i gruppen etter innskuddet.
+Bruk:
+ngi = LC_InsGiL(linje, antall);
+ =============================================================================
+
+SK_EntPnt_FYBA short LC_InsGiL(short linje, short antall)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_AppGiL"NAME="LC_AppGiL"></A><H2>LC_AppGiL</H2>
+<BIG><I><B>Heng på en GINFO-linje</I></B></BIG><PRE>
+=============================================================================
+Formål:
+Henger på en linje i GINFO-delen i en gruppe.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+short ngi r Antall GINFO-linjer i gruppen etter utvidelsen.
+ (Linjenumret på den tilføyde linjen.)
+Bruk:
+ngi = LC_AppGiL();
+ =============================================================================
+
+SK_EntPnt_FYBA short LC_AppGiL()
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_InsKoL"NAME="LC_InsKoL"></A><H2>LC_InsKoL</H2>
+<BIG><I><B>Skyt inn koordinatlinjer</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Skyter inn linjer koordinatdelen i en gruppe.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+long linje i Linjenummer linjen skal skytes inn forran.
+ (Lovlig: 1 til nko+1)
+long antall i Antall linjer som skal skytest inn.
+long nko r Antall koordinater i gruppen etter innskuddet.
+Bruk:
+nko = LC_InsKoL(linje, antall);
+ ==========================================================================
+
+SK_EntPnt_FYBA long LC_InsKoL(long linje, long antall)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_AppKoL"NAME="LC_AppKoL"></A><H2>LC_AppKoL</H2>
+<BIG><I><B>Heng på en koordinatlinje</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Henger på en linje i koordinatdelen i en gruppe.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+long nko r Antall koordinater i gruppen etter utvidelsen.
+Bruk:
+nko = LC_AppKoL();
+ ==========================================================================
+
+SK_EntPnt_FYBA long LC_AppKoL()
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_DelGiL"NAME="LC_DelGiL"></A><H2>LC_DelGiL</H2>
+<BIG><I><B>Fjern GINFO-linjer</I></B></BIG><PRE>
+=============================================================================
+Formål:
+Fjerner linjer i GINFO-delen i en gruppe.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+short linje i Første linjenummer som skal fjernes.
+ (Lovlig: 2 til ngi)
+short antall i Antall linjer som skal fjernes.
+short ngi r Antall GINFO-linjer i gruppen etter setting.
+Bruk:
+ngi = LC_DelGiL(linje, antall);
+ =============================================================================
+
+SK_EntPnt_FYBA short LC_DelGiL(short linje, short antall)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_DelKoL"NAME="LC_DelKoL"></A><H2>LC_DelKoL</H2>
+<BIG><I><B>Fjern koordinatlinjer</I></B></BIG><PRE>
+=============================================================================
+Formål:
+Fjerner linjer koordinatdelen i en gruppe.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+long linje i Første linje som skal fjernes.
+ (Lovlig: 1 til nko)
+long antall i Antall linjer som skal fjernes.(Max resten av gruppen)
+long nko r Antall koordinater i gruppen etter blanking.
+Bruk:
+nko = LC_DelKoL(linje, antall);
+ =============================================================================
+
+SK_EntPnt_FYBA long LC_DelKoL(long linje, long antall)
+</PRE>
+
+
+<BR>
+<BR>
+<HR COLOR=#80ff80 SIZE=5 NOSHADE>
+<BR>
+<BR>
+<BR>
+<A ID="O18"NAME="O18"></A><H1>14 Legge data inn i ringbuffer</H1>
+</PRE>
+Dette er rutiner for legge data inn i ringbufferet.
+Rutinene arbeider mot aktuell datagruppe.
+Det forutsettes at det er tildelt plass med rutinene i kapittelet foran.
+(dvs: LC_AppGiL,LC_InsGiL,LC_AppKoL,LC_InsKoL)
+
+OBS: Etter at du er ferdig mned å legge inn nytt innhold må du
+ lagre data med LC_WxGr.
+
+<BR>
+<BR>
+<BR>
+<A ID="O19"NAME="O19"></A><H2>14.1 Kopiere gruppe</H2>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_CopyGr"NAME="LC_CopyGr"></A><H2>LC_CopyGr</H2>
+<BIG><I><B>Kopier gruppe</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Kopierer fra en annen gruppe inn i aktuell gruppe i buffer.
+Rutinen tilsvarer put fra brukerprogram inn i bufret, men rutinen
+tildeler selv nødvendig plass.
+Gruppen beholder serienummer tildelt i LC_NyGr.
+Geografisk-indeks blir ikke oppdatert før gruppen skrives til basen.
+Enhet blir oppdatert slik at opprinnelig enhet blir bevart. Om nødvendig
+legges det inn ..ENHET i GINFO.
+Kvalitet og dato blir oppdatert hvis SOSI-VERSJON < 4.00.
+Hvis det er filhode som kopieres skjer det ingen endring av egenskaper.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+LC_BGR *pBgr i Gruppenummer det skal kopieres fra.
+short ngis i Behandling for ..NGIS-FLAGG:
+ OPPDATER_NGIS (0) = ..NGIS-FLAGG oppdateres i henhold
+ til hodet i filen det kopieres til.
+ BEVAR_NGIS (1) = ..NGIS-FLAGG bevares uforandret i kopien
+short ngi u Antall linjer GINFO
+long nko u Antall koordinater
+unsigned short info u Diverse informasjon. (Se under <A HREF="file:///LC_RxGr">LC_RxGr</A>)
+short gnavn r Gruppenavn. (Se under <A HREF="file:///LC_RxGr">LC_RxGr</A>)
+Bruk:
+ gnavn = LC_CopyGr(&Bgr,ngis,&ngi,&nko,&info)
+ ==========================================================================
+
+SK_EntPnt_FYBA short LC_CopyGr (LC_BGR * pBgr,short ngis,short *ngi,long *nko,unsigned short *info)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_CopyCoord"NAME="LC_CopyCoord"></A><H2>LC_CopyCoord</H2>
+<BIG><I><B>Kopier koordinater fra annen gruppe</I></B></BIG><PRE>
+===========================================================================
+Formål:
+Kopierer koordinater fra en annen gruppe inn i aktuell gruppe i ringbuffer.
+De kopierte koordinatene kommer som en utvidelse av gruppen.
+Rutinen tilsvarer put fra brukerprogram inn i ringbufret, men rutinen
+tildeler selv nødvendig plass i RB.
+Geografisk-indeks blir ikke oppdatert før gruppen skrives til basen.
+Kvalitet og enhet blir automatisk oppdatert slik at gruppene ikke
+mister informasjon.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+LC_BGR *pBgr i Gruppenummer det skal kopieres fra.
+short retning i Buffer-retning:
+ HENT_FORRFRA ( 1) = vanlig,
+ HENT_BAKFRA (-1) = buffer skal snues.
+long til_linje i Linjenummer linjen skal skytes inn forran.
+ (Lovlig: 1 til nko+1)
+short ngi u Antall GINFO-linjer
+long nko u Antall koordinater
+short info u Diverse informasjon. (Se under <A HREF="file:///LC_RxGr">LC_RxGr</A>)
+short sStatus r Status: UT_TRUE=OK, UT_FALSE=ikke utført.
+Bruk:
+sStatus = LC_CopyCoord(bgr,retning,til_linje,&ngi,&nko,&info);
+ =============================================================================
+
+SK_EntPnt_FYBA short LC_CopyCoord(LC_BGR * pBgr,short retning,long til_linje,short *ngi,
+ long *nko,unsigned short *info)
+</PRE>
+
+<BR>
+<BR>
+<BR>
+<A ID="O20"NAME="O20"></A><H2>14.2 Gruppeinformasjon</H2>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_PutGi"NAME="LC_PutGi"></A><H2>LC_PutGi</H2>
+<BIG><I><B>Put GINFO-linje</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Legger inn GINFO-linje rent generellt.
+Dette omfatter også nytt gruppenavn (GINFO-linje 1)
+Ønsker du å endre serienummer må LC_PutSn benyttes.
+Referansenummer legges inn med LC_PutRef.
+Blanke på starten og slutten blir skrella vekk, og SOSI-navnet blir
+konvertert til "store" bokstaver, .ellers lagres det slik det er.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+short lin_nr i Linjenummer i GINFO (1 er første linje)
+char *ginfo i GINFO-streng avslutta med '/0'
+Bruk:
+LC_PutGi(lin_nr,ginfo);
+ ==========================================================================
+
+SK_EntPnt_FYBA void LC_PutGi(short lin_nr, const char *pszGinfo)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_PutGP"NAME="LC_PutGP"></A><H2>LC_PutGP</H2>
+<BIG><I><B>Put GINFO-parameter</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Legger inn et SOSI-navn med verdi.
+Denne rutinen kan brukes til å legge inn ginfo med nytt SOSI-navn.
+Rutinen kan endre antall ginfo-linjer.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+char sosi_navn i Sosi-navn det skal legges inn verdi til
+char verdi i Streng som skal legges inn.
+short *linje_nr u Linjenummer for endringen.
+short ngi r Ant. ginfo-linjer etter endringen.
+Bruk:
+ngi = LC_PutGP(sosi_navn,verdi,&linje_nr);
+ ==========================================================================
+
+SK_EntPnt_FYBA short LC_PutGP(const char *sosi_navn,const char *verdi,short *linje_nr)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_AppGP"NAME="LC_AppGP"></A><H2>LC_AppGP</H2>
+<BIG><I><B>Legg til GINFO-parameter</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Legger til et SOSI-navn med verdi i GINFO.
+Lik LC_PutGP, men legger alltid til ny linje i ginfo.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+char sosi_navn i Sosi-navn det skal legges inn verdi til
+char verdi i Streng som skal legges inn.
+short *linje_nr u Linjenummer for endringen.
+short ngi r Ant. ginfo-linjer etter endringen.
+Bruk:
+ngi = LC_AppGP(sosi_navn,verdi,&linje_nr);
+ ==========================================================================
+
+SK_EntPnt_FYBA short LC_AppGP(const char *sosi_navn,const char *verdi,short *linje_nr)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_UpdateGP"NAME="LC_UpdateGP"></A><H2>LC_UpdateGP</H2>
+<BIG><I><B>Endre GINFO-parameter</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Legger inn parametren til et SOSI-navn.
+Rutinen handterer at det er flere SOSI-navn på samme linje.
+OBS! Denne rutinen kan ikke brukes til å legge inn nytt SOSI-navn.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+short linje_nr i Linjenummer som skal endres.
+char sosi_navn i Sosi-navn det skal legges inn verdi til
+char verdi i Streng som skall legges inn
+short ist r 1=ok, 0=navnet er ikke funnet
+Bruk:
+ist = LC_UpdateGP(linje_nr,sosi_navn,verdi);
+ ==========================================================================
+
+SK_EntPnt_FYBA short LC_UpdateGP(short linje_nr,const char *sosi_navn,const char *verdi)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_UpdateGiEnhet"NAME="LC_UpdateGiEnhet"></A><H2>LC_UpdateGiEnhet</H2>
+<BIG><I><B>Oppdater ..ENHET i GINFO</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Setter koordinat-enhet for gruppen.
+Oppdaterer ..ENHET / ..ENHET-H / ..ENHET-D i GINFO.
+Rutinen handterer selv tildeling eller sletting av GINFO-linje.
+Hvis verdien er lik filhodets verdi blir det ikke lagt inn verdi i GINFO.
+Enhet = 0.0 = bruk filhodets enhet, og fører til at det ikke legges inn
+i GINFO. Eventuell eksisterende linje jgernes.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+LC_FILADM * pFil i Peker til FilAdm
+double enhet i Grunnriss-enhet
+double enhet_h i Høyde-enhet
+double enhet_d i Dybde-enhet
+ngi short r Antall GINFO-linjer etter oppdatering
+Bruk:
+ngi = LC_UpdateGiEnhet(pFil,enhet,enhet_h,enhet_d);
+ ==========================================================================
+
+SK_EntPnt_FYBA short LC_UpdateGiEnhet(LC_FILADM *pFil,double enhet,double enhet_h,double enhet_d)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_UpdateGiKvalitet"NAME="LC_UpdateGiKvalitet"></A><H2>LC_UpdateGiKvalitet</H2>
+<BIG><I><B>Oppdaterer ..KVALITET i Ginfo</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Oppdaterer GINFO med ..KVALITET
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+Parametre:
+LC_FILADM *pFil i Peker til FilAdm for sosifil kvalitet skal
+ testes mot.
+short sMetode i Metode i ..KVALITET
+long lNoyaktighet i Nøyaktighet i ..KVALITET
+short sSynbarhet i Synbarhet i ..KVALITET
+short sHoydeMetode i HøydeMetode i ..KVALITET
+long lHoydeNoyaktighet i HøydeNøyaktighet i ..KVALITET
+short ngi r Antall linjer i ginfo.
+Bruk:
+ ngi = LC_UpdateGiKvalitet(pFil,sMetode,lNoyaktighet,sSynbarhet,
+ sHoydeMetode,lHoydeNoyaktighet);
+==========================================================================
+
+SK_EntPnt_FYBA short LC_UpdateGiKvalitet(LC_FILADM *pFil,short sMetode,long lNoyaktighet,
+ short sSynbarhet,short sHoydeMetode,long lHoydeNoyaktighet)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_UpdatePiKvalitet"NAME="LC_UpdatePiKvalitet"></A><H2>LC_UpdatePiKvalitet</H2>
+<BIG><I><B>Oppdaterer ...KVALITET i Pinfo</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Oppdaterer PINFO med ...KVALITET
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+LC_FILADM * pFil i Peker til FilAdm for sosifil kvalitet
+ skal testes mot.
+long pnr i Punktnummer som skal oppdateres.
+short sMetode i Metode i ..KVALITET
+long lNoyaktighet i Nøyaktighet i ..KVALITET
+short sSynbarhet i Synbarhet i ..KVALITET
+short sHoydeMetode i HøydeMetode i ..KVALITET
+long lHoydeNoyaktighet i HøydeNøyaktighet i ..KVALITET
+short sStatus r UT_TRUE = OK,
+ UT_FALSE = ikke utført (for lite plass tilgjengelig)
+Bruk:
+sStatus = LC_UpdatePiKvalitet(pFil,pnr,sMetode,lNoyaktighet,sSynbarhet,
+ sHoydeMetode,lHoydeNoyaktighet)
+==========================================================================
+
+SK_EntPnt_FYBA short LC_UpdatePiKvalitet(LC_FILADM *pFil,long pnr,short sMetode,long lNoyaktighet,
+ short sSynbarhet,short sHoydeMetode,long lHoydeNoyaktighet)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_OppdaterEndret"NAME="LC_OppdaterEndret"></A><H2>LC_OppdaterEndret</H2>
+<BIG><I><B>Oppdater ..NGIS-FLAGG</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Oppdaterer ..NGIS-FLAGG i GINFO og ajourfører interne tabeller.
+Hvis endring = O_GINFO oppateres tabellene i forhold til
+eksisterende GINFO.
+Parametre:
+Navn Type I/U Forklaring
+--------------------------------------------------------------------------
+endring short i Kode for endring:
+ O_GINFO (0) = Oppdater interne tabeller i fht. GINFO
+ O_ENDRET (1) = Merk for endret og oppdat. tab.
+ O_SLETTET (2) = Merk for slettet og oppdat. tab.
+Bruk:
+LC_OppdaterEndret(O_ENDRET);
+=============================================================================
+
+SK_EntPnt_FYBA void LC_OppdaterEndret(short endring)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_DelGiNavn"NAME="LC_DelGiNavn"></A><H2>LC_DelGiNavn</H2>
+<BIG><I><B>Fjerner egenskap fra GINFO</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Fjerner alle forekomster av gitt egenskap (SOSI-navn) fra GINFO.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+char *pszEgenskapNavn i SOSI-navn som skal slettes
+short ngi r Antall GINFO-linjer i gruppen etter setting
+Bruk:
+ngi = LC_DelGiNavn("..RADIUS");
+ ==========================================================================
+
+SK_EntPnt_FYBA short LC_DelGiNavn(char *pszEgenskapNavn)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_FinnNivo"NAME="LC_FinnNivo"></A><H2>LC_FinnNivo</H2>
+<BIG><I><B>Beregn nivå</I></B></BIG><PRE>
+==============================================================
+Formål:
+Teller antall prikker i starten på egenskapsnavn.
+PARAMETERLISTE:
+Type Navn I/U Merknad
+-------------------------------------------------------------
+char *pszGinfo i Streng med egenskapsnavn i starten
+short sNivo r Antall prikker
+Bruk:
+sNivo = LC_FinnNivo(pszGinfo);
+ ================================================================
+
+SK_EntPnt_FYBA short LC_FinnNivo(const char * pszNavn)
+</PRE>
+
+<BR>
+<BR>
+<BR>
+<A ID="O21"NAME="O21"></A><H2>14.3 Serienummer og referansenummer</H2>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_PutSn"NAME="LC_PutSn"></A><H2>LC_PutSn</H2>
+<BIG><I><B>Put Serienummer</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Legger inn nytt serienummer på aktuell gruppe.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+long snr i Serienummer
+Bruk:
+LC_PutSn(snr);
+ ==========================================================================
+
+SK_EntPnt_FYBA void LC_PutSn(long snr)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_PutRef"NAME="LC_PutRef"></A><H2>LC_PutRef</H2>
+<BIG><I><B>Legger inn referanser i GINFO</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Legger inn et array med referanser til GINFO i aktuell gruppe.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+long ref_array i Gruppenummer for refererte grupper.
+ Start øy, og slutt øy angis ved fiktive gruppenr.
+ Følgende konstanter er definert:
+ START_OY = 9999999L = Start øy.
+ SLUTT_OY = -9999999L = Slutt øy.
+long ant_ref i Antall linjer i ref_array.
+short *ngi r Antall linjer GINFO
+Bruk:
+ ngi = LC_PutRef(ref_array,ant_ref);
+==========================================================================
+
+SK_EntPnt_FYBA short LC_PutRef(long *ref_array,long ant_ref)
+</PRE>
+
+<BR>
+<BR>
+<BR>
+<A ID="O22"NAME="O22"></A><H2>14.4 Koordinater</H2>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_PutTK"NAME="LC_PutTK"></A><H2>LC_PutTK</H2>
+<BIG><I><B>Put koordinat</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Legger inn et punkts koordinater (n,ø) i meter i terreng
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+long punkt_nr i Punktnummer (1 er første punkt)
+double aust i Øst-koordinat i meter i terreng
+double nord i Nord-koordinat i meter i terreng
+Bruk:
+LC_PutTK(punkt_nr,aust,nord);
+ ==========================================================================
+
+SK_EntPnt_FYBA void LC_PutTK(long punkt_nr,double aust,double nord)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_PutTH"NAME="LC_PutTH"></A><H2>LC_PutTH</H2>
+<BIG><I><B>Put høyde</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Legger inn et punkts høyde i meter i terreng
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+long punkt_nr i Punktnummer (1 er første punkt)
+double hoyde i Høyde i meter i terreng. Konstanten
+ HOYDE_MANGLER (-999.999) angir at punktet ikke
+ har høydeverdi.
+Bruk:
+LC_PutTH(punkt_nr,hoyde);
+ ==========================================================================
+
+SK_EntPnt_FYBA void LC_PutTH(long punkt_nr, double hoyde)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_PutTD"NAME="LC_PutTD"></A><H2>LC_PutTD</H2>
+<BIG><I><B>Put dybde</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Legger inn et punkts dybde i meter i terreng
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+long punkt_nr i Punktnummer (1 er første punkt)
+double hoyde i Dybde i meter i terreng. Konstanten
+ HOYDE_MANGLER (-999.999) angir at punktet ikke
+ har dybdeverdi.
+Bruk:
+LC_PutTD(punkt_nr,dybde);
+ ==========================================================================
+
+SK_EntPnt_FYBA void LC_PutTD(long punkt_nr, double dybde)
+</PRE>
+
+<BR>
+<BR>
+<BR>
+<A ID="O23"NAME="O23"></A><H2>14.5 Knutepunkt</H2>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_PutKp"NAME="LC_PutKp"></A><H2>LC_PutKp</H2>
+<BIG><I><B>Put knutepunkt</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Legger inn knutepunktverdi i punktet. Ny verdi skrives over eksisterende
+verdi. (Multiple KP er ikke mulig.)
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+long punkt_nr i Punktnummer (1 er første punkt)
+short kp i Knutepunkt (lovlig verdi 0 - SHRT_MAX)
+ kp == 0 fjerner knutepunkt.
+Bruk:
+LC_PutKp(punkt_nr,kp);
+ ==========================================================================
+
+SK_EntPnt_FYBA void LC_PutKp(long punkt_nr, short kp)
+</PRE>
+
+<BR>
+<BR>
+<BR>
+<A ID="O24"NAME="O24"></A><H2>14.6 Punktinformasjon</H2>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_PutPi"NAME="LC_PutPi"></A><H2>LC_PutPi</H2>
+<BIG><I><B>Put PINFO</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Legger inn hele punktinformasjonen på angitte punkt
+Ny verdi skriver over eksisterende verdi.
+Verdi "" fjerner eksisterende PINFO.
+Knutepunkt legges inn med LC_PutKp.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+long punkt_nr i Punktnummer (1 er første punkt)
+char *pinfo i PINFO-streng som skal legges inn
+ (Knutepunkt regnes ikke som pinfo)
+short sStatus r UT_TRUE = OK,
+ UT_FALSE = ikke utført (for lite plass tilgjengelig)
+Bruk:
+sStatus = LC_PutPi(punkt_nr,pinfo);
+ ==========================================================================
+
+SK_EntPnt_FYBA short LC_PutPi(long punkt_nr, const char *pinfo)
+</PRE>
+
+<BR>
+<BR>
+<HR COLOR=#80ff80 SIZE=5 NOSHADE>
+<BR>
+<BR>
+<BR>
+<A ID="O25"NAME="O25"></A><H1>15 Hente data fra ringbuffer</H1>
+</PRE>
+Dette er rutiner for hente data ut fra ringbufferet.
+Rutinene arbeider mot current datagruppe.
+Denne kan du ha fått inn enten ved les fra SOSI-fil eller at du er i
+etableringsfasen av en ny.
+
+<BR>
+<BR>
+<BR>
+<A ID="O26"NAME="O26"></A><H2>15.1 Generell verdi til et SOSI-navn</H2>
+</PRE>
+I henhold til den generelle mekanisme på SOSI-fila hvor info kan
+være enten i HODE ,GINFO eller PINFO er det behov for rutine som går
+over det hele for å finne aktuell verdi for denne gruppa
+Det tenkes her spesiellt på kavlitetsopplysninger, dato etc.
+
+<BR>
+<BR>
+<BR>
+<A ID="O27"NAME="O27"></A><H2>15.2 Gruppeinformasjon</H2>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_GetGi"NAME="LC_GetGi"></A><H2>LC_GetGi</H2>
+<BIG><I><B>Get GINFO-linje</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Henter en GINFO-linje som en streng rent generellt.
+Dette omfatter også serienummer og referansenummer.
+Strengen ligger i et felles "returbuffer" for alle get-rutiner i fyba.
+Dette blir ødelagt ved neste kall til en "get-rutine". For å ta vare på
+strengen må den kopieres over til egen streng. (Bruk strcpy).
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+short lin_nr i Linjenummer i GINFO (1 er første linje)
+char *ginfo r Peker til GINFO-streng avslutta med '/0'
+Bruk:
+ginfo = LC_GetGi(lin_nr);
+ ==========================================================================
+
+SK_EntPnt_FYBA char *LC_GetGi(short lin_nr)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_GetGP"NAME="LC_GetGP"></A><H2>LC_GetGP</H2>
+<BIG><I><B>Get GINFO-parameter</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Henter parametrene til et SOSI-navn.
+Strengen ligger i et felles "returbuffer" for alle get-rutiner i fyba.
+Dette blir ødelagt ved neste kall til en "get-rutine". For å ta vare på
+strengen må den kopieres over til egen streng. (Bruk UT_StrCopy).
+Leddnummer, delstreng,skilletegn og formateringskode kan inngå som
+forlengelse av SOSI-navnet.
+Leddnummer for flerleddet parameter angis ved #n.
+Eks: ..GID#2 er bruksnummer.
+Delstreng angis ved: [start:slutt].
+NB! 1 er første tegn.
+Sluttposisjon 0 betyr at resten av strengen skal brukes.
+Eks: ..STRENG[2:0] Posisjon 2 og resten av strengen.
+Skilletegn for flerleddet GINFO. Dette angis ved ^x hvor x er det tegnet
+som skal skrives ut mellom leddene.
+Formateringskode. Dette brukes for å angi plassering av komma og antall
+desimaler i desimaltall.
+Eks: ..AREAL%-3.2 Betyr at ..AREAL fra GINFO skal formateres slik:
+Komma flyttes 3 posisjoner til venstre (divisjon med tusen) og resultatet
+presenteres avrundet til 2 desimaler.
+Eks: ..DYBDE£-1.2 Betyr at ..DYBDE fra GINFO skal formateres slik:
+Komma flyttes 1 posisjon til venstre (divisjon med ti) og resultatet
+presenteres med 2 desimaler uten avrunding. Spesielt for dybdeverdier.
+Disse tilleggene kan kombineres, slik at ..GID#2[1:2] betyr at det er
+tegn nummer 1 og 2 i det andre leddet (bruksnumret) som skal brukes.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+char sosi_navn i SOSI-navn det skal finnes verdi til.
+ Leddnummer, posisjon, skilletegn
+ og formateringskode kan inngå
+ som forlengelse av navnet.
+ OBS! Store og små bokstaver er signifikante.
+short *forste_linje iu GINFO-linjenummer for start søking
+ (1 er første linje i GINFO.)
+ Ved tilslag returneres linjenummer for tilslaget.
+short siste_linje i Siste GINFO-linje det skal søkes i.
+char *para_peker r Peker til parameter-streng avslutta med '/0'.
+ Hvis SOSI-navnet ikke er funnet returneres NULL.
+Bruk:
+para_peker = LC_GetGP(sosi_navn,&forste_linje,siste_linje);
+ ==========================================================================
+
+SK_EntPnt_FYBA char *LC_GetGP(const char *sosi_navn,short *forste_linje,short siste_linje)
+</PRE>
+
+<BR>
+<BR>
+<BR>
+<A ID="O28"NAME="O28"></A><H2>15.3 Serienummer og referansenummer</H2>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_GetSn"NAME="LC_GetSn"></A><H2>LC_GetSn</H2>
+<BIG><I><B>Get serienummer</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Henter serienummer for aktuell gruppe.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------
+long snr r Serienr. (INGEN_GRUPPE = ingen aktuell gruppe)
+Bruk:
+snr = LC_GetSn();
+ ==========================================================================
+
+SK_EntPnt_FYBA long LC_GetSn(void)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_GetRef"NAME="LC_GetRef"></A><H2>LC_GetRef</H2>
+<BIG><I><B>Hent referanser fra GINFO</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Henter ut et array med referanser fra GINFO i aktuell gruppe.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+long *ref_array u Serienr. for refererte grupper.
+ Start øy, og slutt øy angis ved fiktive gruppenr.
+ Følgende konstanter er definert:
+ START_OY = 9999999L = Start øy.
+ SLUTT_OY = -9999999L = Slutt øy.
+long max_ref i Max antall linjer i ref_array.
+short *gilin i/u linje for start referanselesing
+short *refpos i/u posisjon i linja for neste innlegging i array.
+long ant_ref r Antall linjer brukt i ref_array.
+Bruk:
+ ant_ref = LC_GetRef(ref_array,max_ref,&gilin,&refpos);
+==========================================================================
+
+SK_EntPnt_FYBA long LC_GetRef(long *ref_array,long max_ref,short *gilin,short *refpos)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_InqAntRef"NAME="LC_InqAntRef"></A><H2>LC_InqAntRef</H2>
+<BIG><I><B>Spørr om antall referanser</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Spørr om antall referanser i GINFO i aktuell gruppe.
+Dette kallet kan brukes til å finne hvor stor array som må allokeres før
+kall til LC_GetRef.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+long ant_ref r Antall referanser i GINFO.
+ OBS! Start- og sluttparantes for øy blir regnet
+ som egne referanser.
+Bruk:
+ long lAntRef;
+ short sGiLin,sRefPos;
+ long *plRefArray;
+ lAntRef = LC_InqAntRef();
+ plRefArray = (long *) UT_MALLOC(lAntRef * sizeof(long));
+ sGiLin = 2;
+ sRefPos = 0;
+ LC_GetRef(plRefArray,lAntRef,&sGiLin,&sRefPos);
+==========================================================================
+
+SK_EntPnt_FYBA long LC_InqAntRef(void)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_InitGetRefFlate"NAME="LC_InitGetRefFlate"></A><H2>LC_InitGetRefFlate</H2>
+<BIG><I><B>Initierer status for GetRefFlate</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Initierer status for GetRefFlate.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+LC_GRF_STATUS * pRefStat iu Struktur med statusopplysninger.
+Bruk:
+ LC_InitGetRefFlate(pGrfStat,pBgr);
+==========================================================================
+
+SK_EntPnt_FYBA void LC_InitGetRefFlate(LC_GRF_STATUS * pGS)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_GetRefFlate"NAME="LC_GetRefFlate"></A><H2>LC_GetRefFlate</H2>
+<BIG><I><B>Hent referanser for flate fra GINFO</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Henter ut et array med referanser for flate fra GINFO i aktuell gruppe.
+Parametre:
+Type Navn I/U Forklaring
+-------------------------------------------------------------------------
+LC_GRF_STATUS * GrfStat iu Struktur med statusopplysninger.
+unsigned short usHent i Hva skal hentes:
+ GRF_YTRE = Ytre avgrensing
+ GRF_INDRE = Indre avgrensing, øyer
+ (kan kombineres med | (or).)
+long *ref_array u GRUPPENUMMER for refererte grupper.
+unsigned char *ref_status u Status for gruppene i ref_array.
+ LC_MED_DIG = Brukes MED dig retning.
+ LC_MOT_DIG = Brukes MOT dig retning.
+ GRF_START_OY = Første gruppe i øy
+ GRF_SLUTT_OY = Siste gruppe i øy
+long max_ref i Max antall linjer i ref_array og ref_status.
+long ant_ref r Antall linjer brukt i ref_array.
+ 0 viser at hele flata er behandla.
+Bruk:
+ #define MAX_REF 20
+ long ref_arr[MAX_REF];
+ char ref_status[MAX_REF];
+ long ant_ref;
+ LC_GRF_STATUS GrfStat;
+ LC_InitGetRefFlate(&GrfStat);
+ ant_ref = LC_GetRefFlate(&GrfStat,GRF_YTRE,ref_arr,ref_status,MAX_REF);
+ do {
+ if (ant_ref > 0) {
+ .
+ Behandle ytre avgrensing
+ .
+ }
+ [if (ant_ref < MAX_REF) break;]
+ ant_ref = LC_GetRefFlate(&GrfStat,GRF_YTRE,ref_arr,ref_status,MAX_REF);
+ } while (ant_ref > 0);
+ LC_InitGetRefFlate(&GrfStat);
+ ant_ref = LC_GetRefFlate(&GrfStat,GRF_INDRE,ref_arr,ref_status,MAX_REF);
+ do {
+ if (ant_ref > 0) {
+ .
+ Behandle indre avgrensing (øy)
+ .
+ }
+ [if (ant_ref < MAX_REF) break;]
+ ant_ref = LC_GetRefFlate(&GrfStat,GRF_INDRE,ref_arr,ref_status,MAX_REF);
+ } while (ant_ref > 0);
+==========================================================================
+
+SK_EntPnt_FYBA long LC_GetRefFlate(LC_GRF_STATUS * GrfStat,unsigned short usHent,long *ref_array,
+ unsigned char *ref_status,long max_ref)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_ErLinjeRefLin"NAME="LC_ErLinjeRefLin"></A><H2>LC_ErLinjeRefLin</H2>
+<BIG><I><B>Sjekk om linje inneholder referanser</I></B></BIG><PRE>
+=======================================================================
+Bruk:
+sRefLin = LC_ErLinjeRefLin(gp,sRefLin);
+parametere:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------
+char *pszGinfoLin i Peikar til GINFO-linje
+short sRefLin i Flagg som viser om forrige linje inneholdt referanser
+short sRefLin r Flagg som viser om aktuell linje inneholdt referanser
+Sjekk om linje er linje med referanser.
+=======================================================================
+
+short LC_ErLinjeRefLin(char *pszSosiLin, short sRefLin)
+</PRE>
+
+<BR>
+<BR>
+<BR>
+<A ID="O29"NAME="O29"></A><H2>15.4 Spesielle get-rutiner</H2>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_GetBuePar"NAME="LC_GetBuePar"></A><H2>LC_GetBuePar</H2>
+<BIG><I><B>Beregner parametre som definerer sirkelbue</I></B></BIG><PRE>
+============================================================================
+Formål: fi
+Sirkelbue defineres i SOSI ved en av /
+geometrielementene .SIRKEL, .SIRKELP, /
+.BUE, .BUEP. / /
+Denne rutina regner om til en intern as, ns * -radius- ) dfi
+bueangivelse med sirkelsentrum, radius / /
+og retning til buens startpunkt samt /
+delta for sluttpunktet uansett hvordan /
+buen er definert i SOSI.
+NB! Alle retninger i radianer, 0-retning i øst-aksen og positiv
+omløpsretning mot urviseren.
+Parametre:
+Type Navn I/U Forklaring
+----------------------------------------------------------------------------
+short buff_retning i Buffer-retning (kun for BUE og BUEP)
+ HENT_FORRFRA (1) = Vanlig
+ HENT_BAKFRA (-1) = Buffer skal snues
+double *as u Øst-koordinat sentrum sirkelbue
+double *an u Nord-koordinat sentrum sirkelbue
+double *radius u Radius i sirkelbue.
+double *fi u Retningsvinkel sentrum -> startpunkt bue
+double *dfi u Vinkel mellom fi og sentrum -> sluttpunkt bue
+ dfi > 0 = Positiv omløpsretning(mot klokka)
+ dfi < 0 = Negativ omløpsretning(med klokka)
+short *sfeil u Feilstatus, definert dersom ist = 0
+ 1 = Ulovlig geometritype(ikke bue)
+ 2 = Feil ved beregning av bueparametre
+short ist r Returstatus
+ UT_TRUE = Alt OK
+ UT_FALSE = Feil, se returvariabel sfeil
+Bruk:
+ist = LC_GetBuePar(buff_retning, &as, &ns, &radius, &fi, &dfi, &sfeil )
+ ============================================================================
+
+SK_EntPnt_FYBA short LC_GetBuePar(short buff_retning, double *as, double *ns, double *radius,
+ double *fi, double *dfi, short *sfeil)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_GetBue"NAME="LC_GetBue"></A><H2>LC_GetBue</H2>
+<BIG><I><B>Hent bue</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Henter ut nødvendige opplysninger om en bue.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+short retning i Buffer-retning:
+ HENT_FORRFRA ( 1) = vanlig,
+ HENT_BAKFRA (-1) = buffer skal snues.
+double *a1 u Koordinat i første punkt
+double *n1 u
+double *a2 u Koordinat i siste punkt
+double *n2 u
+double *radius u Radius
+short *storbue u 0=vanlig bue, 1=storbue
+short ist r status: UT_TRUE = OK,
+ UT_FALSE = feil (Gruppen er ikke OK bue)
+Bruk:
+ ist = LC_GetBue(retning,&a1,&n1,&a2,&n2,&radius,&storbue);
+==========================================================================
+
+SK_EntPnt_FYBA short LC_GetBue(short retning,double *a1,double *n1,double *a2,double *n2,
+ double *radius,short *storbue)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_GetBuep"NAME="LC_GetBuep"></A><H2>LC_GetBuep</H2>
+<BIG><I><B>Hent buep</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Henter ut nødvendige opplysninger om en buep.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+short retning i Buffer-retning:
+ HENT_FORRFRA ( 1) = vanlig,
+ HENT_BAKFRA (-1) = buffer skal snues.
+double *a1 u Koordinat i første punkt
+double *n1 u
+double *a2 u Koordinat i midtre punkt
+double *n2 u
+double *a3 u Koordinat i siste punkt
+double *n3 u
+short ist r status: UT_TRUE = OK,
+ UT_FALSE = feil (Gruppen er ikke OK buep)
+Bruk:
+ ist = LC_GetBuep(retning,&a1,&n1,&a2,&n2,&a3,&n3);
+==========================================================================
+
+SK_EntPnt_FYBA short LC_GetBuep(short retning,double *a1,double *n1,double *a2,double *n2,
+ double *a3,double *n3)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_GetSirkel"NAME="LC_GetSirkel"></A><H2>LC_GetSirkel</H2>
+<BIG><I><B>Hent silkel</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Henter ut nødvendige opplysninger om en sirkel.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+double *as u Koordinat i sentrum
+double *ns u
+double *radius u Radius
+short ist r status: UT_TRUE = OK,
+ UT_FALSE = Feil (Gruppen er ikke OK sirkel)
+Bruk:
+ ist = LC_GetSirkel(&as,&ns,&radius);
+==========================================================================
+
+SK_EntPnt_FYBA short LC_GetSirkel(double *as,double *ns,double *radius)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_GetSirkelp"NAME="LC_GetSirkelp"></A><H2>LC_GetSirkelp</H2>
+<BIG><I><B>Hent silkelp</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Henter ut nødvendige opplysninger om en sirkelp.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+double *a1 u Koordinat i P1
+double *n1 u
+double *a2 u Koordinat i P2
+double *n2 u
+double *a3 u Koordinat i P3
+double *n3 u
+short ist r status: UT_TRUE = OK,
+ UT_FALSE = Feil (Gruppen er ikke OK sirkelp)
+Bruk:
+ ist = LC_GetSirkelp(&a1,&n1,&a2,&n2,&a3,&n3);
+==========================================================================
+
+SK_EntPnt_FYBA short LC_GetSirkelp(double *a1,double *n1,double *a2,double *n2,
+ double *a3,double *n3)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_GetKvalitet"NAME="LC_GetKvalitet"></A><H2>LC_GetKvalitet</H2>
+<BIG><I><B>Finner kvalitetsopplysninger</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Finne kvalitetsopplysninger i filhode eller vanlig gruppe.
+(Tolker aktuell gruppe.)
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+short *psMetode u Hvordan data er registrert.
+ KVAL_MET_UNDEF metode er udefinert.
+ KVAL_MET_STD standard metode fra nivå over.
+long *pLNnoyaktighet u Registreringsnøyaktighet
+ KVAL_NOY_UKJENT nøyaktighet er ukjent.
+ KVAL_NOY_STD standard nøyaktighet fra nivå over
+short *psSynbarhet u Synbarhet i bilde
+ KVAL_SYN_UNDEF synbarhet er udefinert.
+ KVAL_SYN_STD standard metode fra nivå over.
+short *psHoydeMetode u Hvordan høyden er registrert.
+ KVAL_MET_UNDEF metode er udefinert.
+ KVAL_MET_STD standard metode fra nivå over.
+long *plHoydeNoyaktighet u Registreringsnøyaktighet
+ KVAL_NOY_UKJENT nøyaktighet er ukjent.
+ KVAL_NOY_STD standard nøyaktighet fra nivå over
+short ist r Status: UT_TRUE = OK, ..KVALITET er funnet
+ UT_FALSE = ikke funnet
+Bruk:
+ ist = LC_GetKvalitet(&sMetode,&lNoyaktighet,&sSynbarhet,
+ &sHoydeMetode,&lHoydeNoyaktighet);
+==========================================================================
+
+SK_EntPnt_FYBA short LC_GetKvalitet(short *psMetode,long *plNoyaktighet,short *psSynbarhet,
+ short *psHoydeMetode,long *plHoydeNoyaktighet)
+</PRE>
+
+<BR>
+<BR>
+<BR>
+<A ID="O30"NAME="O30"></A><H2>15.5 Koordinater</H2>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_GetTK"NAME="LC_GetTK"></A><H2>LC_GetTK</H2>
+<BIG><I><B>Get koordinat</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Henter et punkts koordinater (ø,n) i meter i terreng
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+long punkt_nr i Punktnummer (1 er første punkt)
+double *aust u Øst-koordinat i meter i terreng
+double *nord u Nord-koordinat i meter i terreng
+Bruk:
+LC_GetTK(punkt_nr,&aust,&nord);
+ ==========================================================================
+
+SK_EntPnt_FYBA void LC_GetTK(long punkt_nr,double *aust,double *nord)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_GetArrayTK"NAME="LC_GetArrayTK"></A><H2>LC_GetArrayTK</H2>
+<BIG><I><B>Hent tabell med koordinater</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Henter tabell med koordinater (ø,n) i meter i terreng
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+short retning i Buffer-retning:
+ HENT_FORRFRA ( 1) = vanlig,
+ HENT_BAKFRA (-1) = buffer skal snues.
+long max_antall i Max antall punkt som kan hentes
+long fra_punkt i Fra punktnummer (1 eller nko er første punkt)
+double *aust u Peker til tab. for øst-koordinater
+double *nord u Peker til tab. for nord-koordinater
+long *antall u Antall punkt hentet
+Bruk:
+LC_GetArrayTK(retning,max_antall,fra_punkt,aust,nord,&lest);
+ ==========================================================================
+
+SK_EntPnt_FYBA void LC_GetArrayTK(short retning,long max_antall,long fra_punkt,
+ double *aust,double *nord,long *antall)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_GetTH"NAME="LC_GetTH"></A><H2>LC_GetTH</H2>
+<BIG><I><B>Get høyde</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Henter et punkts høyde i meter i terreng. (Henter BARE FRA PUNKTET.)
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+long punkt_nr i Punktnummer (1 er første punkt)
+double *hoyde r Høyde i meter i terreng. Konstanten
+ HOYDE_MANGLER (-999.999) angir at punktet ikke
+ har høydeverdi.
+Bruk:
+hoyde = LC_GetTH(punkt_nr);
+ ==========================================================================
+
+SK_EntPnt_FYBA double LC_GetTH(long punkt_nr)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_GetArrayTH"NAME="LC_GetArrayTH"></A><H2>LC_GetArrayTH</H2>
+<BIG><I><B>Hent tabell med høyder</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Henter tabell med høyder
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+short retning i Buffer-retning:
+ HENT_FORRFRA ( 1) = vanlig,
+ HENT_BAKFRA (-1) = buffer skal snues.
+long max_antall i Max antall punkt som kan hentes
+long fra_punkt i Fra punktnummer (1 eller nko er første punkt)
+double *aust u Peker til tab. for høyder
+long *antall u Antall punkt hentet
+Bruk:
+LC_GetArrayTH(retning,max_antall,fra_punkt,hoyde,&lest);
+ ==========================================================================
+
+SK_EntPnt_FYBA void LC_GetArrayTH(short retning,long max_antall,long fra_punkt,
+ double *hoyde,long *antall)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_GetHoyde"NAME="LC_GetHoyde"></A><H2>LC_GetHoyde</H2>
+<BIG><I><B>Get høyde</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Henter et punkts høyde i meter i terreng. (Henter fra punktet eller fra
+GINFO.)
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+long punkt_nr i Punktnummer (1 er første punkt)
+double *hoyde r Høyde i meter i terreng. Konstanten
+ HOYDE_MANGLER (-999.999) angir at punktet ikke
+ har høydeverdi.
+Bruk:
+hoyde = LC_GetHoyde(punkt_nr);
+ ==========================================================================
+
+SK_EntPnt_FYBA double LC_GetHoyde(long punkt_nr)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_GetTD"NAME="LC_GetTD"></A><H2>LC_GetTD</H2>
+<BIG><I><B>Get dybde</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Henter et punkts dybde i meter i terreng. (Henter BARE FRA PUNKTET.)
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+long punkt_nr i Punktnummer (1 er første punkt)
+double *dybde r Dybde i meter i terreng. Konstanten
+ HOYDE_MANGLER (-999.999) angir at punktet ikke
+ har dybdeverdi.
+Bruk:
+dybde = LC_GetTD(punkt_nr);
+ ==========================================================================
+
+SK_EntPnt_FYBA double LC_GetTD(long punkt_nr)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_GetDybde"NAME="LC_GetDybde"></A><H2>LC_GetDybde</H2>
+<BIG><I><B>Get dybde</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Henter et punkts dybde i meter i terreng. (Henter fra punktet eller fra
+GINFO.)
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+long punkt_nr i Punktnummer (1 er første punkt)
+double *hoyde r Dybde i meter i terreng. Konstanten
+ HOYDE_MANGLER (-999.999) angir at punktet ikke
+ har høydeverdi.
+Bruk:
+dybde = LC_GetHoyde(punkt_nr);
+ ==========================================================================
+
+SK_EntPnt_FYBA double LC_GetDybde(long punkt_nr)
+</PRE>
+
+<BR>
+<BR>
+<BR>
+<A ID="O31"NAME="O31"></A><H2>15.6 Knutepunkt</H2>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_GetKp"NAME="LC_GetKp"></A><H2>LC_GetKp</H2>
+<BIG><I><B>Get knutepunkt</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Henter knutepunktverdi i punktet.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+long punkt_nr i Punktnummer (1 er første punkt)
+short kp_type r Knutepunkttype (1-4095)
+ (0 = punktet har ikke knutepunkt)
+Bruk:
+kp = LC_GetKp(punkt_nr);
+ ==========================================================================
+
+SK_EntPnt_FYBA short LC_GetKp(long punkt_nr)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_FinnKp"NAME="LC_FinnKp"></A><H2>LC_FinnKp</H2>
+<BIG><I><B>Finn knutepunkt</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Skanner gruppe, og finner punkt som er knutepunkt.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+long *forste_punkt iu Punktnummer for start søking.
+ (1 er første punkt i gruppen.)
+ Ved tilslag returneres punktnummer for tilslaget.
+long siste_punkt i Siste punkt det skal søkes i.
+short *kp u Knutepunkt.
+short status r Søkestatus (1=funnet, 0=ikke funnet)
+Bruk:
+status = LC_FinnKp(&forste_punkt,siste_punkt,kp);
+ ==========================================================================
+
+short LC_FinnKp(long *forste_punkt,long siste_punkt,short *kp)
+</PRE>
+
+<BR>
+<BR>
+<BR>
+<A ID="O32"NAME="O32"></A><H2>15.7 Punktinformasjon</H2>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_GetPi"NAME="LC_GetPi"></A><H2>LC_GetPi</H2>
+<BIG><I><B>Get PINFO</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Henter punktinformasjon i angitte punkt som en streng.
+Strengen ligger i et felles "returbuffer" for alle get-rutiner i fyba.
+Dette blir ødelagt ved neste kall til en "get-rutine". For å ta vare på
+strengen må den kopieres over til egen streng. (Bruk strcpy).
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+long punkt_nr i Punktnummer (1 er første punkt)
+char *pinfo r Peker til punktinformasjon eksklusiv knutepunkt
+Bruk:
+pinfo = LC_GetPi(punkt_nr);
+ ==========================================================================
+
+SK_EntPnt_FYBA char *LC_GetPi(long punkt_nr)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_InitPP"NAME="LC_InitPP"></A><H2>LC_InitPP</H2>
+<BIG><I><B>Initier PINFO-søk</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Initierer søk etter PINFO.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+char sosi_navn i Sosi-navn det skal finnes verdi til
+long forste_punkt i Første punkt. (1 er første pkt i gr)
+long siste_punkt i Siste punkt det skal søkes i
+LC_GETPP_STATUS pp_stat iu Struktur med statusvariabler. Denne er
+ bare for intern bruk i InitPP / GetPP.
+Bruk:
+ Se under LC_GetPP.
+ ==========================================================================
+
+SK_EntPnt_FYBA void LC_InitPP(char *sosi_navn,long forste_punkt,long siste_punkt,
+ LC_GETPP_STATUS *pp_stat)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_GetPP"NAME="LC_GetPP"></A><H2>LC_GetPP</H2>
+<BIG><I><B>Utfør PINFO-søk</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Henter parametrene til et SOSI-navn definert i LC_InitPP.
+Strengen ligger i et felles "returbuffer" for alle get-rutiner i fyba.
+Dette blir ødelagt ved neste kall til en "get-rutine". For å ta vare på
+strengen må den kopieres over til egen streng. (Bruk strcpy).
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+long *punkt u Ved tilslag returneres punktnummer for
+ tilslaget.
+LC_GETPP_STATUS pp_stat iu Struktur med statusvariabler. Denne er
+ bare for intern bruk i InitPP / GetPP.
+char *para_peker r Peker til para.-streng avslutta med '/0'.
+ Hvis ingenting er funnet returneres NULL.
+Bruk:
+.
+ LC_GETPP_STATUS pp_stat;
+.
+LC_InitPP(sosi_navn,forste_punkt,siste_punkt,pp_stat);
+para_peker = LC_GetPP(&punkt,pp_stat);
+ .
+ =============================================================================
+
+SK_EntPnt_FYBA char *LC_GetPP(long *punkt,LC_GETPP_STATUS *pp_stat)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_GetPiVerdi"NAME="LC_GetPiVerdi"></A><H2>LC_GetPiVerdi</H2>
+<BIG><I><B>Get PINFO-verdi</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Henter parametrene til et SOSI-navn.
+Strengen ligger i et felles "returbuffer" for alle get-rutiner i fyba.
+Dette blir ødelagt ved neste kall til en "get-rutine". For å ta vare på
+strengen må den kopieres over til egen streng. (Bruk UT_StrCopy).
+Leddnummer, delstreng og formateringskode kan inngå som
+forlengelse av SOSI-navnet.
+Leddnummer for flerleddet parameter angis ved #n.
+Eks: ...KVALITET#2 er nøyaktighet.
+Delstreng angis ved: [start:slutt].
+NB! 1 er første tegn.
+Sluttposisjon 0 betyr at resten av strengen skal brukes.
+Eks: ..STRENG[2:0] Posisjon 2 og resten av strengen.
+Formateringskode kan angi skilletegn for flerleddet PINFO. Dette
+angis ved ^x hvor x er det tegnet som skal skrives ut mellom leddene.
+Disse tilleggene kan kombineres, slik at ...KVALITET#2[1:2] betyr at
+det er tegn nummer 1 og 2 i det andre leddet (nøyaktigheten) som skal
+brukes.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+char pszSosiNavn i SOSI-navn det skal finnes verdi til.
+ Leddnummer posisjon og formateringskode kan
+ inngå som forlengelse av navnet.
+ OBS! Store og små bokstaver er signifikante.
+ HØYDE er spesialverdi som henter formatert
+ høyde fra punktet eller GINFO.
+ KVALITET er spesialverdi som henter formatert
+ kvalitet fra punktet, GINFO eller hode.
+long lPnr i Punktnummer
+short *sSettNr iu PINFO-nummer (1 er første sett i PINFO.)
+ Ved tilslag returneres settnummer for tilslaget.
+char *pszVerdi r Peker til verdien avslutta med '/0'.
+ Hvis SOSI-navnet ikke er funnet returneres NULL.
+Bruk:
+pszVerdi = LC_GetPiVerdi(pszSosiNavn,lPnr,&sSettNr);
+ ==========================================================================
+
+SK_EntPnt_FYBA char *LC_GetPiVerdi(const char *pszSosiNavn,long lPnr,short *sSettNr)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_TestPi"NAME="LC_TestPi"></A><H2>LC_TestPi</H2>
+<BIG><I><B>Sjekk om punkt har PINFO</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Sjekker om et punkt har PINFO i en eller annen form.
+(PINFO, KP, høyde.)
+Høyde handteres ikke foreløpig.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+long punkt_nr i Punktnummer (1 er første punkt)
+short sTestHoyde i Bryter for å si om høyde skal regnes med i sjekken.
+short sStatus r UT_TRUE=har "pinfo", UT_FALSE=har ikke "pinfo"
+Bruk:
+sStatus = LC_TestPi(punkt_nr,UT_TRUE);
+ ==========================================================================
+
+SK_EntPnt_FYBA short LC_TestPi(long punkt_nr,short sTestHoyde)
+</PRE>
+
+<BR>
+<BR>
+<BR>
+<A ID="O33"NAME="O33"></A><H2>15.8 Spesielle henteoperasjoner</H2>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_GetCurEnhet"NAME="LC_GetCurEnhet"></A><H2>LC_GetCurEnhet</H2>
+<BIG><I><B>Hent enhet på angitt nivå</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Henter ut enhet fra filhode eller GINFO
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+LC_FILADM * pFil i Peker til FilAdm
+short *nivaa iu angir nivå for henting, returnerer aktuelt nivå
+ 1 = filhode
+ 2 = GINFO
+double *enhet u Aktuell enhet
+double *enhet_h u Aktuell enhet-H
+double *enhet_d u Aktuell enhet-D
+Bruk:
+ LC_GetCurEnhet(pFil,&nivaa,&enhet,&enhet_h,&enhet_d);
+==========================================================================
+
+SK_EntPnt_FYBA void LC_GetCurEnhet(LC_FILADM * pFil,short *nivaa, double *enhet,
+ double *enhet_h, double *enhet_d)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_GetCurKvalitet"NAME="LC_GetCurKvalitet"></A><H2>LC_GetCurKvalitet</H2>
+<BIG><I><B>Finner kvalitetsopplysninger på angitt nivå</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Finne kvalitetsopplysninger på angitt nivå, hode ginfo eller pinfo.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+LC_FILADM * pFil i Peker til FilAdm
+short *nivaa iu Hvor skal det letes.
+ 0 = ikke funnet
+ 1 = hode
+ 2 = ginfo
+ 3 = pinfo
+ Returnerer aktuelt nivå.
+long pnr i punktnr. ved spørring på pinfo
+short *psMetode u Hvordan data er registrert.
+ KVAL_MET_UNDEF metode er udefinert.
+long *pLNnoyaktighet u Registreringsnøyaktighet
+ KVAL_NOY_UKJENT nøyaktighet er ukjent.
+short *psSynbarhet u Synbarhet i bilde
+ KVAL_SYN_UNDEF synbarhet er udefinert.
+short *psHoydeMetode u Hvordan høyden er registrert.
+ KVAL_MET_UNDEF metode er udefinert.
+long *plHoydeNoyaktighet u Registreringsnøyaktighet
+ KVAL_NOY_UKJENT nøyaktighet er ukjent.
+short ist r Statusvariabel:
+ UT_TRUE = OK, KVALITET er funnet
+ UT_FALSE = KVALITET er ikke funnet
+Bruk:
+ ist = LC_GetCurKvalitet(pFil,&nivaa,pnr,&sMetode,&lNoyaktighet,
+ &sSynbarhet,&sHoydeMetode,&lHoydeNoyaktighet);
+==========================================================================
+
+SK_EntPnt_FYBA short LC_GetCurKvalitet(LC_FILADM *pFil,short *nivaa,long pnr,
+ short *psMetode,long *plNoyaktighet,short *psSynbarhet,
+ short *psHoydeMetode,long *plHoydeNoyaktighet)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_GetObjtypeBgr"NAME="LC_GetObjtypeBgr"></A><H2>LC_GetObjtypeBgr</H2>
+<BIG><I><B>Hent objekttype</I></B></BIG><PRE>
+=============================================================================
+Formål:
+Henter objekttype for gitt gruppenummer.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+LC_BGR *pBgr i Gruppenummer det ønskes opplysninger om.
+char *pszObjtype r OBJTYPE
+ NULL hvis gruppen ikke finnes
+Bruk:
+pszObjtype = LC_GetObjtypeBgr(pBgr);
+=============================================================================
+
+SK_EntPnt_FYBA const char *LC_GetObjtypeBgr(LC_BGR * pBgr)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_GetElementNavn"NAME="LC_GetElementNavn"></A><H2>LC_GetElementNavn</H2>
+<BIG><I><B>Hent elementnavn</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Hent et elementnavn fra den interne navnetabellen i FYBA.
+Denne tabellen inneholder både gruppenavn (.LINJE, .KURVE, ...) og
+egenskapsnavn (..OBJTYPE, ..LTEMA, ...)
+Tabellen har tre logiske deler:
+ - (Linje 0 - L_HODE): Forhåndsdefinerte gruppenavn.
+ - (Linje L_HODE+1 - L_KP): Forhåndsdefinerte egenskapsnavn.
+ - (Linje L_KP+1 - n): Andre elementnavn brukt i SOSI-filen etter
+ indeksoppbygging.
+Selv om egenskapen blir fjernet fra SOSI-filen blir navnet fortsatt
+liggende i navnetabellen
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+LC_FILADM *pFil i Peker til FilAdm
+short sNavnNr i Linjenummer i navnetabellen (0 - n)
+bool *bBrukt Viser om navnet har/er brukt i filen
+ Hvis det har vært en gruppe som har brukt navnet blir
+ denne stående "true" selv om gruppen er slettet.
+const char *pszNavn r Peker til elementnavn,
+ NULL = ukjent fil eller ulovlig linjenummer
+Bruk:
+// Går gjennom alle navnene ut over de forhåndsdefinerte navnene.
+short sNavnNr = L_KP+1;
+while ((pszNavn = LC_GetElementNavn(pFil,sNavnNr)) != NULL)
+{
+ // Gjør noe med navnet
+ ...
+ ++sNavnNr;
+}
+=============================================================================
+
+SK_EntPnt_FYBA const char *LC_GetElementNavn(LC_FILADM *pFil,short sNavnNr,bool *bBrukt)
+</PRE>
+
+<BR>
+<BR>
+<HR COLOR=#80ff80 SIZE=5 NOSHADE>
+<BR>
+<BR>
+<BR>
+<A ID="O34"NAME="O34"></A><H1>16 Blaing i basen</H1>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_InitNextFil"NAME="LC_InitNextFil"></A><H2>LC_InitNextFil</H2>
+<BIG><I><B>Initier finn neste fil</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Initierer pFil for bruk i finn neste fil.
+Parametre:
+Type Navn I/U Forklaring
+------------------------------------------------------------------------
+LC_FILADM **ppFil u Peker til FilAdm-peker
+Bruk:
+ LC_InitNextFil(&pFil)
+ ==========================================================================
+
+SK_EntPnt_FYBA void LC_InitNextFil(LC_FILADM **ppFil)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_NextFil"NAME="LC_NextFil"></A><H2>LC_NextFil</H2>
+<BIG><I><B>Finn neste fil</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Finn neste fil i aktuell base.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+LC_FILADM **ppFil iu Peker til FilAdm-peker
+unsigned short usLag i Velg hvilke "lag" det skal søkes i.
+ LC_FRAMGR, LC_BAKGR og /eller LC_SEKV
+ (Bruk "|" for å kombinere.)
+short sStatus r Status UT_TRUE=OK, UT_FALSE=ingen flere funnet
+Bruk:
+ LC_FILADM *pFil;
+ Denne løkka går gjennom alle framgrunns-filene i basen
+ LC_InitNextFil(&pFil)
+ while (LC_NextFil(&pFil,LC_FRAMGR)) {
+ pszFilNavn = LC_GetFiNa(pFil);
+ .
+ Behandle filnavnet
+ .
+ }
+ ==========================================================================
+
+SK_EntPnt_FYBA short LC_NextFil(LC_FILADM **ppFil,unsigned short usLag)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_InitNextBgr"NAME="LC_InitNextBgr"></A><H2>LC_InitNextBgr</H2>
+<BIG><I><B>Initier finn neste gruppe</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Initierer Bgr for bruk i finn neste gruppe.
+Parametre:
+Type Navn I/U Forklaring
+------------------------------------------------------------------------
+LC_BGR * pBgr iu Peker til gruppestruktur
+Bruk:
+ LC_InitNextBgr(&Bgr)
+ ==========================================================================
+
+SK_EntPnt_FYBA void LC_InitNextBgr(LC_BGR * pBgr)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_NextBgr"NAME="LC_NextBgr"></A><H2>LC_NextBgr</H2>
+<BIG><I><B>Finn neste gruppe</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Finn neste gruppe i aktuell base.
+Sekvensielle filer blir ikke håndtert.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+LC_BGR * pBgr iu Peker til gruppestruktur der gruppenummer lagres
+unsigned short usLag i Velg hvilke "lag" det skal søkes i.
+ LC_FRAMGR og /eller LC_BAKGR
+ (Bruk "|" for å kombinere.)
+short sStatus r Status UT_TRUE=OK, UT_FALSE=ingen flere grupper
+Bruk:
+ LC_BGR Bgr;
+ Denne løkka går gjennom alle framgrunns-gruppene i basen
+ LC_InitNextBgr(&Bgr);
+ while (LC_NextBgr(&Bgr,LC_FRAMGR)) {
+ gnavn = LC_RxGr(&Bgr,LES_OPTIMALT,&ngi,&nko,&info);
+ .
+ Behandle gruppen
+ .
+ }
+ ==========================================================================
+
+SK_EntPnt_FYBA short LC_NextBgr(LC_BGR * pBgr,unsigned short usLag)
+</PRE>
+
+<BR>
+<BR>
+<HR COLOR=#80ff80 SIZE=5 NOSHADE>
+<BR>
+<BR>
+<BR>
+<A ID="O35"NAME="O35"></A><H1>17 Geografisk søking</H1>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_GetGrWin"NAME="LC_GetGrWin"></A><H2>LC_GetGrWin</H2>
+<BIG><I><B>Hent omskrevet rektangel for gruppe</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Henter omskrevet rektangel for gitt gruppe.
+For flater er refererte grupper medregnet.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+LC_BGR * pBgr i Gruppenummer
+double *nva u Omskrevet rektangel for gruppen. Avrundet utover
+double *nvn u en enhet.
+double *oha u
+double *ohn u
+short ist r Status. UT_TRUE=OK, UT_FALSE=ulovlig gruppenummer.
+Bruk:
+ ist = LC_GetGrWin(&Bgr,&nva,&nvn,&oha,&ohn);
+ ==========================================================================
+
+SK_EntPnt_FYBA short LC_GetGrWin(LC_BGR * pBgr,double *nva,double *nvn,double *oha,double *ohn)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_SBFlate"NAME="LC_SBFlate"></A><H2>LC_SBFlate</H2>
+<BIG><I><B>Sett søkegrense for geografisk søk på flate</I></B></BIG><PRE>
+=============================================================================
+Formål:
+Definerer punkt for geografisk søk på flate.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+LC_GEO_STATUS * pGeoStat iu Peker til struktur for søkestatus
+unsigned short usLag i Velg hvilke "lag" det skal søkes i.
+ LC_FRAMGR og /eller LC_BAKGR
+double nv_a i Koordinat nedre venstre hjørne
+double nv_n i
+double oh_a i Koordinat øvre høyre hjørne
+double oh_n i
+Bruk:
+LC_GEO_STATUS GeoStat;
+.
+LC_SBFlate(&GeoStat,LC_FRAMGR | LC_BAKGR,nv_a,nv_n,oh_a,oh_n);
+if (LC_FFFlate(&GeoStat,&Bgr)) {
+ do{
+ . Behandle funnet gruppe
+ .
+ } while (LC_FNFlate(&GeoStat,&Bgr));
+}
+LC_AvsluttSok(&GeoStat);
+.
+ =============================================================================
+
+SK_EntPnt_FYBA void LC_SBFlate(LC_GEO_STATUS * pGeoStat,unsigned short usLag,
+ double nv_a,double nv_n,double oh_a,double oh_n)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_FFFlate"NAME="LC_FFFlate"></A><H2>LC_FFFlate</H2>
+<BIG><I><B>Finn første ved flatesøk</I></B></BIG><PRE>
+=============================================================================
+Formål:
+Finner første gruppe i det definerte området for flatesøk.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+LC_GEO_STATUS * pGeoStat iu Peker til struktur for søkestatus
+LC_BGR * pBgr u Funnet gruppe
+short sstat r Søkestatus (UT_TRUE=Funnet, UT_FALSE=Ingen funnet)
+Bruk:
+Se under LC_SBFlate.
+ =============================================================================
+
+SK_EntPnt_FYBA short LC_FFFlate(LC_GEO_STATUS * pGeoStat,LC_BGR * pBgr)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_FNFlate"NAME="LC_FNFlate"></A><H2>LC_FNFlate</H2>
+<BIG><I><B>Finn neste ved flatesøk</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Finner neste gruppe i det definerte området for flatesøk.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+LC_GEO_STATUS * pGeoStat iu Peker til struktur for søkestatus
+LC_BGR * pBgr u Funnet gruppe
+short sstat r Søkestatus (UT_TRUE=Funnet, UT_FALSE=Ingen funnet)
+Bruk:
+Se under LC_SBFlate.
+ ==========================================================================
+
+SK_EntPnt_FYBA short LC_FNFlate(LC_GEO_STATUS * pGeoStat,LC_BGR * pBgr)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_SBGeo"NAME="LC_SBGeo"></A><H2>LC_SBGeo</H2>
+<BIG><I><B>Sett søkegrense for grov geografisk søk</I></B></BIG><PRE>
+=============================================================================
+Formål:
+Definerer geografisk område for geografisk søk.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+LC_GEO_STATUS * pGeoStat iu Peker til struktur for søkestatus.
+unsigned short usLag i Velg hvilke "lag" det skal søkes i.
+ LC_FRAMGR og /eller LC_BAKGR
+double nv_a i Koordinat nedre venstre hjørne.
+double nv_n i
+double oh_a i Koordinat øvre høyre hjørne.
+double oh_n i
+Bruk:
+LC_GEO_STATUS GeoStat;
+.
+LC_SBGeo(&GeoStat,LC_FRAMGR | LC_BAKGR,nv_a,nv_n,oh_a,oh_n);
+if (LC_FFGeo(&GeoStat,&Bgr)) {
+ do{
+ . Behandle funnet gruppe
+ .
+ } while (LC_FNGeo(&GeoStat,&bgr));
+}
+LC_AvsluttSok(&GeoStat);
+.
+ =============================================================================
+
+SK_EntPnt_FYBA void LC_SBGeo(LC_GEO_STATUS * pGeoStat,unsigned short usLag,
+ double nv_a,double nv_n,double oh_a,double oh_n)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_FFGeo"NAME="LC_FFGeo"></A><H2>LC_FFGeo</H2>
+<BIG><I><B>Finn første ved geografisk søk</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Finner første gruppe i det definerte området for kombinert geografisk søk.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+LC_GEO_STATUS * pGeoStat iu Peker til struktur for søkestatus
+LC_BGR * pBgr u Funnet gruppe
+short sstat r Søkestatus (UT_TRUE=Funnet, UT_FALSE=Ingen funnet)
+Bruk:
+Se under LC_SBGeo.
+ ==========================================================================
+
+SK_EntPnt_FYBA short LC_FFGeo(LC_GEO_STATUS * pGeoStat,LC_BGR * pBgr)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_FNGeo"NAME="LC_FNGeo"></A><H2>LC_FNGeo</H2>
+<BIG><I><B>Finn neste ved geografisk søk</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Finner neste gruppe i det definerte området for geografisk søk.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+LC_GEO_STATUS * pGeoStat iu Peker til struktur for søkestatus
+LC_BGR * pBgr u Funnet gruppe
+short sstat r Søkestatus (UT_TRUE=Funnet, UT_FALSE=Ingen funnet)
+Bruk:
+Se under LC_SBGeo.
+ ==========================================================================
+
+SK_EntPnt_FYBA short LC_FNGeo(LC_GEO_STATUS * pGeoStat,LC_BGR * pBgr)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_FAGeo"NAME="LC_FAGeo"></A><H2>LC_FAGeo</H2>
+<BIG><I><B>Finn alle ved geografisk søk</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Finn alle i geografisk søkeområde.
+Tilslag merkes i brukttabellen kolonne BT_GEOSOK (15).
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+LC_GEO_STATUS * pGeoStat iu Peker til struktur for søkestatus
+long lAntall r Antall funnet.
+Bruk:
+.
+LC_SBGeo(&GeoStat,LC_FRAMGR | LC_BAKGR,nv_a,nv_n,oh_a,oh_n);
+antall = LC_FAGeo(&Bgr);
+.
+ =============================================================================
+
+SK_EntPnt_FYBA long LC_FAGeo(LC_GEO_STATUS * pGeoStat)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_FFGeoFil"NAME="LC_FFGeoFil"></A><H2>LC_FFGeoFil</H2>
+<BIG><I><B>Finn første ved geografisk søk i en fil</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Finner første gruppe i det definerte området for kombinert geografisk søk.
+Søker bare i en gitt fil.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+LC_GEO_STATUS * pGeoStat iu Peker til struktur for søkestatus
+LC_FILADM * pOnsketFil i Filpeker til den filen det skal søkes i.
+LC_BGR * pBgr u Funnet gruppe
+short sstat r Søkestatus (UT_TRUE=Funnet, UT_FALSE=Ingen funnet)
+Bruk:
+Se under LC_SBGeo.
+ ==========================================================================
+
+SK_EntPnt_FYBA short LC_FFGeoFil(LC_GEO_STATUS * pGeoStat,LC_FILADM *pOnsketFil,LC_BGR * pBgr)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_FNGeoFil"NAME="LC_FNGeoFil"></A><H2>LC_FNGeoFil</H2>
+<BIG><I><B>Finn neste ved geografisk søk i en fil</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Finner neste gruppe i det definerte området for geografisk søk.
+Søker bare i en gitt fil.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+LC_GEO_STATUS * pGeoStat iu Peker til struktur for søkestatus
+LC_FILADM * pFil i Filpeker til den filen det skal søkes i.
+LC_BGR * pBgr u Funnet gruppe
+short sstat r Søkestatus (UT_TRUE=Funnet, UT_FALSE=Ingen funnet)
+Bruk:
+Se under LC_SBGeo.
+ ==========================================================================
+
+SK_EntPnt_FYBA short LC_FNGeoFil(LC_GEO_STATUS * pGeoStat,LC_FILADM *pFil,LC_BGR * pBgr)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_AvsluttSok"NAME="LC_AvsluttSok"></A><H2>LC_AvsluttSok</H2>
+<BIG><I><B>Avslutter geografisk søk</I></B></BIG><PRE>
+=======================================================================
+Bruk:
+parametere:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------
+LC_GEO_STATUS * pGeoStat i Peker til struktur for søkestatus
+Formål:
+Avslutter geografisk søk, og frigir kjede med søkeresultat.
+=======================================================================
+
+SK_EntPnt_FYBA void LC_AvsluttSok(LC_GEO_STATUS * pGeoStat)
+</PRE>
+
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_WTst"NAME="LC_WTst"></A><H2>LC_WTst</H2>
+<BIG><I><B>Vindustest</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Sjekk om aktuell gruppe berører gitt vindu.
+Tar hensyn til gruppenavnet. Handterer (PUNKT, LINJE, KURVE, BUE,
+BUEP, SIRKEL, SIRKELP, SVERM, TRASE ).
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+double nva i Avgrensing av vinduet
+double nvn i
+double oha i
+double ohn i
+short ist r status: 0 = ikke berøring
+ 1 = skjæring
+Bruk:
+.
+LC_SBGeo(&GeoStat,nv_a,nv_n,oh_a,oh_n);
+if (LC_FFGeo(&GeoStat,&Bgr)){
+ do{
+ LC_RxGr(&Bgr,LES_OPTIMALT,&ngi,&nko,&info);
+ if (LC_WTst(nv_a,nv_n,oh_a,oh_n)) { (Nøyaktig vindustest)
+ . Behandle funnet gruppe
+ .
+ }
+ } while (LC_FNGeo(&GeoStat,&Bgr));
+}
+LC_AvsluttSok(&GeoStat);
+.
+ ==========================================================================
+
+SK_EntPnt_FYBA short LC_WTst(double nva,double nvn,double oha,double ohn)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_PTst"NAME="LC_PTst"></A><H2>LC_PTst</H2>
+<BIG><I><B>Polygontest</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Sjekker om gitt punkt ligger innenfor polygon angitt av aktuell gruppe.
+Forutsetter at tabellen danner et lukket polygon
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+double a i Punkt som skal sjekkes
+double n i
+short ist r status: 0 = punktet er utenfor flaten
+ 1 = punktet ligger inne på flaten
+Bruk:
+.
+LC_SBFlate(&GeoStat,a-d,n-d,a+d,n+d);
+if (LC_FFFlate(&GeoStat,&Bgr)) {
+ do{
+ LC_RxGr(&Bgr,LES_OPTIMALT,&ngi,&nko,&info);
+ if (LC_PTst(a,n)){ (Nøyaktig polygontest)
+ . Behandle funnet gruppe
+ .
+ }
+ } while (LC_FNFlate(&GeoStat,&Bgr));
+}
+LC_AvsluttSok(&GeoStat);
+.
+ ==========================================================================
+
+SK_EntPnt_FYBA short LC_PTst(double a,double n)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_PTstOmkrets"NAME="LC_PTstOmkrets"></A><H2>LC_PTstOmkrets</H2>
+<BIG><I><B>Sjekk om punkt ligger inni polygon</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Sjekker om gitt punkt ligger innenfor yttergrensen for polygon angitt
+av aktuell gruppe.
+Forutsetter at tabellen danner et lukket polygon
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+double a i Punkt som skal sjekkes
+double n i
+short ist r status: 0 = punktet er utenfor flaten
+ 1 = punktet ligger inne på flaten
+Bruk:
+ist = LC_PTstOmkrets(a,n);
+ ==========================================================================
+
+SK_EntPnt_FYBA short LC_PTstOmkrets(double a,double n)
+</PRE>
+
+<BR>
+<BR>
+<HR COLOR=#80ff80 SIZE=5 NOSHADE>
+<BR>
+<BR>
+<BR>
+<A ID="O36"NAME="O36"></A><H1>18 Serienummer-søking</H1>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_SBSn"NAME="LC_SBSn"></A><H2>LC_SBSn</H2>
+<BIG><I><B>Sett søkegrense for serienummer</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Setter søkegrenser for serienummersøk.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+LC_SNR_ADM * pSnrAdm iu Peker til statusblokk for serienummersøk
+LC_FILADM * pFil i Peker til FilAdm
+long lMinSnr i Fra og med serienummer
+long lMaxSnr i Til og med serienummer
+Bruk:
+LC_SNR_ADM SnrAdm;
+LC_SBSn(&SnrAdm,pFil,lMinSnr,lMaxSnr);
+=============================================================================
+
+SK_EntPnt_FYBA void LC_SBSn(LC_SNR_ADM * pSnrAdm,LC_FILADM *pFil,long lMinSnr,long lMaxSnr)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_MoveSn"NAME="LC_MoveSn"></A><H2>LC_MoveSn</H2>
+<BIG><I><B>Flytt til gruppenummer for et serienummer</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Finn gruppenummer for et gitt serienummer i søkeområdet for serienummer.
+Intern "aktuellt serienummer" blir endret, slik at videre søk med
+neste/forrige nå tar utgangspunkt i dette serienummer.
+(Bare hvis snr er funnet).
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+LC_SNR_ADM *pSnrAdm iu Peker til statusblokk for serienummersøk
+long lSnr i Serienummer som skal finnes
+LC_BGR *pBgr u Gruppenummer i basen
+short sstat r Søkestatus (UT_TRUE=Funnet, UT_FALSE=Ingen funnet)
+Bruk:
+sstat = LC_MoveSn(pSnrAdm,snr,&Bgr);
+================================================================================
+
+SK_EntPnt_FYBA short LC_MoveSn(LC_SNR_ADM * pSnrAdm,long lSnr,LC_BGR * pBgr)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_FiSn"NAME="LC_FiSn"></A><H2>LC_FiSn</H2>
+<BIG><I><B>Finn gruppenummer for et serienummer</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Finn gruppenummer for et gitt serienummer i søkeområdet for serienummer.
+Endrer IKKE "current gruppe".
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+LC_FILADM *pFil i Peker til FilAdm
+long lSnr i Serienummer som skal finnes
+LC_BGR *pBgr u Gruppenummer i basen
+short sstat r Søkestatus (UT_TRUE=Funnet, UT_FALSE=Ingen funnet)
+Bruk:
+sstat = LC_FiSn(pFil,lSnr,&Bgr);
+================================================================================
+
+SK_EntPnt_FYBA short LC_FiSn(LC_FILADM *pFil,long lSnr,LC_BGR * pBgr)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_FiArraySn"NAME="LC_FiArraySn"></A><H2>LC_FiArraySn</H2>
+<BIG><I><B>Finn gruppenummer for flere serienummer</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Finner gruppenummer for tabell med serienummer.
+Endrer IKKE "current gruppe".
+Serienummertabellen kan være "rå" slik den kommer fra GetRef. Linjer med
+start øy og slutt øy overses.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+LC_FILADM *pFil i Peker til FilAdm
+short antall i Antall linjer brukt i serienummertabellen
+long *snr i Tabell med serienummer som skal finnes
+long *bgr u Tabell med gruppenummer funnet
+ (INGEN_GRUPPE = ikke funnet)
+Bruk:
+LC_FiArraySn(pFil,antall,snr,bgr);
+================================================================================
+
+SK_EntPnt_FYBA void LC_FiArraySn(LC_FILADM *pFil,short antall,long *snr,long *bgr)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_FASn"NAME="LC_FASn"></A><H2>LC_FASn</H2>
+<BIG><I><B>Finn alle serienummer</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Finner alle grupper i fil/serienummer søkeområdet og merker i kolonne
+BT_SNRSOK i brukttabellen.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+LC_SNR_ADM *pSnrAdm i Peker til statusblokk for serienummersøk
+long antall r Antall grupper funnet.
+Bruk:
+antall_funnet = LC_FASn(&SnrAdm);
+=============================================================================
+
+SK_EntPnt_FYBA long LC_FASn(LC_SNR_ADM * pSnrAdm)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_FFSn"NAME="LC_FFSn"></A><H2>LC_FFSn</H2>
+<BIG><I><B>Finn første serienummer</I></B></BIG><PRE>
+=============================================================================
+Formål:
+Finner første gruppe i fil/serienummer søkeområdet.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+LC_SNR_ADM *pSnrAdm iu Peker til statusblokk for serienummersøk
+LC_BGR *pBgr u Gruppenummer
+short sstat r Søkestatus (UT_TRUE=Funnet, UT_FALSE=Ingen funnet)
+Bruk:
+sstat = LC_FFSn(&SnrAdm,&Bgr);
+================================================================================
+
+SK_EntPnt_FYBA short LC_FFSn(LC_SNR_ADM * pSnrAdm,LC_BGR * pBgr)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_FNSn"NAME="LC_FNSn"></A><H2>LC_FNSn</H2>
+<BIG><I><B>Finn neste serienummer</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Finner neste gruppe i fil/serienummer søkeområdet.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+LC_SNR_ADM * pSnrAdm iu Peker til statusblokk for serienummersøk
+LC_BGR * pBgr u Gruppenummer
+short sstat r Søkestatus (UT_TRUE=Funnet, UT_FALSE=Ingen funnet)
+Bruk:
+sstat = LC_FNSn(&SnrAdm,&Bgr);
+================================================================================
+
+SK_EntPnt_FYBA short LC_FNSn(LC_SNR_ADM * pSnrAdm,LC_BGR * pBgr)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_FPSn"NAME="LC_FPSn"></A><H2>LC_FPSn</H2>
+<BIG><I><B>Finn forige serienummer</I></B></BIG><PRE>
+=============================================================================
+Formål:
+Finner forrige gruppe i fil/serienummer søkeområdet.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+LC_SNR_ADM *pSnrAdm iu Peker til statusblokk for serienummersøk
+LC_BGR *pBgr u Gruppenummer
+short sstat r Søkestatus (UT_TRUE=Funnet, UT_FALSE=Ingen funnet)
+Bruk:
+sstat = LC_FPSn(&SnrAdm,&Bgr);
+================================================================================
+
+SK_EntPnt_FYBA short LC_FPSn(LC_SNR_ADM * pSnrAdm,LC_BGR * pBgr)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_FLSn"NAME="LC_FLSn"></A><H2>LC_FLSn</H2>
+<BIG><I><B>Finn siste serienummer</I></B></BIG><PRE>
+=============================================================================
+Formål:
+Finner siste gruppe i fil/serienummer søkeområdet.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+LC_SNR_ADM *pSnrAdm iu Peker til statusblokk for serienummersøk
+LC_BGR *pBgr u Gruppenummer
+short sstat r Søkestatus (UT_TRUE=Funnet, UT_FALSE=Ingen funnet)
+Bruk:
+sstat = LC_FLSn(&SnrAdm,&Bgr);
+================================================================================
+
+SK_EntPnt_FYBA short LC_FLSn(LC_SNR_ADM * pSnrAdm,LC_BGR * pBgr)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_FFSnBt"NAME="LC_FFSnBt"></A><H2>LC_FFSnBt</H2>
+<BIG><I><B>Finn første serienummer med tilleggskrav</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Finner første gruppe som er merka i gitt kolonne i brukttabellen.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+LC_SNR_ADM *pSnrAdm i Peker til statusblokk for serienummersøk
+short kolonne i Kolonne i brukt-tabellen som skal sjekkes
+LC_BGR *pBgr u Gruppenummer
+short sstat r Søkestatus (UT_TRUE=Funnet, UT_FALSE=Ingen funnet)
+Bruk:
+sstat = LC_FFSnBt(&SnrAdm,BT_GEOSOK,&Bgr);
+=============================================================================
+
+SK_EntPnt_FYBA short LC_FFSnBt(LC_SNR_ADM * pSnrAdm,short kolonne,LC_BGR * pBgr)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_FNSnBt"NAME="LC_FNSnBt"></A><H2>LC_FNSnBt</H2>
+<BIG><I><B>Finn neste serienummer med tilleggskrav</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Finner neste gruppe også er merka i gitt kolonne i brukttabellen.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+LC_SNR_ADM *pSnrAdm i Peker til statusblokk for serienummersøk
+short kolonne i Kolonne i brukt-tabellen som skal sjekkes
+LC_BGR *pBgr u Gruppenummer
+short sstat r Søkestatus (UT_TRUE=Funnet, UT_FALSE=Ingen funnet)
+Bruk:
+sstat = LC_FNSnBt(&SnrAdm,BT_GEOSOK,&Bgr);
+================================================================================
+
+SK_EntPnt_FYBA short LC_FNSnBt(LC_SNR_ADM * pSnrAdm,short kolonne,LC_BGR * pBgr)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_FPSnBt"NAME="LC_FPSnBt"></A><H2>LC_FPSnBt</H2>
+<BIG><I><B>Finn forige serienummer med tilleggskrav</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Finner forrige gruppe i fil/serienummer søkeområdet, som også er merka i
+gitt kolonne i brukttabellen.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+LC_SNR_ADM *pSnrAdm i Peker til statusblokk for serienummersøk
+short kolonne i Kolonne i brukt-tabellen som skal sjekkes
+LC_BGR *pBgr u Gruppenummer
+short sstat r Søkestatus (UT_TRUE=Funnet, UT_FALSE=Ingen funnet)
+Bruk:
+sstat = LC_FPSnBt(&SnrAdm,BT_GEOSOK,&Bgr);
+================================================================================
+
+SK_EntPnt_FYBA short LC_FPSnBt(LC_SNR_ADM * pSnrAdm,short kolonne,LC_BGR * pBgr)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_FLSnBt"NAME="LC_FLSnBt"></A><H2>LC_FLSnBt</H2>
+<BIG><I><B>Finn siste serienummer med tilleggskrav</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Finner siste gruppe i fil/serienummer søkeområdet som også er merka i
+gitt kolonne i brukttabellen.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+LC_SNR_ADM *pSnrAdm i Peker til statusblokk for serienummersøk
+short kolonne i Kolonne i brukt-tabellen som skal sjekkes
+LC_BGR *pBgr u Gruppenummer
+short sstat r Søkestatus (UT_TRUE=Funnet, UT_FALSE=Ingen funnet)
+Bruk:
+sstat = LC_FLSnBt(&SnrAdm,BT_GEOSOK,&Bgr);
+================================================================================
+
+SK_EntPnt_FYBA short LC_FLSnBt(LC_SNR_ADM * pSnrAdm,short kolonne,LC_BGR * pBgr)
+</PRE>
+
+<BR>
+<BR>
+<HR COLOR=#80ff80 SIZE=5 NOSHADE>
+<BR>
+<BR>
+<BR>
+<A ID="O37"NAME="O37"></A><H1>19 Egenskapsutvalg</H1>
+FYBA har en egen "utvalgsmotor" som har et rikt sett av utvalgsmetoder.
+Disse metodene er spesiellt tilpasset SOSI-formatet.
+
+<PRE>
+Følgende metoder er definert:
+
+ ! Ikke (Tilslag når SOSI-navnet ikke finnes. Bare GINFO.)
+
+ AL Alle
+
+ <> Fra-til
+
+ >< Utenfor
+
+ < Mindre-enn
+
+ > Større-enn
+
+ / Delelig-med, eventuellt med sjekk på om restverdi er 2. verdi
+
+ !/ Ikke-delelig-med
+
+ () Inneholder
+
+ = Lik
+
+ IV Ikke valgt (Tilslag når gruppen ikke er tegnet ennå.
+ Kombineres med SOSI-navnet "..*")
+
+ != Ikke lik (Tilslag når denne navn og verdi kombinasjonen ikke
+ finnes. (Bare GINFO)
+
+ FL Flere (Tilslag når SOSI-navnet forekommer flere ganger.)
+
+ !FL Ikke flere enn (Tilslag når SOSI-navnet IKKE forekommer
+ flere ganger enn gitt antall.)
+
+</PRE>
+
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_OpenQuery"NAME="LC_OpenQuery"></A><H2>LC_OpenQuery</H2>
+<BIG><I><B>Initier query</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Initierer query mot GINFO/PINFO.
+Tildeler administrasjonsblokk for utvalg.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------
+LC_UT_ADM *UtAdm r Peker til administrasjonsblokk for utvalg.
+Bruk:
+pUtAdm = LC_OpenQuery();
+ ==========================================================================
+
+SK_EntPnt_FYBA LC_UT_ADM *LC_OpenQuery(void)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_CloseQuery"NAME="LC_CloseQuery"></A><H2>LC_CloseQuery</H2>
+<BIG><I><B>Avslutter query</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Avslutter query mot GINFO/PINFO.
+Frigir minne brukt til administrasjon og utvalgstabeller.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+LC_UT_ADM *UtAdm i Peker til administrasjonsblokk for utvalg.
+Bruk:
+LC_CloseQuery(pUtAdm);
+ ==========================================================================
+
+SK_EntPnt_FYBA void LC_CloseQuery(LC_UT_ADM * pUtAdm)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_PutQueryLine"NAME="LC_PutQueryLine"></A><H2>LC_PutQueryLine</H2>
+<BIG><I><B>Legg inn en query-linje</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Legger inn og tolker en linje med query-tekst.
+Parametre:
+Type Navn I/U Forklaring
+------------------------------------------------------------------------
+LC_UT_ADM *UtAdm i Peker til administrasjonsblokk for utvalg.
+char *qulin i Linje med query-tekst. (Uten prikker på første nivå).
+short sType i Gruppe eller Punkt (U_GRUPPE eller U_PUNKT).
+short ist r Status (UT_TRUE=OK, UT_FALSE=linjen er ikke OK)
+Bruk:
+ist = LC_PutQueryLine(pUtAdm,qulin,sType);
+ =============================================================================
+
+SK_EntPnt_FYBA short LC_PutQueryLine(LC_UT_ADM *pUtAdm,const char *qulin,short sType)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_PutQueryRegel"NAME="LC_PutQueryRegel"></A><H2>LC_PutQueryRegel</H2>
+<BIG><I><B>Legg inn et regelnavn</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Legger inn et regelnavn på siste linje i utvalgstabellen.
+(Navnet blir intern konvertert til "store" bokstaver.)
+Parametre:
+Type Navn I/U Forklaring
+------------------------------------------------------------------------
+LC_UTVALG *pU i Peker til utvalg
+char *navn i Regelnavn.
+Bruk:
+LC_PutQueryRegel(pU,navn);
+ =============================================================================
+
+SK_EntPnt_FYBA void LC_PutQueryRegel(LC_UTVALG * pU,const char *navn)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_LesUtvalg"NAME="LC_LesUtvalg"></A><H2>LC_LesUtvalg</H2>
+<BIG><I><B>Les utvalg i kom.filen</I></B></BIG><PRE>
+=============================================================================
+Formål:
+Leser og tolker gruppe og punktutvalg på kommandofilen og legger i tabell.
+Forutsetter at filen er åpnet på forhånd.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+LC_UT_ADM *pUtAdm i Peker til administrasjonsblokk for utvalg.
+FILE *pKomFil i Peker til "handle" for åpnet kommandofil.
+short sStatus r UT_TRUE=OK, UT_FALSE=feil i linjen
+Bruk:
+sStatus = LC_LesUtvalg(pUtAdm,pKomFil);
+ =============================================================================
+
+SK_EntPnt_FYBA short LC_LesUtvalg(LC_UT_ADM *pUtAdm,const char *pszKomFil)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_GetUtRegelNavn"NAME="LC_GetUtRegelNavn"></A><H2>LC_GetUtRegelNavn</H2>
+<BIG><I><B>Henter regelnavn</I></B></BIG><PRE>
+=============================================================================
+Formål:
+Henter regelnavn for at programmet utenfor skal kunne sjekke
+at det er tilgjengelig videre behandling av alle definerte navn.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+LC_UT_ADM *pUtAdm i Peker til administrasjonsblokk for utvalg.
+short *ist iu Status (Inn: 1=start, 0=neste)
+ (Ut: 0=OK, -1=ferdig);
+char *regelpeker r Peker til utvalgsnavn.
+Bruk:
+regelpeker = LC_GetUtRegelNavn(pUtAdm,&ist);
+ =============================================================================
+
+SK_EntPnt_FYBA char *LC_GetUtRegelNavn(LC_UT_ADM *pUtAdm,short *ist)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_GruppeUtvalg"NAME="LC_GruppeUtvalg"></A><H2>LC_GruppeUtvalg</H2>
+<BIG><I><B>GINFO-utvalg</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Sjekker GINFO-delen av aktuell gruppe mot alle gruppeutvalg fra fil.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+LC_UT_ADM *pUtAdm i Peker til administrasjonsblokk for utvalg.
+short sPrior i Prioritet.
+ LC_OVERSE_PRIORITET = Tar ikke hensyn til prioritet.
+short *sstat iu Søkestatus, Inn: 1=start søk, 0=fortsett søk
+ Ut : 0=tilslag, -1=ikke tilslag
+char **regelnavn u Peker til regelnavn
+char *regelnavn u Peker til utvalgsnavn
+Bruk:
+pszUtvalgsNavn = LC_GruppeUtvalg(pUtAdm.sPrior,&sstat,&regel);
+ =============================================================================
+
+SK_EntPnt_FYBA char *LC_GruppeUtvalg(LC_UT_ADM *pUtAdm,short sPrior,short *sstat,char **regelnavn)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_PunktUtvalg"NAME="LC_PunktUtvalg"></A><H2>LC_PunktUtvalg</H2>
+<BIG><I><B>PUNKT-utvalg</I></B></BIG><PRE>
+=============================================================================
+Formål:
+Sjekker PINFO-delen av aktuell gruppe for tilslag på PUNKT-UTVALG.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+LC_UT_ADM * pUtAdm i Peker til administrasjonsblokk for utvalg.
+short sPrior i Prioritet.
+short *psStat iu Søkestatus, Inn: 1=start søk, 0=fortsett søk
+ Ut : 0=tilslag, -1=ikke tilslag
+long lPnr i Punktnummer som skal sjekkes.
+char **ppszRegel u Peker til regelnavn
+Bruk:
+LC_PunktUtvalg(pUtAdm,sPrior,&psStat,lPnr,&ppszRegel);
+ =============================================================================
+
+SK_EntPnt_FYBA void LC_PunktUtvalg(LC_UT_ADM *pUtAdm,short sPrior,short *psStat,long lPnr,char **ppszRegel)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_FinnPinfoUtvalg"NAME="LC_FinnPinfoUtvalg"></A><H2>LC_FinnPinfoUtvalg</H2>
+==========================================================================
+Formål:
+Finner et PINFO-UTVALG i kjeden av slike utvalg.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+LC_UT_ADM * pUtAdm i Peker til administrasjonsblokk for utvalg.
+char *pszNavn i Utvalgsnavn
+LC_UTVALG * pUtvalg r Peker til utvalget. (NULL = ikke funnet)
+Bruk:
+pUtvalg = LC_FinnPinfoUtvalg(pszNavn);
+ ==========================================================================
+
+SK_EntPnt_FYBA LC_UTVALG * LC_FinnPinfoUtvalg(LC_UT_ADM * pUtAdm,const char *pszNavn)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_PiTestUtvalg"NAME="LC_PiTestUtvalg"></A><H2>LC_PiTestUtvalg</H2>
+<BIG><I><B>Sjekk PUNKT/PINFO utvalg</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Sjekk om PINFO i aktuellt punkt tilfredstiller et punkt-utvalg.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+LC_UT_ADM * pUtAdm i Administrasjonsblokk
+LC_UTVALG * pU i Peker til utvalg
+long lPnr i Punktnummer som skal sjekkes.
+short sTilslag r Status: UT_TRUE=tilslag, UT_FALSE=ikke tilslag
+Bruk:
+sTilslag = LC_PiTestUtvalg(pUtAdm,pU,lPnr);
+ ==========================================================================
+
+SK_EntPnt_FYBA short LC_PiTestUtvalg(LC_UT_ADM * pUtAdm,LC_UTVALG * pU,long lPnr)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_GiQuery"NAME="LC_GiQuery"></A><H2>LC_GiQuery</H2>
+<BIG><I><B>Query mot aktuell ginfo</I></B></BIG><PRE>
+=============================================================================
+Formål:
+Sjekker GINFO-delen av aktuell gruppe mot aktuellt query-oppsett.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+LC_UT_ADM *pUtAdm i Peker til administrasjonsblokk for utvalg.
+short status r Søkestatus, UT_TRUE=tilslag, UT_FALSE=ikke tilslag
+Bruk:
+ist = LC_GiQuery(pUtAdm);
+ =============================================================================
+
+SK_EntPnt_FYBA short LC_GiQuery(LC_UT_ADM *pUtAdm)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_FAGiQuery"NAME="LC_FAGiQuery"></A><H2>LC_FAGiQuery</H2>
+<BIG><I><B>Finn alle ved query mot ginfo</I></B></BIG><PRE>
+=============================================================================
+Formål:
+Sjekker GINFO-delen av alle grupper mot aktuell queryopsett.
+Tilslag merkes i brukttabellen kolonne BT_GISOK (14).
+[Esc] avbryter utvalget, antall tilslag settes da til -1.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+LC_UT_ADM *pUtAdm i Peker til administrasjonsblokk for utvalg.
+unsigned short usLag i Velg hvilke "lag" det skal søkes i.
+ LC_FRAMGR og /eller LC_BAKGR
+short antall r Antall tilslag på utvalget.
+Bruk:
+antall = LC_FAGiQuery(pUtAdm, LC_FRAMGR | LC_BAKGR);
+ =============================================================================
+
+SK_EntPnt_FYBA long LC_FAGiQuery(LC_UT_ADM *pUtAdm,unsigned short usLag)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_FAGiKombinertFlateQuery"NAME="LC_FAGiKombinertFlateQuery"></A><H2>LC_FAGiKombinertFlateQuery</H2>
+<BIG><I><B>Finn alle ved query mot ginfo i flate og omkrets</I></B></BIG><PRE>
+=============================================================================
+Formål:
+Sjekker GINFO-delen av alle flater mot aktuell queryopsett. Finner de flatene
+som har tilslag på utvalgsblokken pUtAdmFlate og har har referanser til grupper
+som har tilslag på utvalgsblokken pUtAdmOmkrets.
+Tilslag merkes i brukttabellen kolonne BT_GISOK (30).
+[Esc] avbryter utvalget, antall tilslag settes da til -1.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+LC_UT_ADM *pUtAdmFlate i Peker til administrasjonsblokk for utvalg for flata.
+LC_UT_ADM *pUtAdmOmkrets i Peker til administrasjonsblokk for utvalg for omkrets.
+unsigned short usLag i Velg hvilke "lag" det skal søkes i.
+ LC_FRAMGR og /eller LC_BAKGR
+short sAlle i Flagg for hvorvidt utvalg for omkrets må slå til på
+ alle gruppene i omkretsen. TRUE/FALSE
+short antall r Antall tilslag på utvalget.
+Bruk:
+antall = LC_FAGiQuery(pUtAdm, LC_FRAMGR | LC_BAKGR);
+ =============================================================================
+
+SK_EntPnt_FYBA long LC_FAGiKombinertFlateQuery(LC_UT_ADM * pUtAdmFlate,LC_UT_ADM * pUtAdmOmkrets,
+ unsigned short usLag,short sMetode)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_QueryGP"NAME="LC_QueryGP"></A><H2>LC_QueryGP</H2>
+<BIG><I><B>Søk i ginfo og finn verdi</I></B></BIG><PRE>
+=============================================================================
+Formål:
+Bruker query-tekst for å finne linje der parameter skal hentes.
+Parametre:
+Type Navn I/U Forklaring
+---------------------------------------------------------------------------
+char *qulin i Linje med query-tekst.
+unsigned short iniv i Nivå: Det er definert konstanter som henges
+ sammen med "|".
+ LC_GINFO = søk i GINFO på aktuell gruppe
+ LC_HODE = søk i filhodet
+ Hvis begge er brukt søkes det først i GINFO.
+unsigned short *univ u Nivå: LC_GINFO = parameter er fra GINFO
+ LC_HODE = parameter er fra filhodet
+short *ulin u GINFO-linjenummer for tilslaget.
+char **para u Funnet parameter.
+short funnet r Status: UT_TRUE=funnet, UT_FALSE=ikke funnet
+Bruk:
+funnet = LC_QueryGP(qulin,LC_GINFO | LC_HODE,&univ,&ulin,&para);
+ =============================================================================
+
+SK_EntPnt_FYBA short LC_QueryGP(char *qulin,unsigned short iniv,unsigned short *univ,short *ulin,char **para)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_InqMaxPrioritet"NAME="LC_InqMaxPrioritet"></A><H2>LC_InqMaxPrioritet</H2>
+<BIG><I><B>Hent største prioritet</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Henter største prioritet for gitt utvalgstype.
+Parametre:
+Type Navn I/U Forklaring
+----------------------------------------------------------------------
+LC_UT_ADM * pUA i Peker til administrasjonsblokk for utvalg.
+short sMaxPrioritet r Max prioritet
+Bruk:
+sMaxPrioritet = LC_InqMaxPrioritet(pUA);
+ ==========================================================================
+
+SK_EntPnt_FYBA short LC_InqMaxPrioritet(LC_UT_ADM * pUA)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_TestPrioritetBrukt"NAME="LC_TestPrioritetBrukt"></A><H2>LC_TestPrioritetBrukt</H2>
+<BIG><I><B>Tester om en prioritet er brukt</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Tester om en prioritet er brukt.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+LC_UT_ADM * pUtAdm i Peker til administrasjonsblokk for utvalg.
+short sPrioritet i Prioritet som skal testes.
+short sBrukt r Status: UT_TRUE=brukt, UT_FALSE=ikke brukt.
+Bruk:
+sBrukt = LC_TestPrioritetBrukt(pUtAdm,sPrioritet);
+ ==========================================================================
+
+SK_EntPnt_FYBA short LC_TestPrioritetBrukt(LC_UT_ADM * pUtAdm,short sPrioritet)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_UtvalgPrioritet"NAME="LC_UtvalgPrioritet"></A><H2>LC_UtvalgPrioritet</H2>
+<BIG><I><B>Finn brukt prioritet</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Sjekker GINFO og PINFO for å finne hvilke prioriteter som "berører" aktuell
+gruppe. Resultatet markeres i Gruppetabellen ulPrior.
+Parametre:
+Type Navn I/U Forklaring
+---------------------------------------------------------------------------
+LC_UT_ADM *pUtAdm i Peker til administrasjonsblokk for utvalg.
+Bruk:
+LC_UtvalgPrioritet(pUtAdm);
+ ===========================================================================
+
+SK_EntPnt_FYBA void LC_UtvalgPrioritet(LC_UT_ADM *pUtAdm)
+</PRE>
+
+<BR>
+<BR>
+<HR COLOR=#80ff80 SIZE=5 NOSHADE>
+<BR>
+<BR>
+<BR>
+<A ID="O38"NAME="O38"></A><H1>20 Merke grupper</H1>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_SetBt"NAME="LC_SetBt"></A><H2>LC_SetBt</H2>
+<BIG><I><B>Sett merke i brukttabellen</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Legg inn merke i brukttabellen.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+LC_BGR * pGr i Gruppenummer
+short kolonne i Kolonne som skal merkes.
+ (Lovlig BT_MIN_USER - BT_MAX_USER)
+Bruk:
+LC_SetBt(pGr,kolonne);
+ ==========================================================================
+
+SK_EntPnt_FYBA void LC_SetBt(LC_BGR * pGr,short kolonne)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_ClrBt"NAME="LC_ClrBt"></A><H2>LC_ClrBt</H2>
+<BIG><I><B>Slett merke i brukttabellen</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Fjern merke i brukttabellen.
+Parametre:
+Navn Type I/U Forklaring
+--------------------------------------------------------------------------
+LC_BGR * pGr i Gruppenummer
+kolonne short i Kolonne som skal merkes.
+ (Lovlig BT_MIN_USER - BT_MAX_USER)
+Bruk:
+LC_ClrBt(pGr,kolonne);
+ ==========================================================================
+
+SK_EntPnt_FYBA void LC_ClrBt(LC_BGR * pGr,short kolonne)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_GetBt"NAME="LC_GetBt"></A><H2>LC_GetBt</H2>
+<BIG><I><B>Hent merke i brukttabellen</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Hent merke i brukttabellen.
+Parametre:
+Navn Type I/U Forklaring
+--------------------------------------------------------------------------
+LC_BGR * pGr i Gruppenummer
+kolonne short i Kolonne som skal brukes.
+ (Lovlig BT_MIN_BT - BT_MAX_BT)
+merke short r UT_FALSE = ikke marka, UT_TRUE = merka
+Bruk:
+merke = LC_GetBt(pGr,kolonne);
+ ==========================================================================
+
+SK_EntPnt_FYBA short LC_GetBt(LC_BGR * pGr,short kolonne)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_EraseBt"NAME="LC_EraseBt"></A><H2>LC_EraseBt</H2>
+<BIG><I><B>Slett område i brukttabellen</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Blanker en eller flere kolonner i brukttabellen i aktuell base.
+Parametre:
+Navn Type I/U Forklaring
+--------------------------------------------------------------------------
+fra_kol short i Første kolonne som skal blankes.
+ (Lovlig BT_MIN_USER - BT_MAX_USER)
+til_kol short i Siste kolonne som skall blankes.
+ (Lovlig BT_MIN_USER - BT_MAX_USER)
+Bruk:
+LC_EraseBt(fra_kol,til_kol);
+ ==========================================================================
+
+SK_EntPnt_FYBA void LC_EraseBt(short fra_kol,short til_kol)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_CopyBt"NAME="LC_CopyBt"></A><H2>LC_CopyBt</H2>
+<BIG><I><B>Kopier kolonne i brukttabellen</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Kopier kolonne i brukttabellen.
+Samtidig er det mulig å utføre logiske operasjoner mellom de to kolonnene.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+short fra_kol i Kolonne det skal kopieres fra. (Lovlig 0 - BT_MAX_BT)
+short til_kol i Kolonne det skal kopieres til. (Lovlig 1 - BT_MAX_USER)
+short operasjon i Logisk operasjon mellom kolonnene.
+ BC_COPY = Overskriv gammelt innhold.
+ BC_AND = Logisk AND mellom de to kolonnene.
+ BC_OR = Logisk OR mellom de to kolonnene.
+ BC_INVERT = Overskriv gammelt innhold med
+ invertert verdi.
+ BC_EXCHANGE = Bytter innholdet i de to kolonnene.
+
+Bruk:
+LC_CopyBt(fra_kol,til_kol,operasjon);
+ ==========================================================================
+
+SK_EntPnt_FYBA void LC_CopyBt(short fra_kol,short til_kol,short operasjon)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_SetModusMerk"NAME="LC_SetModusMerk"></A><H2>LC_SetModusMerk</H2>
+<BIG><I><B>Setter flag for merking av referert gruppe.</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Setter flag for merking av referert gruppe.
+Har innvirkning for virkemåten til:
+LC_FAGeo, LC_FASn, og LC_FAGiQuery
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------
+unsigned short modus i 0 = Ikke merk referert gruppe.
+ 1 = Merk referert gruppe.
+Bruk:
+LC_SetModusMerk(1);
+ ==========================================================================
+
+SK_EntPnt_FYBA void LC_SetModusMerk(unsigned short usModus)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_MerkGr"NAME="LC_MerkGr"></A><H2>LC_MerkGr</H2>
+<BIG><I><B>Merk en gruppe brukttabellen</I></B></BIG><PRE>
+==========================================================================
+Formål:
+CH Merk aktuell gruppe i brukttabellen. Hvis flag for merking av referert
+gruppe er satt, blir også eventuelle refererte grupper merket.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+short sKolonne i Kolonne som skal merkes.
+ (Lovlig BT_MIN_USER - BT_MAX_USER)
+short sBryter i Bryter 1=på, 0=av
+long lAntall r Antall grupper merket.
+Bruk:
+lAntall = LC_MerkGr(sKolonne,sBryter);
+ ==========================================================================
+
+SK_EntPnt_FYBA long LC_MerkGr(short sKolonne,short sBryter)
+</PRE>
+
+<BR>
+<BR>
+<HR COLOR=#80ff80 SIZE=5 NOSHADE>
+<BR>
+<BR>
+<BR>
+<A ID="O39"NAME="O39"></A><H1>21 Spesiell handtering av flater</H1>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="Polygonbeskrivelse"NAME="Polygonbeskrivelse"></A><H2>Polygonbeskrivelse</H2>
+<BIG><I><B>Strukturer for polygonbeskrivelse.</I></B></BIG><PRE>
+
+Dette er et sett med strukturer som er kjedet sammen til en komplett
+beskrielse av en flate. Eksempel på bruk er gitt under <A HREF="file:///LC_POL_GetRef">LC_POL_GetRef</A>.
+
+
+ !-----------------!
+ ! LC_POLYGON !
+ ! ! !-------------------------!
+ ! !- Omkrets --! ! ! !-----------------! !---------------!
+ ! !LC_POL_OMKR ! ! ! !-!LC_POL_ELEMENT ! !-!LC_POL_ELEMENT !
+ ! ! ! ! ! ! ! - Bgr ! ! ! - Bgr !
+ ! !- Siste !--!-------! ! ! - Snr ! ! ! - Snr !
+ ! !- Første !--!---------! ! - Retning ! ! ! - Retning !
+ ! !------------! ! ! - Forrige (NULL)! ! ! - Forrige !
+ ! !- Hull ------! ! ! - Neste !-! ! - Neste (NULL)!
+ ! !LC_OY_ADM ! ! !-----------------! !---------------!
+ ! ! ! !
+ ! !- Første øy !-!-!
+!-!-!- Siste øy ! ! !
+! ! !-------------! ! !
+! !-----------------! !
+! !-----------------!
+! ! !------------------------!
+! ! !------------! ! !-----------------! !---------------!
+! !--------------! !-!LC_POL_OMKR ! ! !-!LC_POL_ELEMENT !!!LC_POL_ELEMENT !
+! !LC_OY_ELEMENT ! ! ! ! ! ! ! - Bgr !!! - Bgr !
+! !- Omkrets !--! !- Siste !-! ! ! - Snr !!! - Snr !
+! !- Neste !-! !- Første !---! ! - Retning !!! - Retning !
+! !--------------! ! !------------! ! - Forrige (NULL)!!! - Forrige !
+! ! ! - Neste !!! - Neste (NULL)!
+! ! !-----------------! !---------------!
+! !
+! !---------------! !--------------------------!
+! ! !------------! ! !-----------------! !---------------!
+! !--------------! !-!LC_POL_OMKR ! ! !-!LC_POL_ELEMENT ! !-!LC_POL_ELEMENT !
+!--!LC_OY_ELEMENT ! ! ! ! ! ! ! - Bgr ! ! ! - Bgr !
+ !- Omkrets !--! !- Siste !-! ! ! - Snr ! ! ! - Snr !
+ !- Neste (NULL)! !- Første !---! ! - Retning ! ! ! - Retning !
+ !--------------! !------------! ! - Forrige (NULL)! ! ! - Forrige !
+ ! - Neste !-! ! - Neste (NULL)!
+ !-----------------! !---------------!
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_POL_InitPolygon"NAME="LC_POL_InitPolygon"></A><H2>LC_POL_InitPolygon</H2>
+<BIG><I><B>Initierer polygon-struktur</I></B></BIG><PRE>
+=======================================================================
+Formål:
+Initierer polygon-struktur.
+Parametere:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------
+LC_POLYGON *pPolygon I Peikar til polygonbeskrivelse
+Bruk:
+LC_POLYGON Polygon;
+LC_POL_InitPolygon(&Polygon);
+=======================================================================
+
+SK_EntPnt_FYBA void LC_POL_InitPolygon(LC_POLYGON *pPolygon)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_POL_FrigiPolygon"NAME="LC_POL_FrigiPolygon"></A><H2>LC_POL_FrigiPolygon</H2>
+<BIG><I><B>Frigi minne som er allokert til polygon</I></B></BIG><PRE>
+=======================================================================
+Formål:
+Frigir minne som er allokert til polygon. (Både omkrets og hull.)
+Parametere:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------
+LC_POLYGON *pPolygon I Peikar til polygonbeskrivelse
+Bruk:
+LC_POLYGON Polygon;
+LC_POL_FrigiPolygon(&Polygon);
+=======================================================================
+
+SK_EntPnt_FYBA void LC_POL_FrigiPolygon(LC_POLYGON *pPolygon)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_POL_InitOmkrets"NAME="LC_POL_InitOmkrets"></A><H2>LC_POL_InitOmkrets</H2>
+<BIG><I><B>Initierer polygon-omkrets</I></B></BIG><PRE>
+=======================================================================
+Bruk:
+POL_OMKR YtrePolygon;
+LC_POL_InitOmkrets(YtrePolygon);
+parametere:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------
+LC_POL_OMKR *pPO I/U Peikar til polygonadministrasjonsblokka
+Initierer administrasjonsblokka for polygonelement
+=======================================================================
+
+SK_EntPnt_FYBA void LC_POL_InitOmkrets(LC_POL_OMKR *pPO)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_POL_LeggTilGruppeOmkrets"NAME="LC_POL_LeggTilGruppeOmkrets"></A><H2>LC_POL_LeggTilGruppeOmkrets</H2>
+<BIG><I><B>Legg til eit element</I></B></BIG><PRE>
+=======================================================================
+Bruk:
+LC_POL_OMKR YtrePolygon;
+pElement = LC_POL_LeggTilGruppeOmkrets(YtrePolygon,pBgr,sRetning,lSnr);
+parametere:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------
+LC_POL_OMKR * pPO I/U Peikar til polygonadministrasjonsblokka
+LC_BGR * pBgr I Gruppenummer
+short sRetning I Nøsteretning (LC_MED_DIG eller LC_MOT_DIG)
+long lSnr I Serienummer
+LC_POL_ELEMENT * pElement R Peker til innlagt element
+Legg til eit element i kjeden av polygonelement.
+=======================================================================
+
+SK_EntPnt_FYBA LC_POL_ELEMENT * LC_POL_LeggTilGruppeOmkrets(LC_POL_OMKR *pPO,LC_BGR *pBgr,
+ short sRetning, long lSnr)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_POL_FjernGruppeOmkrets"NAME="LC_POL_FjernGruppeOmkrets"></A><H2>LC_POL_FjernGruppeOmkrets</H2>
+<BIG><I><B>Fjernar element</I></B></BIG><PRE>
+=======================================================================
+Bruk:
+LC_POL_OMKR YtrePolygon;
+LC_POL_FjernGruppeOmkrets(&YtrePolygon,);
+parametere:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------
+LC_POL_OMKR *pPO I/U Peikar til polygonadministrasjonsblokka
+LC_POL_ELEMENT *pPE I Peker til element som skal fjernes
+Fjernar et element i kjeden av polygonelement.
+=======================================================================
+
+SK_EntPnt_FYBA void LC_POL_FjernGruppeOmkrets(LC_POL_OMKR *pPO, LC_POL_ELEMENT *pPE)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_POL_FjernSisteGruppeOmkrets"NAME="LC_POL_FjernSisteGruppeOmkrets"></A><H2>LC_POL_FjernSisteGruppeOmkrets</H2>
+<BIG><I><B>Fjernar siste element</I></B></BIG><PRE>
+=======================================================================
+Bruk:
+LC_POL_OMKR YtrePolygon;
+LC_POL_FjernSisteGruppeOmkrets(&YtrePolygon);
+parametere:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------
+LC_POL_OMKR * pPO I/U Peikar til polygonadministrasjonsblokka
+Fjernar siste element i kjeden av polygonelement.
+=======================================================================
+
+SK_EntPnt_FYBA void LC_POL_FjernSisteGruppeOmkrets(LC_POL_OMKR *pPO)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_POL_FrigiOmkrets"NAME="LC_POL_FrigiOmkrets"></A><H2>LC_POL_FrigiOmkrets</H2>
+<BIG><I><B>Frigjer minne som er allokert til kjede av polygonelement</I></B></BIG><PRE>
+=======================================================================
+Bruk:
+parametere:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------
+LC_POL_OMKR *pPO I/U Peikar til polygonadministrasjonsblokka
+Frigir minne som er allokert til kjede av polygonelement.
+=======================================================================
+
+SK_EntPnt_FYBA void LC_POL_FrigiOmkrets(LC_POL_OMKR *pPO)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_POL_InitOy"NAME="LC_POL_InitOy"></A><H2>LC_POL_InitOy</H2>
+<BIG><I><B>Initierer øy-kjeden</I></B></BIG><PRE>
+=======================================================================
+Bruk:
+LC_OY_ADM OyKjede;
+LC_POL_InitOy(OyKjede);
+parametere:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------
+LC_OY_ADM *pOA I/U Peikar til øyadministrasjonsblokka
+Initierer øy-kjeden.
+=======================================================================
+
+SK_EntPnt_FYBA void LC_POL_InitOy(LC_OY_ADM *pOA)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_POL_FrigiAlleOyer"NAME="LC_POL_FrigiAlleOyer"></A><H2>LC_POL_FrigiAlleOyer</H2>
+<BIG><I><B>Frigjer minne som er allokert til kjede av øyelement</I></B></BIG><PRE>
+=======================================================================
+Bruk:
+LC_OY_ADM OyKjede;
+LC_POL_FrigiAlleOyer(OyKjede);
+parametere:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------
+LC_OY_ADM *pOA I/U Peikar til øyadministrasjonsblokka
+Frigjer minne som er allokert til kjede av øy (i polygon) - element.
+=======================================================================
+
+SK_EntPnt_FYBA void LC_POL_FrigiAlleOyer(LC_OY_ADM *pOA)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_POL_FjernOy"NAME="LC_POL_FjernOy"></A><H2>LC_POL_FjernOy</H2>
+<BIG><I><B>Fjernar ei oy frå kjede av øyelement</I></B></BIG><PRE>
+=======================================================================
+Bruk:
+LC_OY_ADM OyKjede;
+LC_POL_FjernOy(OyKjede,OyElement);
+parametere:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------
+LC_OY_ADM *pOA I/U Peikar til øyadministrasjonsblokka
+LC_OY_ELEMENT *pOE I/U Peikar til kjede av oyar
+Frigjer minne som er allokert til kjede av øy (i polygon) - element.
+=======================================================================
+
+SK_EntPnt_FYBA void LC_POL_FjernOy(LC_OY_ADM *pOA,LC_OY_ELEMENT *pOE)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_POL_LeggTilOy"NAME="LC_POL_LeggTilOy"></A><H2>LC_POL_LeggTilOy</H2>
+<BIG><I><B>Legg til eit element</I></B></BIG><PRE>
+=======================================================================
+Bruk:
+LC_OY_ADM OyKjede;
+LC_POL_LeggTilOy(&OyKjede,pPO);
+Parametere:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------
+LC_OY_ADM *pOyKjede I/U Peikar til kjede av øyelement
+LC_POL_OMKR *pPO I Peikar til polygonadministrasjonsblokka
+Legg til eit element i kjeden av øyar (i polygon) - element.
+=======================================================================
+
+SK_EntPnt_FYBA void LC_POL_LeggTilOy(LC_OY_ADM *pOA,LC_POL_OMKR *pPO)
+</PRE>
+
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_POL_TestBrukt"NAME="LC_POL_TestBrukt"></A><H2>LC_POL_TestBrukt</H2>
+<BIG><I><B>Testar om ei gruppe er brukt i polygonet</I></B></BIG><PRE>
+=======================================================================
+Bruk:
+LC_POL_TestBrukt(pPolygon,&Bgr);
+parametere:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------
+LC_POLYGON *pPolygon I Peker til polygonbeskrivelse.
+LC_BGR *pBgr I Peikar til gruppe
+short status R Status UT_TRUE = gruppe er brukt i polygonet
+ Status UT_FALSE = gruppe er IKKJE brukt i polygonet
+Testar om ei gruppe er brukt i gitt polygon.
+=======================================================================
+
+SK_EntPnt_FYBA short LC_POL_TestBrukt(LC_POLYGON *pPolygon,LC_BGR *pBgr)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_POL_PutRef"NAME="LC_POL_PutRef"></A><H2>LC_POL_PutRef</H2>
+<BIG><I><B>Legger inn referanser i GINFO</I></B></BIG><PRE>
+=======================================================================
+Formål:
+Legger inn referanser i GINFO, ut fra beskrivelse i struktur.
+Parametere:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------
+LC_POLYGON *pPolygon I Polygonbeskrivelse
+short ngi r Antall linjer GINFO
+Bruk:
+ngi = LC_POL_PutRef(pPolygon);
+=======================================================================
+
+SK_EntPnt_FYBA short LC_POL_PutRef(LC_POLYGON *pPolygon)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_POL_GetRef"NAME="LC_POL_GetRef"></A><H2>LC_POL_GetRef</H2>
+<BIG><I><B>Hent referanser for flate fra GINFO</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Henter referanser fra GINFO til struktur.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------
+LC_POLYGON *pPolygon I Peker til adm. for polygonbeskrivelse
+Bruk:
+ short ngi;
+ long nko;
+ unsigned short info;
+ LC_POLYGON Polygon;
+ LC_POL_ELEMENT * pPE;
+ LC_OY_ELEMENT * pOE;
+ LC_POL_InitPolygon(&Polygon);
+ LC_POL_GetRef(&Polygon);
+ . Omkretsen .
+ for(pPE = Polygon.HovedPO.pForstePE; pPE != NULL; pPE = pPE->pNestePE) {
+ gnavn = LC_RxGr(&pPE->Bgr,LES_OPTIMALT,&ngi,&nko,&info);
+ .
+ Behandle ytre avgrensing
+ .
+ }
+ . Øyer .
+ for (pOE = Polygon.OyOA.pForsteOE; pOE != NULL; pOE = pOE->pNesteOE) {
+ for (pPE = pOE->PO.pForstePE; pPE != NULL; pPE = pPE->pNestePE) {
+ gnavn = LC_RxGr(&pPE->Bgr,LES_OPTIMALT,&ngi,&nko,&info);
+ .
+ Behandle indre avgrensing (øy)
+ .
+ }
+ }
+ . Frigi allokerte kjeder .
+ LC_POL_FrigiPolygon(&Polygon);
+==========================================================================
+
+SK_EntPnt_FYBA void LC_POL_GetRef(LC_POLYGON *pPolygon)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_POL_GetRefOmkrets"NAME="LC_POL_GetRefOmkrets"></A><H2>LC_POL_GetRefOmkrets</H2>
+<BIG><I><B>Hent referanser for omkretsen av flate</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Henter referanser fra GINFO til struktur.
+Rutinen initierer strukturen pPO, men frigir ikke eventuellt gammelt innhold.
+Parametre:
+Type Navn I/U Forklaring
+-------------------------------------------------------------------------
+LC_POL_OMKR *pPO; IU Peker til kjede som beskriver omkretsen.
+Bruk:
+ LC_POL_GetRefOmkrets(&OyPO);
+==========================================================================
+
+SK_EntPnt_FYBA void LC_POL_GetRefOmkrets(LC_POL_OMKR *pPO)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_POL_PTst"NAME="LC_POL_PTst"></A><H2>LC_POL_PTst</H2>
+<BIG><I><B>Polygontest</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Sjekker om gitt punkt ligger innenfor polygon angitt av pPolygon.
+Forutsetter at pPolygon danner et lukket polygon.
+Skifter ikke aktuell gruppe.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+double a i Punkt som skal sjekkes
+double n i
+short ist r status: UT_FALSE = punktet er utenfor flaten
+ UT_TRUE = punktet ligger inne på flaten
+Bruk:
+.
+==========================================================================
+
+SK_EntPnt_FYBA short LC_POL_PTst(LC_POLYGON *pPolygon,double a,double n)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_POL_PTstOmkrets"NAME="LC_POL_PTstOmkrets"></A><H2>LC_POL_PTstOmkrets</H2>
+<BIG><I><B>Sjekk om punkt ligger inni polygonomkrets</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Sjekker om gitt punkt ligger innenfor yttergrensen for polygon angitt
+av struktur.
+Forutsetter at tabellen danner et lukket polygon
+Skifter ikke aktuell gruppe.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+LC_POL_OMKR *pPO I/U Peker til beskrivelse av omkretsen
+double a i Punkt som skal sjekkes
+double n i
+short ist r status: UT_FALSE = punktet er utenfor flaten
+ UT_TRUE = punktet ligger inne på flaten
+Bruk:
+ist = LC_POL_PTstOmkrets(pPO,a,n);
+ ==========================================================================
+
+SK_EntPnt_FYBA short LC_POL_PTstOmkrets(LC_POL_OMKR *pPO,double a,double n)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_POL_Box"NAME="LC_POL_Box"></A><H2>LC_POL_Box</H2>
+<BIG><I><B>Henter omskreven boks</I></B></BIG><PRE>
+=======================================================================
+Bruk:
+LC_POL_Box(pPA,&nva,&nvn,&oha,&ohn);
+parametere:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------
+LC_POL_OMKR *pPO I Peikar til polygonadministrasjonsblokka
+double *nva U
+double *nvn U
+double *oha U
+double *ohn U
+Henter omskriven boks for polygon.
+=======================================================================
+
+SK_EntPnt_FYBA void LC_POL_Box(LC_POL_OMKR *pPO,double *nva,double *nvn, double *oha,double*ohn)
+</PRE>
+
+<BR>
+<BR>
+<HR COLOR=#80ff80 SIZE=5 NOSHADE>
+<BR>
+<BR>
+<BR>
+<A ID="O40"NAME="O40"></A><H1>22 Diverse funksjoner</H1>
+
+<BR>
+<BR>
+<BR>
+<A ID="O41"NAME="O41"></A><H2>22.1 Beregninger</H2>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_BerAreal"NAME="LC_BerAreal"></A><H2>LC_BerAreal</H2>
+<BIG><I><B>Beregn areal av aktuell FLATE</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Beregner arealet av aktuell gruppe hvis denne er flate.
+Referansene brukes for arealberegningen.
+Tar hensyn til fradrag for øyer.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+double areal u Beregnet areal
+Bruk:
+areal = LC_BerAreal();
+ =============================================================================
+
+SK_EntPnt_FYBA double LC_BerAreal(void)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_BerLengde"NAME="LC_BerLengde"></A><H2>LC_BerLengde</H2>
+<BIG><I><B>Beregn horisontal lengde av aktuell gruppe</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Beregn horisontal lengde av aktuell gruppe.
+Tar ikke hensyn til høyde/dybde.
+Referansene brukes IKKE i beregningen.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+double lengde u Beregnet lengde
+Bruk:
+areal = LC_BerLengde();
+=============================================================================
+
+SK_EntPnt_FYBA double LC_BerLengde(void)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_BerLengde3D"NAME="LC_BerLengde3D"></A><H2>LC_BerLengde3D</H2>
+<BIG><I><B>Beregn skrå lengde av aktuell gruppe</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Beregn skrå lengde av aktuell gruppe.
+Krever at det finnes høyde/dybde i alle punkt.
+Referansene brukes IKKE i beregningen.
+Beregner bare for LINJE og KURVE.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+double lengde u Beregnet lengde
+bool beregnet r Status som viser om lengde er beregnet
+Bruk:
+beregnet = LC_BerLengde3D(&skraa_lengde);
+=============================================================================
+
+SK_EntPnt_FYBA bool LC_BerLengde3D(double *skraa_lengde)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_BerAvgrensLengde"NAME="LC_BerAvgrensLengde"></A><H2>LC_BerAvgrensLengde</H2>
+<BIG><I><B>Beregn lengden av avgrensning av FLATE</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Beregn lengden av avgrensningen av aktuell gruppe hvis denne er flate.
+Både indre og ytre avgrensning beregnes.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+double lengde u Beregnet areal
+Bruk:
+lengde = LC_BerAvgrensLengde();
+=============================================================================
+
+SK_EntPnt_FYBA double LC_BerAvgrensLengde(void)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_BerYtreAvgrensLengde"NAME="LC_BerYtreAvgrensLengde"></A><H2>LC_BerYtreAvgrensLengde</H2>
+<BIG><I><B>Beregn lengden av ytre avgrensning av FLATE</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Beregn lengden av ytre avgrensningen av aktuell gruppe hvis denne er flate.
+Bare ytre avgrensning beregnes.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+double lengde u Beregnet lengde
+Bruk:
+lengde = LC_BerYtreAvgrensLengde();
+=============================================================================
+
+SK_EntPnt_FYBA double LC_BerYtreAvgrensLengde(void)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_BerIndreAvgrensLengde"NAME="LC_BerIndreAvgrensLengde"></A><H2>LC_BerIndreAvgrensLengde</H2>
+<BIG><I><B>Beregn lengden av indre avgrensning av FLATE</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Beregn lengden av indre avgrensningen av aktuell gruppe hvis denne er flate.
+Bare indre avgrensning beregnes.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+double lengde u Beregnet lengde
+Bruk:
+lengde = LC_BerIndreAvgrensLengde();
+=============================================================================
+
+SK_EntPnt_FYBA double LC_BerIndreAvgrensLengde(void)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_RoundKoord"NAME="LC_RoundKoord"></A><H2>LC_RoundKoord</H2>
+<BIG><I><B>Endre koordinatene i buffer til riktig enhet</I></B></BIG><PRE>
+===========================================================================
+Formål:
+Endrer koordinatene i aktuell gruppe i buffer til valgt enhet.
+(Rutinen blir utført fra LC_WxGr.)
+Parametre: ingen
+Bruk:
+LC_RoundKoord();
+==============================================================================
+
+SK_EntPnt_FYBA void LC_RoundKoord(void)
+</PRE>
+
+<BR>
+<BR>
+<BR>
+<A ID="O42"NAME="O42"></A><H2>22.2 Strukturendring</H2>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_SnuGr"NAME="LC_SnuGr"></A><H2>LC_SnuGr</H2>
+<BIG><I><B>Snu gruppe</I></B></BIG><PRE>
+===========================================================================
+Formål:
+Snur en gruppe.
+Rutinen tilsvarer put fra brukerprogram inn i ringbufret.
+Både koordinater, høyde, KP og PINFO blir behandlet.
+For .BUE blir fortegnet på radius endret.
+Fortegnet på referanser til gruppen blir oppdatert.
+Det er ikke mulig å snu gruppe som er referert fra grupper som
+ikke kan oppdateres. (Flate/trase som er sjekket ut av andre i NGIS.)
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+short sStatus r Status: UT_TRUE = OK
+ UT_FALSE = feil, ikke splittet
+Bruk:
+ status = LC_SnuGr();
+ =============================================================================
+
+SK_EntPnt_FYBA short LC_SnuGr(void)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_SammenfoyGr"NAME="LC_SammenfoyGr"></A><H2>LC_SammenfoyGr</H2>
+<BIG><I><B>Sammenføy grupper</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Sammenføye to grupper.
+Kopierer koordinater fra gitt gruppe inn i aktuell gruppe.
+De kopierte koordinatene kommer som en utvidelse av gruppen.
+Rutinen tildeler selv nødvendig plass i buffer.
+Kvalitet og enhet blir automatisk oppdatert slik at gruppene ikke
+mister informasjon.
+Gruppen det kopieres fra blir slettet.
+Eventuelle referanser til gruppene blir oppdatert.
+Det er ikke mulig å sammenføye hvis en av gruppene er referert fra grupper
+som ikke kan oppdateres. (Flate/trase som er sjekket ut av andre i NGIS.)
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+LC_BGR * pFraBgr i Gruppenummer det skal kopieres fra.
+short retning i Buffer-retning:
+ HENT_FORRFRA ( 1) = vanlig,
+ HENT_BAKFRA (-1) = buffer skal snus.
+short plassering i Forteller hvor pFraBgr skal plasseres i
+ aktuell gruppe.
+ LC_SG_FORRAN = Heng den andre gruppen inn
+ foran første koordinat.
+ LC_SG_BAK = Heng den andre gruppen inn
+ etter siste koordinat.
+short metode i Forteller hva som skal skje med sammenføingspunktene.
+ LC_SG_BEHOLD = Begge punktene beholdes.
+ LC_SG_FJERN = Bare det ene av punktene beholdes.
+short ngi u Antall GINFO-linjer
+long nko u Antall koordinater
+unsigned short info u Diverse informasjon. (Se under <A HREF="file:///LC_RxGr">LC_RxGr</A>)
+short sStatus r Status: UT_TRUE=OK, UT_FALSE=ikke utført.
+Bruk:
+sStatus = LC_SammenfoyGr(bgr,retning,plassering,metode,&ngi,&nko,&info);
+ =============================================================================
+
+SK_EntPnt_FYBA short LC_SammenfoyGr(LC_BGR * pFraBgr,short retning,short plassering,short metode,
+ short *ngi,long *nko,unsigned short *info)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_SplittGr"NAME="LC_SplittGr"></A><H2>LC_SplittGr</H2>
+<BIG><I><B>Splitt gruppe</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Splitter aktuell gruppe i to deler.
+Første del av gruppen beholdes som aktuell gruppe. Denne blir ikke
+skrevet til SOSI-filen, men buffer er oppdatert.
+Siste del av gruppen legges som en ny gruppe på samme fil som
+opprinnelig gruppe. Denne blir skrevet til basen.
+Den delen av gruppen som ligger mellom P1 og P2 blir fjernet.
+Hvis gruppen er BUEP og en av delene får bare to koordinater
+blir det lagt inn et nytt punkt midt på buen.
+Det er ikke mulig å splitte grupper som er referert fra grupper som
+ikke kan oppdateres. (Flate/trase som er sjekket ut av andre i NGIS.)
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+long sP1 i Punktnummer 1. (Må være større enn 1)
+long sP2 i Punktnummer 2. (Må være mindre enn nko)
+LC_BGR * pBgr2 u Nytt gruppenummer for siste del av gruppen.
+short sStatus r Status: UT_TRUE = OK
+ UT_FALSE = feil, ikke splittet
+Bruk:
+sStatus = LC_SplittGr(sP1,sP2,&Bgr2);
+ ==========================================================================
+
+SK_EntPnt_FYBA short LC_SplittGr (long sP1,long sP2,LC_BGR * pBgr2)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_ErstattReferanse"NAME="LC_ErstattReferanse"></A><H2>LC_ErstattReferanse</H2>
+<BIG><I><B>Erstatt referanse </I></B></BIG><PRE>
+==========================================================================
+Formål:
+Erstatt referanse i alle grupper i gitt fil.
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+LC_FILADM *pFil i Fil som skal behandles
+long lGmlSnr i Gruppe som skal byttes ut
+long lNyttSnr i Ny gruppe
+ Verdien 0 fører til gammelt serienummer
+ fjernes uten at det legges inn noe nytt.
+bool bSammeRetning i Gruppene er digitalisert i samme retning
+Bruk:
+sStatus = LC_ErstattReferanse(pFil, lGmlSnr, lNyttSnr, bSammeRetning);
+==========================================================================
+
+SK_EntPnt_FYBA void LC_ErstattReferanse (LC_FILADM *pFil,long lGmlSnr,long lNyttSnr, bool bSammeRetning)
+</PRE>
+
+<BR>
+<BR>
+<BR>
+<A ID="O43"NAME="O43"></A><H2>22.3 Hele basen</H2>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_InqAntFiler"NAME="LC_InqAntFiler"></A><H2>LC_InqAntFiler</H2>
+<BIG><I><B>Finn antall filer i basen</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Finn antall filer i aktuell base.
+Parametre:
+Type Navn I/U Forklaring
+-------------------------------------------------------------------
+unsigned short usLag i Velg hvilke "lag" det skal søkes i.
+ LC_FRAMGR og /eller LC_BAKGR
+ (Bruk "|" for å kombinere.)
+short sAntall r Antall filer i aktuell base.
+Bruk:
+ Finner antall framgrunnsfiler i basen
+ sAntall = LC_InqAntFiler(LC_FRAMGR);
+ ==========================================================================
+
+SK_EntPnt_FYBA short LC_InqAntFiler(unsigned short usLag)
+</PRE>
+
+
+<BR>
+<BR>
+<BR>
+<A ID="O44"NAME="O44"></A><H2>22.4 Prioritet</H2>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_ClrPrioritet"NAME="LC_ClrPrioritet"></A><H2>LC_ClrPrioritet</H2>
+<BIG><I><B>Slett prioritets-bit</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Slett prioritets-bit.
+Parametre:
+Navn Type I/U Forklaring
+--------------------------------------------------------------------------
+LC_BGR * pGr i Gruppenummer
+kolonne short i Kolonne som skal merkes.
+ (Lovlig 0 til LC_MAX_ANT_PRIOR-1)
+Bruk:
+LC_ClrPrioritet(pGr,kolonne);
+ ==========================================================================
+
+SK_EntPnt_FYBA void LC_ClrPrioritet(LC_BGR * pGr,short kolonne)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_SetPrioritet"NAME="LC_SetPrioritet"></A><H2>LC_SetPrioritet</H2>
+<BIG><I><B>Sett prioritets-bit</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Sett prioritets-bit.
+Parametre:
+Navn Type I/U Forklaring
+--------------------------------------------------------------------------
+LC_BGR * pGr i Gruppenummer
+kolonne short i Kolonne som skal merkes.
+ (Lovlig 0 til LC_MAX_ANT_PRIOR-1)
+Bruk:
+LC_SetPrioritet(pGr,kolonne);
+ ==========================================================================
+
+SK_EntPnt_FYBA void LC_SetPrioritet(LC_BGR * pGr,short kolonne)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_InqPrioritet"NAME="LC_InqPrioritet"></A><H2>LC_InqPrioritet</H2>
+<BIG><I><B>Hent prioritets-bit</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Hent prioritets-bit.
+Parametre:
+Navn Type I/U Forklaring
+--------------------------------------------------------------------------
+LC_BGR * pGr i Gruppenummer
+kolonne short i Kolonne som skal hentes.
+ (Lovlig 0 til LC_MAX_ANT_PRIOR-1)
+short sAvPaa r Av eller På (UT_TRUE = På, UT_FALSE = Av)
+Bruk:
+sAvPaa = LC_InqPrioritet(pGr,kolonne);
+ ==========================================================================
+
+SK_EntPnt_FYBA short LC_InqPrioritet(LC_BGR * pGr,short kolonne)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_ErasePrioritet"NAME="LC_ErasePrioritet"></A><H2>LC_ErasePrioritet</H2>
+<BIG><I><B>Blank ut prioritets-bit</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Blank ut prioritets-bit.
+Parametre:
+Navn Type I/U Forklaring
+--------------------------------------------------------------------------
+LC_BGR * pGr i Gruppenummer
+Bruk:
+LC_ErasePrioritet(pGr);
+ ==========================================================================
+
+SK_EntPnt_FYBA void LC_ErasePrioritet(LC_BGR * pGr)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_EraseAllPrioritet"NAME="LC_EraseAllPrioritet"></A><H2>LC_EraseAllPrioritet</H2>
+<BIG><I><B>Blank ut ALLE prioritets-bit</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Blank ut alle prioritets-bit på alle gruppene i denne filen.
+Parametre:
+Navn Type I/U Forklaring
+--------------------------------------------------------------------------
+LC_FILADM *pFil i Filpeker
+Bruk:
+LC_EraseAllPrioritet(pFil);
+ ==========================================================================
+
+SK_EntPnt_FYBA void LC_EraseAllPrioritet(LC_FILADM *pFil)
+</PRE>
+
+<BR>
+<BR>
+<BR>
+<A ID="O45"NAME="O45"></A><H2>22.5 Kvalitet</H2>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_FormatterKvalitet"NAME="LC_FormatterKvalitet"></A><H2>LC_FormatterKvalitet</H2>
+<BIG><I><B>Formatter KVALITET</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Formater parameterstrengen for KVALITET.
+Resultatet legges i en intern streng, og må kopieres over til andre
+variabler før endring.
+Parametre:
+Type Navn I/U Forklaring
+-------------------------------------------------------------------------
+short sMetode i Hvordan data er registrert.
+ KVAL_MET_UNDEF metode er udefinert.
+ KVAL_MET_STD standard metode fra nivå over.
+long lNoyaktighet i Registreringsnøyaktighet
+ KVAL_NOY_UKJENT nøyaktighet er ukjent.
+ KVAL_NOY_STD standard nøyaktighet fra nivå over
+short sSynbarhet i Synbarhet i bilde
+ KVAL_SYN_GOD godt synlig.
+ KVAL_SYN_UNDEF synbarhet er udefinert.
+ KVAL_SYN_STD standard metode fra nivå over.
+short sHoydeMetode i Hvordan data er registrert.
+ KVAL_MET_UNDEF metode er udefinert.
+ KVAL_MET_STD standard metode fra nivå over.
+long lHoydeNoyaktighet i Registreringsnøyaktighet
+ KVAL_NOY_UKJENT nøyaktighet er ukjent.
+ KVAL_NOY_STD standard nøyaktighet fra nivå over
+char *pszParameter r Peker til '/0'-avslutta streng.
+Bruk:
+ pszParameter = LC_FormatterKvalitet(sMetode,lNoyaktighet,sSynbarhet,
+ sHoydeMetode,lHoydeNoyaktighet);
+=============================================================================
+
+SK_EntPnt_FYBA char *LC_FormatterKvalitet(short sMetode,long lNoyaktighet,short sSynbarhet,
+ short sHoydeMetode,long lHoydeNoyaktighet)
+</PRE>
+
+<BR>
+<BR>
+<BR>
+<A ID="O46"NAME="O46"></A><H2>22.6 Tabellhandtering</H2>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_InitTabel"NAME="LC_InitTabel"></A><H2>LC_InitTabel</H2>
+<BIG><I><B>Åpner tabellsystemet</I></B></BIG><PRE>
+=============================================================================
+Formål:
+Initierer tabellsystemet og åpner filen.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+long n_rec i Antall reckords som skal nullstilles. Disse kan
+ etterpå brukes til tilfeldig aksess. Utvidelse
+ av filen kan senere bare skje i fortløpende
+ rekkefølge.
+short rec_len i Reckordlengde. (Bruk sizeof for å finne lengden.)
+void *buffer i Peker til buffer som skal brukes for nullstilling.
+short ist r Status. (0=OK, -1=feil)
+Bruk:
+ .
+ struct{
+ long snr;
+ short ngi;
+ short nko;
+ } buffer;
+ .
+ .
+ ist = LC_InitTabel(10000L,sizeof buffer,(void *)(&buffer));
+ .
+ ist = LC_PutTabel(linje,(void *)&buffer);
+ .
+ ist = LC_GetTabel(linje,(void *)&buffer);
+ .
+ LC_CloseTabel();
+ =============================================================================
+
+SK_EntPnt_FYBA short LC_InitTabel(long n_rec,short rec_len,void *buffer)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_PutTabel"NAME="LC_PutTabel"></A><H2>LC_PutTabel</H2>
+<BIG><I><B>Put tabell-linje</I></B></BIG><PRE>
+=============================================================================
+Formål:
+Legg inn en linje fra tabellfilen.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+long linje i Linjenummer som skal legges inn. (0 er første linje)
+ (Største lovlige er 1 større enn det største hittil.)
+void *buffer i Peker til struktur som skal legges inn.
+short ist r Status (0=OK, -1=feil)
+Bruk:
+ist = LC_PutTabel(linje,(void *)&buffer);
+ =============================================================================
+
+SK_EntPnt_FYBA short LC_PutTabel(long linje,void *buffer)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_GetTabel"NAME="LC_GetTabel"></A><H2>LC_GetTabel</H2>
+<BIG><I><B>Get tabell-linje</I></B></BIG><PRE>
+=============================================================================
+Formål:
+Henter en linje fra tabellfilen.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+long linje i Linjenummer som skal hentes. (0 er første linje)
+void *buffer i Peker til struktur som skal ta mot lest reckord.
+short ist r Status (0=OK, -1=feil)
+Bruk:
+ist = LC_GetTabel(linje,(void *)&buffer);
+ =============================================================================
+
+SK_EntPnt_FYBA short LC_GetTabel(long linje,void *buffer)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_CloseTabel"NAME="LC_CloseTabel"></A><H2>LC_CloseTabel</H2>
+<BIG><I><B>Stenge tabellsystemet</I></B></BIG><PRE>
+=============================================================================
+Formål:
+Avslutter tabellsystemet og stenger og sletter filen.
+Tabellen kan nå åpnes på nytt for annen bruk.
+Parametre: ingen
+
+Bruk:
+LC_CloseTabel();
+ =============================================================================
+
+SK_EntPnt_FYBA void LC_CloseTabel(void)
+</PRE>
+
+<BR>
+<BR>
+<BR>
+<A ID="O47"NAME="O47"></A><H2>22.7 Meldingshandtering</H2>
+FYBA har en mekanisme som muliggjør at kallende program handterer meldinger til bruker.
+Dette er callback-rutiner som kalles fra FYBA for feilmeldings-handtering
+og visning av framdrift under indeksoppbygging.
+
+Et eksempel på implementasjon ligger i Fyba_Callback.cpp.
+For å få et godt brukergrensesnitt bør disse rutinene endres slik at de bruker
+det meldings og feilhandteringssystemet som brukes av hovedprogrammet.
+
+Hvis FYBA brukes som en DLL må meldingshandteringsrutinene registreres
+med følgende rutiner:
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_SetErrorHandler"NAME="LC_SetErrorHandler"></A><H2>LC_SetErrorHandler</H2>
+<BIG><I><B>Registrer feilmeldingsrutine</I></B></BIG><PRE>
+=============================================================================
+Formål:
+Registrer feilmeldingsrutine.
+Feilmeldingsrutinen blir kallt hvis det oppstår feil.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+void (*f) (short ,char *,char *) i Peker til feilmeldingsrutine
+Bruk:
+LC_SetErrorHandler(ErrorHandler);
+Feilmeldingsrutinen skal ha følgende definisjon:
+void ErrorHandler(short feil_nr,const char *logtx,const char *vartx);
+Med følgende parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+short feil_nr i Feil-nummer
+char *logtx i Tekst som bare skrives til logfil.
+ Eks:"(utført i LC_RxGr)"
+char *vartx i Denne tekststreng henges etter feilmeldingsteksten.
+=============================================================================
+
+SK_EntPnt_FYBA void LC_SetErrorHandler(void (*f) (short,const char*,const char*))
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_SetStartMessageHandler"NAME="LC_SetStartMessageHandler"></A><H2>LC_SetStartMessageHandler</H2>
+<BIG><I><B>Registrer initieringsrutine</I></B></BIG><PRE>
+=============================================================================
+Formål:
+Registrer initieringsrutine.
+Initieringsrutinen blir kalt for å starte visning av framdrift.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+void (*f)(char*) i Peker til initieringsrutine
+Bruk:
+LC_SetStartMessageHandler(StartMessageHandler);
+Initieringsrutinen skal ha følgende definisjon:
+void StartMessageHandler(char *pszFilnavn);
+Med følgende parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+char *pszFilnavn i Ekstra meldingstekst (filnavn)
+=============================================================================
+
+SK_EntPnt_FYBA void LC_SetStartMessageHandler(void (*f)(const char*))
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_SetShowMessageHandler"NAME="LC_SetShowMessageHandler"></A><H2>LC_SetShowMessageHandler</H2>
+<BIG><I><B>Registrer visningsrutine</I></B></BIG><PRE>
+=============================================================================
+Formål:
+Registrer visningsrutine.
+Visningsrutine blir kalt for å vise framdrift ved indeks-oppbygging.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+void (*f)(double) i Peker til visningsrutine
+Bruk:
+LC_SetShowMessageHandler(ShowMessageHandler);
+Visningsrutinen skal ha følgende definisjon:
+void ShowMessageHandler(double prosent);
+Med følgende parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+double prosent i Prosent ferdig (0.0 - 100.0)
+=============================================================================
+
+SK_EntPnt_FYBA void LC_SetShowMessageHandler(void (*f)(double))
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_SetEndMessageHandler"NAME="LC_SetEndMessageHandler"></A><H2>LC_SetEndMessageHandler</H2>
+<BIG><I><B>Registrer avslutningsrutine</I></B></BIG><PRE>
+=============================================================================
+Formål:
+Registrer avslutningsrutine.
+Avslutningsrutinen blir kalt for å avslutte visning av framdrift ved indeksoppbygging.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+void (*f)(void) i Peker til avslutningsrutine
+Bruk:
+LC_SetEndMessageHandler(EndMessageHandler);
+Avslutningsrutinen skal ha følgende definisjon:
+void EndMessageHandler(void);
+=============================================================================
+
+SK_EntPnt_FYBA void LC_SetEndMessageHandler(void (*f)(void))
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_SetCancelHandler"NAME="LC_SetCancelHandler"></A><H2>LC_SetCancelHandler</H2>
+<BIG><I><B>Registrer avbruddsstyring</I></B></BIG><PRE>
+=============================================================================
+Formål:
+Registrer avbruddsstyring.
+Rutine for avbruddsstyring blir kalt for å sjekke om bruker ønsker
+å avbryte beregningen.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+short (*f)(void) i Peker til rutine for avbruddsstyring.
+Bruk:
+LC_SetCancelHandler(CancelHandler);
+Rutine for avbruddsstyring skal ha følgende definisjon:
+short CancelHandler(void);
+Med følgende parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+short sAvbrutt r UT_TRUE = Cancel
+ UT_FALSE = ikke avbrudd
+=============================================================================
+
+SK_EntPnt_FYBA void LC_SetCancelHandler(short (*f)(void))
+</PRE>
+
+En tilsvarende enkel feilmeldingshandtering ligger i FYBA_DLL.dll.
+Denne (DLL'ens) meldingshandteringen blir brukt hvis ekstern meldingshandtering
+ikke blir aktivisert.
+
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_StartMessage"NAME="LC_StartMessage"></A><H2>LC_StartMessage</H2>
+<BIG><I><B>Vise melding</I></B></BIG><PRE>
+=============================================================================
+Formål:
+Starter vising av melding om baseoppbygging.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+char *pszFilnavn i Ekstra meldingstekst (filnavn)
+Bruk:
+LC_StartMessage(pszFilnavn);
+=============================================================================
+
+void LC_StartMessage(const char *pszFilnavn)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_ShowMessage"NAME="LC_ShowMessage"></A><H2>LC_ShowMessage</H2>
+<BIG><I><B>Vise melding</I></B></BIG><PRE>
+=============================================================================
+Formål:
+Vising av melding om baseoppbygging.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+double prosent i Prosent ferdig (0.0 - 100.0)
+Bruk:
+LC_ShowMessage(prosent);
+=============================================================================
+
+void LC_ShowMessage(double prosent)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_EndMessage"NAME="LC_EndMessage"></A><H2>LC_EndMessage</H2>
+<BIG><I><B>Avslutt melding</I></B></BIG><PRE>
+=============================================================================
+Formål:
+Avslutt melding om baseoppbygging.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+Bruk:
+LC_EndMessage();
+=============================================================================
+
+void LC_EndMessage(void)
+</PRE>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_Cancel"NAME="LC_Cancel"></A><H2>LC_Cancel</H2>
+<BIG><I><B>Sjekk om Esc er trykket</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Sjekk om det er trykkt på Esc (Avbryte indeksoppbygging).
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+short sAvbrutt r UT_TRUE = Cancel
+ UT_FALSE = ikke avbrudd
+Bruk:
+sAvbrutt = LC_Cancel();
+==========================================================================
+
+short LC_Cancel(void)
+</PRE>
+
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_Error"NAME="LC_Error"></A><H2>LC_Error</H2>
+<BIG><I><B>Feilmeldingsrutine</I></B></BIG><PRE>
+=============================================================================
+Formål:
+Standard feilmeldingsrutine.
+Parametre:
+Type Navn I/U Forklaring
+-----------------------------------------------------------------------------
+short feil_nr i Feil-nummer
+char *logtx i Tekst som bare skrives til logfil.
+ Eks:"(utført i LC_RxGr)"
+char *vartx i Denne tekststreng henges etter feilmeldingsteksten.
+Bruk:
+LC_Error(35,"(Kallt i LC_Xxxx)","");
+=============================================================================
+
+void LC_Error(short feil_nr,const char *logtx,const char *vartx)
+</PRE>
+
+<BR>
+<BR>
+<BR>
+<A ID="O48"NAME="O48"></A><H2>22.8 Hjelperutine for meldingshandtering</H2>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_StrError"NAME="LC_StrError"></A><H2>LC_StrError</H2>
+<BIG><I><B>Feilmeldingstekst</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Henter feilmeldingstekst og nivå for et feilmeldingsnummer.
+Strengen legges i en egen feilmeldingsstruktur for feil-rutiner i fyba.
+Dette blir ødelagt ved neste kall til en "feil-rutine". For å ta vare på
+strengen må den kopieres over til egen streng. (Bruk UT_StrCopy).
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+short feil_nr i Feilmeldingsnummer
+char **feilmelding u Peker til feilmeldingstekst avslutta med '/0'.
+short *strategi r Feilnivå (0-4)
+ 0 = Ikke i bruk. (Utkoblet, testmeldinger mm.)
+ 1 = Lite alvorlig. Vises kort.
+ 2 = Normal feilmelding. Vises ca. 1 sekund.
+ 3 = Alvorlig. Krev tastetrykk for å fortsette.
+ 4 = Svært alvorlig. Programmet bør avbrytes.
+Bruk:
+strategi = LC_StrError(ckap,feil_nr,&feilmeldingspeker);
+ ==========================================================================
+
+SK_EntPnt_FYBA short LC_StrError(short feil_nr,char **feilmelding)
+</PRE>
+
+<BR>
+<BR>
+<BR>
+<A ID="O49"NAME="O49"></A><H2>22.9 Feilsøking</H2>
+<BR>
+<BR>
+<HR>
+<BR>
+<BR>
+<A ID="LC_DumpTab"NAME="LC_DumpTab"></A><H2>LC_DumpTab</H2>
+<BIG><I><B>Dump interne tabeller til stderr</I></B></BIG><PRE>
+==========================================================================
+Formål:
+Dump interne tabeller til stderr
+Parametre:
+Type Navn I/U Forklaring
+--------------------------------------------------------------------------
+Bruk:
+LC_DumpTab();
+ =============================================================================
+
+SK_EntPnt_FYBA void LC_DumpTab(void)
+</PRE>
+
+
+
+
+
+
+
+</BODY></HTML>