Привет, я новичок в COBOl. У меня возникли проблемы с отображением моих верхних и нижних колонтитулов. Я прочитал книгу и посмотрел онлайн, и у меня не было никакого прогресса

#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. Кроме того, вывод заголовков, когда они не нужны, очень неаккуратен (хотя и очень распространен). Что, если вы не напишете ни одной строки вывода (ничто не соответствует условиям)? Вы по-прежнему получаете заголовок, но только заголовок.