Моя проблема заключается в том, что, учитывая переменную, которую я читаю из файла, посмотрите, содержит ли она другую строку или соответствует ей.
Другими словами, найти в файле все записи, переменная которых
БРЭДД ПИК Х(30)
соответствует или содержит строку, введенную с клавиатуры.
Я очень уверен, что эта проблема решена с помощью инструкции INSPECT, и я пробовал что-то вроде этого в своем коде:
READ BRANCHFILE NEXT RECORD
AT END SET EndOfFile TO TRUE
END-READ.
PERFORM UNTIL EndOfFile
INSPECT BBRADD
TALLYING CONT for CHARACTERS
BEFORE INITIAL CITY
IF CONT>1
DISPLAY " BRANCH CODE :" BBRID
DISPLAY " BRANCH NAME :" BBRNAME
DISPLAY " BRANCH ADDRESS :" BBRADD
DISPLAY " PHONE :" BBRPH
DISPLAY " E-MAIL :" BEMAIL
DISPLAY " MANAGER NAME :" BMGRNAME
DISPLAY " ------------------"
DISPLAY " ------------------"
END-IF
READ BRANCHFILE NEXT RECORD
AT END SET EndOfFile TO TRUE
END-READ
MOVE 0 TO CONT
END-PERFORM.
Где CITY — это переменная, которую я ввожу с клавиатуры.
¿Кто-нибудь знает, как найти "подстроку" в "строке"?
Например, если я ввел слово «Сарагоса», моя программа должна вывести все записи в файле, переменная BBRADD которого содержит слово «Сарагоса».
01 BRANCHREC.
88 EndOfFile VALUE HIGH-VALUE.
02 BBRID PIC X(6).
02 BBRNAME PIC X(15).
02 BBRADD PIC X(30).
02 BBRPH PIC X(10).
02 BEMAIL PIC X(20).
02 BMGRNAME PIC X(25).
FUNCTION REVERSE ...
иINSPECT ... TALLYING ... FOR LEADING SPACE
. Есть менее нагружающие процессор способы, но это распространено. Если у вас есть проблемы, начните другой вопрос. Удачи. - person Bill Woodger   schedule 14.10.2014