Einzelnen Beitrag anzeigen
Alt 11.04.2005, 15:44   #6
Satan_666
Inventar
 
Registriert seit: 03.09.2000
Beiträge: 4.010


Standard Re: COBOL Search-Anweisung

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 SearchSNR 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!
____________________________________
Für ein friedliches Zusammenleben im Forum werde ich ab sofort keine Trolle mehr füttern, und zwar unabhängig von der Sinnhaftigkeit ihrer Wortmeldungen.
Satan_666 ist offline   Mit Zitat antworten