Ich bekomme eine externe Programmanwahl zwischen 1 und 4096 und dachte mir, da ich damit je nach Teil immer verschiede Positionen anfahren muß und keine Übereinstimmung in allen Positionen habe, mache ich es mir so einfach! :-|
Kann mir kaum vorstellen, daß es sich um 4096 verschiedene Teile handelt. Füg doch noch einen INT für Programmnummer hinzu. Sagen wir für 20 verschieden Produkte oder Teile:
STRUC TESTTYP CHAR NAME[12],REAL ABNAHME_POS,H,ABGABE_POS,INT ProgNr
;===== TESTDATEN
INT AKT_TEST=1
INT AKT_TEST_NR=1
INT NUMMER=1
INT ANZ_DATEN=20
DECL TESTTYP TEST_SATZ[20]
TEST_SATZ[1]={NAME[] "Test 1",ABNAHME_POS 0.0,ABGABE_POS,H 130.0,Prognr 1}
TEST_SATZ[2]={NAME[] "Test 2",ABNAHME_POS 0.0,ABGABE_POS,H 130.0,Prognr 64}
TEST_SATZ[3]={NAME[] "Test 2",ABNAHME_POS 0.0,ABGABE_POS,H 130.0,Prognr 4}.
.
.
TEST_SATZ[20]={NAME[] "Test 20",ABNAHME_POS 0.0,ABGABE_POS 130.0,Prognr 4096}
Im Hauptprogramm schreibst du dann:
INT i ;Schleifenzähler (Muß in den Deklarationsteil)
AKT_TEST=0
For i = 1 to ANZAHL_DATEN
If TEST_SATZ[i].Prognr==SPSProgNr then ;SPSProgNr= Übergebene Programmnummer
AKT_TEST=i
Exit
Endif
endfor
If AKT_TEST==0 then
;Keine passende Programmnummer Fehler
HALT
;Mach irgendwas...
Endif
Dazu mußt du natürlich die verschiedenen Programmnummern kennen. Aber es spart 'ne Menge Datensätze und die Config.dat läßt sich auch schneller öffnen.
Das ganze ist auch übersichtlicher.