2017-02-16 13 views
1

Informix 4GL에서 생성 된 보고서가 화면에 인쇄됩니다. 한 열을 역순으로 표시해야합니다. 다음과 같이 시도했습니다.Informix 4GL 보고서 화면 - 반전

print line_image attribute(reverse) 

하지만 작동하지 않습니다. 이것이 가능합니까?

답변

1

다음

print "\033[7mHello \033[0mWorld" 

\ 033 [7m가 역으로 인쇄하는 것을 의미 시도 할 수 있습니다. 그리고 \ 033 [0m은 다시 표준으로 돌아가는 것을 의미합니다.

1

"할 일이 전혀 없다"는 뜻이라면 "예"입니다. "쉬운 기본 제공 방법이있다"는 뜻이라면 대답은 "아니오"입니다.

당신이 수행해야하는 것입니다 :

  1. 은 '반대'비디오로 전환하는 문자 순서를 결정 - 문자열의 문자를 저장하는 변수 brv (역상을 시작, 당신이 경우에 자신의 이름을 선택 내 맘에 안들어.)
  2. '정상'비디오로 전환되는 문자 시퀀스를 결정합니다. 문자를 문자열 변수 erv (끝 역방향 비디오)에 저장합니다. 당신의 인쇄가 사용하는
  3. 는 정렬 :

    PRINT COLUMN 1, first_lot_of_data, 
         COLUMN 37, brv, reverse_data, 
         COLUMN 52, erv, 
         COLUMN 56, next_lot_of_data 
    

아마 전환하기 위해 필요한 3 또는 4 자이있을 수 있습니다. 해당 문자는 보고서의 열 계산 코드에 의해 계산됩니다.

다른 단말기 유형은 서로 다른 시퀀스를 갖습니다. 요즘은 80 년대 중반에 만연한 실제 녹색 화면 터미널을 다루지 않을 가능성이 있으므로 brverv 문자열에 대한 결과를 하드 와이어 할 수 있습니다. OTOH, 당신은 런타임에 다른 단말기에 대한 올바른 순서를 찾기 위해 멋진 발놀림을해야 할 수도 있습니다. 더 자세한 정보가 필요하면 소리 치십시오.

MAIN 
    DISPLAY "HI" AT 1,1 
    DISPLAY "REVERSE" AT 1,4 ATTRIBUTE(REVERSE) 
    DISPLAY "LO" AT 1, 12 
    SLEEP 2 
END MAIN 
: - 당신이 관련 시퀀스를 발견 할 수 있습니다

간단한 방법은 (거기에 아마 구문 오류가 이것이 I4GL 컴파일러 근처에 어디하지 않았다) 같은 프로그램을 실행하는 것입니다

terminfo.4ge로 그를 컴파일하고 실행

./terminfo.4ge    # So you know what the screen looks like 
./terminfo.4ge > out.file 

디스플레이 속성을 사용하지 않을 가능성이있다. cat out.file을 실행하고 역광이 보이지 않는다면 더 열심히해야합니다.

termcap 파일이나 terminfo 항목의 터미널 항목을 볼 수도 있습니다. infocmp $TERM (환경 변수에 올바른 터미널 유형이 설정 됨)을 사용하고 smso (뛰어난 출력 모드로 들어가기) 및 rmso (뛰어난 출력 모드 종료) 기능을 찾으십시오. 암호 해독 (rmso=\E[27msmso=\E[7mxterm-256color 단말 용이고 \E은 ASCII ESC 또는 \033) brverv 문자열에 사용하십시오. rmso은 5 자입니다.

이전의 대답에 추가