Zitat:
Original geschrieben von sari
hallo,
ich habe ein problem mit einer tabelle (index-methode) und der search-Anweisung.
meine tabelle lautet:
01 Schueler-Tab.
05 Schueler-Zeile OCCURS 10
DESCENDING KEY IS T-S-Nr
INDEXED BY S.
10 T-S-Nr PIC 9999.
10 T-S-Nachname PIC X(15).
10 T-S-Vorname PIC X(10).
10 T-S-GebDat PIC X(8).
10 T-S-Geschlecht PIC X.
in einer SECTION wird diese befüllt und mit
SEARCH ALL Schueler-Zeile
WHEN T-S-Nr (S) = SearchSNR
MOVE T-S-Nr(S) TO A-T-S-Nr
WRITE A-Bereich FROM A-Search
END-SEARCH
will ich nach einer übereinstimmung suchen. Ich habe definitiv eine übereinstimmung (beim 4. datensatz ist T-S-Nr = SearchNR), aber SEARCH findet KEINE übereinstimmung.
da ich nicht weiss wie die SEARCH-Anweisung wirklich arbeitet, da in meinem schlauen buch nichts angegeben ist, bitte ich euch um hilfe.
Was mache ich falsch?
danke
|
Ich habe oben mal rot markiert, was mir aufgefallen ist. Du bist sicher, dass die Tabelle tatsächlich
ab- und nicht
aufsteigend sortiert ist? Und Du schreibt im Codeteil einmal Search
SNR und im erläuterten Text ohne
S vor dem NR.
Generell sollte es funktionieren, wenn die 2 Punkte im Programm korrekt sind und die Tabelle tatsächlich absteigend sortiert ist.
Weitere Frage zur Sortierung: Wer genau hat und wie den Tabelleninhalt sortiert. Bei der Sortierung ist auf die Unterschiede zwischen ASCII und EBCDIC (je nach verwendeter Maschine) zu unterscheiden. Auch das kann dazu führen, dass die Tabelle nicht wirklich sortiert ist.
Tipp: Gib mal nach dem SEARCH-Commando den Wert von 'S' aus, damit könntest Du eventuell ahnen, wohin der SEARCH-ALL sich verläuft!