2017-02-09 1 views
1

나는 다음과 같은 PL/I 코드가 :이 무엇PL/I 및 중지 탭에서 인쇄되지

declare 1 u union, 
     2 c character(1), 
     2 ci fixed binary(4) unsigned; 

    ci = data_mem(data_ptr); 
    put list (c); 

, 그것은 정수하고 아스키/EBCDIC 값 인 것처럼 출력을 소요입니다. 그래서 그것은 문자를 보여줍니다. Sofar이 작동합니다. 이제 문제는 3 개의 TAB이 삽입 된 것처럼 각 문자가 24 공백 간격으로 인쇄된다는 것입니다. 먼저 문자열을 c로 변환하고 trim()을 적용 해 보았습니다. 그러나 도움이되지 않았습니다.

아이디어가 있으십니까?

답변

4

이것은 PRINT 속성 파일의 기본 PUT LIST 동작입니다. z/OS 용 IBM Enterprise PL/I 언어 참조 -> LIST -> PUT 목록 지향 (강조 표시)에서 :

데이터 목록 항목의 값이 변환됩니다 문자 표현 (그래픽 제외)으로 변환하여 데이터 스트림으로 전송합니다. 공란은 전송 된 연속적인 데이터 값을 분리합니다. PRINT 파일의 경우 프로그램 탭 설정에 따라 항목이 구분됩니다 ("PRINT 속성"참조).

다음 수동 섹션에서는 PRINT 특성에 ​​대해 설명합니다. 여기에서는 자동 왼쪽 가장자리와 구현 정의 프리셋 탭 위치에 정렬 된 목록 - 데이터 - 지향 데이터 전송에 의해 송신

데이터 값을 갖는다.

FILE을 생략 했으므로 PUT이 기본 FILE (SYSPRINT)로 이동합니다. SYSPRINT는 내재적으로 FILE ENVIRONMENT (F RECSIZE (121)) 출력 인쇄 스트림으로 정의됩니다 (언어 참조에서 입력 및 출력 -> 파일 속성 -> 파일 상수 및 연속 데이터 세트 정의 및 사용 -> 스트림 I과 함께 PRINT 파일 사용 참조)./O를 참조하십시오). IIRC의 기본값은 매 24 개로, 한 줄당 5 개의 탭을 제공하며 1960 년대 후반 PL/I F 초기의 일반적인 120 바이트 프린터와 호환됩니다. 이는 PLITABS 구조체를 선언하여 수정할 수 있습니다 (앞에서 설명한 수동 절에서 설명).

LIST 및 DATA 지정 I/O는 출력시 서식을 거의 고려하지 않고 더러운 입출력 인터페이스 인 빠른 &을위한 것입니다 (그러나 입력시에는 매우 용인됩니다). EDIT는 출력 형식을 지정하는 것이 더 좋지만 입출력을위한 많은 FORTRAN 루트를 보여줍니다. 개인적으로, 형식화 된 출력을 사용하는 전통적인 보고서 및 레코드 입력의 경우 표준 COBOL I/O와 유사한 레코드 I/O를 사용합니다.

+1

기본 탭 위치가 표시되는데 이는 사용자가 말하는 내용에 동의합니다. https://www.ibm.com/support/knowledgecenter/SSY2V3_4.4.0/com.ibm.entpli.doc_4.4/pg/ibma1d51002738. htm # ibma1d51002738__tabsrh –

+0

그걸 파헤쳐서 PLITABS에 대해 상기시켜 줘서 고마워. 이 정보를 검색하는 데는 많은 소음이 있습니다. 많은 밀/왕겨 분리. 언급 할 답변을 업데이트 중입니다 (기본 SYSPRINT와 동일한 호흡에 문서화되어 있습니다). – zarchasmpgmr