WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   COBOL Search-Anweisung (http://www.wcm.at/forum/showthread.php?t=163321)

sari 10.04.2005 16:28

COBOL Search-Anweisung
 
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

frazzz 10.04.2005 16:31

Re: COBOL Search-Anweisung
 
Zitat:

Original geschrieben von sari
Was mache ich falsch?


du verwendest eine veraltete sprache?

pong 10.04.2005 16:47

Ist dein Tabelleinhalt sortiert? Denn Search All arbeitet nach der Halbierungsmethode

@frazzz halts zam, wennst nichts konstruktives zu sagen hast

pong

sari 10.04.2005 20:03

frazzz, sag bitte nicht mir, sondern meinem lehrer!!!

************************************************** *********

ja, meine tabelle ist sortiert.

aber ich glaube ich weiss schon wo mein fehler liegt.

anscheinend muss ich die search-anweisung im 4. format der perform-anweisung verpacken.

PERFORM VARYING S FROM 1 BY 1 UNTIL ....

stimmts?

pong 10.04.2005 20:29

Zitat:

anscheinend muss ich die search-anweisung im 4. format der perform-anweisung verpacken.
Bitte, was ist ein "4. Format"?

Nimm einfach statt dem Search all ein Search

pong

Satan_666 11.04.2005 15:44

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!

frazzz 12.04.2005 17:43

@pong: machs dir selbst :D

cobol war schon veraltet, als ich in der schule basic lernen durfte...


@sari: sry, die fragestellung war zu verlockend ;)

pong 12.04.2005 17:57

Zitat:

Original geschrieben von frazzz
@pong: machs dir selbst :D

cobol war schon veraltet, als ich in der schule basic lernen durfte...

ASM ist auch alt und kommt jetzt erst aus der Mode, weils von Cobol abgelöst wird...

pong

Satan_666 13.04.2005 09:16

Zitat:

Original geschrieben von frazzz
cobol war schon veraltet, als ich in der schule basic lernen durfte...

Ich weiß nicht, in welcher Welt Du lebst! Immerhin sind noch immer weltweit die meisten Programme in Cobol geschrieben.... :p

Chefkoch_ico 13.04.2005 10:36

In Branchen, die EDV (nicht PCs), schon lange verwenden, zB Banken, wird Cobol auch heute noch oft eingesetzt.

Zum Thema selbst kann ich Dir leider nicht weiterhelfen. Hatte zwar mal in der Schule (HTL EDVO) ein halbes Jahr Cobol Unterricht auf einem Siemens Großrechner. Davon ahb ich allerdings nichts behalten, ausser meinen Hass darauf. :-)

CU


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:25 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag