2017-10-24 9 views
0

일부 데이터를 인쇄하는 프로그램을 수정해야합니다. 이제는 특정 행 번호에 도달하면 새 페이지를 시작하는 새로운 방법을 작성하는 것입니다. 스풀 파일의 끝에는 일정한 데이터가 인쇄되기 때문에 새 페이지에서 분리해서는 안됩니다.PRTF에서 현재 줄 수를 검색하는 방법

현재의 방법은 카운터를 증가시키는 것입니다. 하지만 바코드를 인쇄 할 때이 바코드가 얼마나 많은지 (얼마나 많은 줄이 있는지) 알지 못하기 때문에 이것은 매우 나쁜 방식입니다. 그리고 모든 프로그램에서 구현할 수있는 방법을 얻고 싶기 때문에 모든 바코드의 크기를 직접 테스트하고 얻을 필요가 없습니다.

나는 커서 위치를 알려주는 디스플레이 파일을위한 데이터 구조가 있다는 것을 알고있다. 그래서 - 제가 이것을 이해했듯이 - PRTF와 현행 라인 번호와 같은 가능성이 있어야합니다.

누구든지이 작업을 수행하는 방법을 알고 있습니까? 감사합니다.

+1

프린터 파일 정보 데이터 구조를 살펴 보셨습니까? 거기에 현재 줄 번호가 있습니다. 그러나 AFPDS 또는 IPDS 데이터 스트림에 대한 정보가 있는지 여부는 알 수 없습니다. – jmarkmurphy

답변

2

파일 정보 데이터 구조 (INFDS)를 사용하여 필요한 정보를 얻습니다.

FQSYSPRT O F 132  PRINTER OFLIND(*INOF) 
F          INFDS(OutputFDS) 
F          PRTCTL(PrtCtlDS) 

D*File Information Data Structure               
D OutputFDS  DS                  
D**Open Feedback Area                  
D ROWS     152 153I 0              
D OVERFLOW    188 189I 0              
D                       
D**Printer Feedback Area                 
D CUR_LINE    367 368I 0          Current line num 
D CUR_PAGE    369 372I 0          Current page cnt 


D*Printer Control Data Structure   
D PrtCtlDS  DS      
D pSpacing    1  12   
D pSpcBefore    1  3A   
D pSpcAfter    4  6A   
D pSkpBefore    7  9A   
D pSkpAfter    10  12A   
D pLineNbr    13  15S 0  

당신은뿐만 아니라 프린터 제어 데이터 구조 (PRTCTL)에서 줄 번호를 얻을 수 있습니다,하지만 당신은 종종 행과 상황에서 오버 플로우 라인을 알고 싶은 것하고 만에서 찾을 수 있습니다 정보.

+0

좋은 답변이지만 OP는 바코드를 인쇄하기 때문에 IPDS 또는 AFPDS 프린터 파일을 다루고 있습니다. Mark가 게시물에 댓글을 달았을 때, 일단 텍스트가 아닌 데이터를 다루기 시작하면 라인 #이 정확하다고 생각하지 않습니다. – Charles