#cobol
#cobol
Вопрос:
Я использую Visual Cobol для создания программы, которая считывает файл, имеет критерии пользовательского ввода и отображает только те записи в файле, которые соответствуют критериям пользователя. Мне нужно отобразить количество записей, соответствующих критериям, что я сделал с помощью накопителя, но мне также нужно отобразить общее количество записей в файле, включая те, которые не отображаются.
Мне интересно, могу ли я сделать это в инструкции Sort. Я пробовал несколько вещей, но я не уверен в необходимом синтаксисе.
Это моя текущая инструкция сортировки:
B-100-PROCESS-FILE.
PERFORM B-200-CRITERIA-CONTROL.
SORT SORT-FILE
ON DESCENDING KEY SR-UNIT-COST
INPUT PROCEDURE B-210-SELECT-RECORDS
OUTPUT PROCEDURE B-220-DISPLAY-REPORT.
Новое дополнение:
B-210-SELECT-RECORDS.
OPEN INPUT CUSTOMER-SALES-FILE
MOVE "N" TO SW-END-OF-FILE.
READ CUSTOMER-SALES-FILE INTO CUSTOMER-SALES-RECORD
AT END MOVE "Y" TO SW-END-OF-FILE
NOT AT END ADD 1 TO AC-RECORD-TOTAL
PERFORM B-370-RELEASE-RECORDS
UNTIL END-OF-FILE.
CLOSE CUSTOMER-SALES-FILE.
почти готово…
Комментарии:
1. Вы можете подсчитать записи в
Sort input procedure
2. Отличается ли количество от AC-RECORD-TOTAL?
3. Нет, я пытаюсь сохранить общее количество записей в этой переменной.
4. Немного позаботьтесь об условных предложениях.
PERFORM B-370...
Анализируется как частьNOT AT END
предложения, а не так, как может показаться из-за отступа источника. ИспользуйтеEND-READ
или полную остановку наNOT AT END
фразе.
Ответ №1:
У меня есть возможное решение:
OPEN INPUT CUSTOMER-SALES-FILE
MOVE "N" TO SW-END-OF-FILE.
READ CUSTOMER-SALES-FILE INTO CUSTOMER-SALES-RECORD
AT END MOVE "Y" TO SW-END-OF-FILE
END-READ
IF SW-END-OF-FILE NOT= 'Y'
ADD 1 TO WS-CONT
END-IF
PERFORM B-370-RELEASE-RECORDS
UNTIL END-OF-FILE.
CLOSE CUSTOMER-SALES-FILE.