#header #footer #cobol
#заголовок #нижний колонтитул #cobol
Вопрос:
Программы Cobol:
IDENTIFICATION DIVISION.
PROGRAM-ID. PROG-TWO.
AUTHOR. MARKIED JONES.
FD PATRON-LIST.
01 PATRON-LINE PIC X(80).
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT PATRON-FILE ASSIGN TO INFILE.
SELECT PATRON-LIST ASSIGN TO OUTFILE.
DATA DIVISION.
FILE SECTION.
FD PATRON-FILE.
01 PATRON-RECORD.
03 PR-NAME PIC X(18).
03 PR-ADDRESS PIC X(18).
03 PR-CITY-STATE-ZIP PIC X(24).
03 PR-TARGET-CONTR PIC 9(4).
03 PR-ACTUAL-CONTR PIC 9(4).
03 PR-CONTR-DATE.
05 PR-CONTR-MONTH PIC XX.
05 PR-CONTR-DAY PIC XX.
05 PR-CONTR-YEAR PIC XX.
03 FILLER PIC X(6).
FD PATRON-LIST.
01 PATRON-LINE.
03 FILLER PIC X.
03 PL-NAME PIC X(18).
03 FILLER PIC X.
03 PL-ADDRESS PIC X(18).
03 FILLER PIC XX.
03 PL-CITY-STATE-ZIP PIC X(24).
WORKING-STORAGE SECTION.
01 WS-PATRON-LINE PIC X(80).
01 WS-HEADER-LINE-1.
03 FILLER PIC X(18) VALUE SPACES.
03 FILLER PIC X(7) VALUE "INDIANA".
03 FILLER PIC X VALUE SPACE.
03 FILLER PIC X(10) VALUE "UNIVERSITY".
03 FILLER PIC X VALUE SPACE.
03 FILLER PIC X(2) VALUE "OF".
03 FILLER PIC X VALUE SPACE.
03 FILLER PIC X(12) VALUE "PENNSYLVANIA".
01 WS-HEADER-LINE-1-UL.
03 FILLER PIC X(18) VALUE SPACES.
03 FILLER PIC X(7) VALUE "-".
03 FILLER PIC X VALUE SPACE.
03 FILLER PIC X(10) VALUE "-".
03 FILLER PIC X VALUE SPACE.
03 FILLER PIC X VALUE "-".
03 FILLER PIC X VALUE SPACE.
03 FILLER PIC X(12) VALUE "-".
01 HEADER-LINE-2.
03 FILLER PIC X(20) VALUE SPACES.
03 FILLER PIC X(8) VALUE "COMPUTER".
03 FILLER PIC X VALUE SPACE.
03 FILLER PIC X(7) VALUE "SCIENCE".
03 FILLER PIC X VALUE SPACE.
03 FILLER PIC X(10) VALUE "DEPARTMENT".
01 HEADER-LINE-2-UL.
03 FILLER PIC X(20) VALUE SPACES.
03 FILLER PIC X(8) VALUE ALL"-".
03 FILLER PIC X VALUE SPACE.
03 FILLER PIC X(7) VALUE ALL"=".
03 FILLER PIC X VALUE SPACE.
03 FILLER PIC X(10) VALUE ALL"-".
01 HEADER-LINE-3.
03 FILLER PIC X(22) VALUE SPACES.
03 FILLER PIC X(7) VALUE "LISTING".
03 FILLER PIC X VALUE SPACE.
03 FILLER PIC X(2) VALUE "OF".
03 FILLER PIC X VALUE SPACE.
03 FILLER PIC X(7) VALUE "PATRONS".
01 HEADER-LINE-3-UL.
03 FILLER PIC X(22) VALUE SPACES.
03 FILLER PIC X(7) VALUE "-".
03 FILLER PIC X VALUE SPACE.
03 FILLER PIC X(2) VALUE "-".
03 FILLER PIC X VALUE SPACE.
03 FILLER PIC X(7) VALUE "-".
01 WS-COLUMN-HEADER-1.
03 FILLER PIC X(4) VALUE SPACES.
03 FILLER PIC X(6) VALUE "PATRON".
03 FILLER PIC X(8) VALUE SPACES.
03 FILLER PIC X(6) VALUE "PATRON".
03 FILLER PIC X(15) VALUE SPACES.
03 FILLER PIC X(6) VALUE "PATRON".
01 WS-COLUMN-HEADER-1UL.
03 FILLER PIC X(4) VALUE SPACES.
03 FILLER PIC X(6) VALUE "-".
03 FILLER PIC X(8) VALUE SPACES.
03 FILLER PIC X(6) VALUE "-".
03 FILLER PIC X(15) VALUE SPACES.
03 FILLER PIC X(6) VALUE "-".
01 WS-COLUMN-HEADER-2.
03 FILLER PIC X(4) VALUE SPACES.
03 FILLER PIC X(4) VALUE "NAME".
03 FILLER PIC X(8) VALUE SPACES.
03 FILLER PIC X(7) VALUE "ADDRESS".
03 FILLER PIC X(12) VALUE SPACES.
03 FILLER PIC X(14) VALUE "CITY-STATE-ZIP".
01 WS-COLUMN-HEADER-2UL.
03 FILLER PIC X(4) VALUE SPACES.
03 FILLER PIC X(4) VALUE "-".
03 FILLER PIC X(8) VALUE SPACES.
03 FILLER PIC X(7) VALUE "-".
03 FILLER PIC X(12) VALUE SPACES.
03 FILLER PIC X(14) VALUE "-".
01 WS-FOOTER-LINE-1.
03 FILLER PIC X(24) VALUE
"TOTAL # OF PATRONS:".
03 WS-NUM-PATRONS PIC Z9.
01 WS-FOOTER-LINE-2.
03 FILLER PIC X(32) VALUE
"PROGRAMMED BY A COSC 220 STUDENT".
01 WS-EOF-SWITCH PIC X(3).
PROCEDURE DIVISION.
000-PRINT-PATRON-LIST.
OPEN INPUT PATRON-FILE
OUTPUT PATRON-LIST
MOVE "NO" TO WS-EOF-SWITCH
READ PATRON-FILE
AT END MOVE "YES" TO WS-EOF-SWITCH
END-READ
PERFORM 100-PROCESS-PATRON-RECORD
UNTIL WS-EOF-SWITCH IS EQUAL TO "YES"
CLOSE PATRON-FILE PATRON-LIST
STOP RUN
.
100-PROCESS-PATRON-RECORD.
MOVE PR-NAME TO PL-NAME
MOVE PR-ADDRESS TO PL-ADDRESS
MOVE PR-CITY-STATE-ZIP TO PL-CITY-STATE-ZIP
WRITE PATRON-LINE
READ PATRON-FILE
AT END MOVE "YES" TO WS-EOF-SWITCH
END-READ
.
200-PRINT-PATRON-LINE.
Комментарии:
1. Какую книгу вы читали???
Ответ №1:
В чем именно ваша проблема, вы просто делаете
write PATRON-LINE from WS-HEADER-LINE-1
write PATRON-LINE from WS-HEADER-LINE-1-UL
...
лично я бы поместил код печати страницы в отдельную процедуру (и проверил номер строки)
r0900-Page-header.
if line-number > ...
write PATRON-LINE from WS-HEADER-LINE-1
after advancing page
...
move ... to line-number
end-if
.
Также посмотрите на предложение advancing
Комментарии:
1. Я просто попробовал фрагмент кода, который вы предложили: 200-PRINT-PATRON-LINE. напишите СТРОКУ-ПОКРОВИТЕЛЯ из WS-HEADER-LINE-1 напишите СТРОКУ-ПОКРОВИТЕЛЯ из WS-HEADER-LINE-1-UL …….. И он по-прежнему просто отображает мой вывод без верхних или нижних колонтитулов.
2. можете ли вы обновить код в вопросе. Также откуда вы вызвали новые процедуры???
Ответ №2:
Вы можете использовать отдельный пункт для записи всех заголовков один за другим после открытия выходного файла. Не забудьте инициализировать СТРОКУ ПЕРЕХОДА после перемещения и записи каждого отдельного заголовка.
Комментарии:
1. Я очень новичок в cobol. Не могли бы вы написать пример того, что вы описываете?
Ответ №3:
Как только вы открыли выходной файл. Добавьте ниже инструкцию выполнения.
ВЫПОЛНИТЕ 050-WRITE-HEADER.
050-WRITE-HEADER. ИНИЦИАЛИЗИРОВАТЬ СТРОКУ-ПОКРОВИТЕЛЯ ПЕРЕМЕСТИТЬ WS-HEADER-LINE-1 В СТРОКУ-ПОКРОВИТЕЛЯ НАПИСАТЬ СТРОКУ-ПОКРОВИТЕЛЯ
ИНИЦИАЛИЗИРОВАТЬ СТРОКУ-ПОКРОВИТЕЛЯ ПЕРЕМЕСТИТЬ WS-HEADER-LINE-1-UL В СТРОКУ-ПОКРОВИТЕЛЯ НАПИСАТЬ СТРОКУ-ПОКРОВИТЕЛЯ
то же самое для заголовка 2 и 3.
Комментарии:
1. ИНИЦИАЛИЗИРОВАТЬ, ПЕРЕМЕСТИТЬ в то же поле? Вы не доверяете компьютерам? Пожалуйста, обратите внимание, что это не «форум». Вы не отвечаете на каждый комментарий, просто чтобы обойти невозможность оставить комментарий, пока у вас не будет 50 очков репутации.
2. Кроме того, вывод заголовков, когда они не нужны, очень неаккуратен (хотя и очень распространен). Что, если вы не напишете ни одной строки вывода (ничто не соответствует условиям)? Вы по-прежнему получаете заголовок, но только заголовок.