REPORT ZZUTIL12 MESSAGE-ID Z1
NO STANDARD PAGE HEADING
LINE-COUNT 65
LINE-SIZE 80.
*---------------------------------------------------------------------*
* Topic: Browse file on Unix. *
* *
* Beskrivelse: Using internal System Call we gain access to UNIX. *
* The program uses the standard Unix command 'cat' to*
* browse the file *
* *
* The program lets you browse a file record of up to *
* 500 chars wide. *
* *
* Autorisation: None *
* *
* Customisering: None *
* *
* Parametre: Filename and path *
* *
* Releaseskifte: Check that you are allowed to use C-calls *
* *
* Release: 3.0F *
* *
* Programmør: John B. Lauridsen, DSB data. *
* *
*---------------------------------------------------------------------*
DATA: BEGIN OF TABL OCCURS 0,
LINE(560),
END OF TABL.
DATA: PARCOM_LOC(100) TYPE C.
DATA: COLOR TYPE I.
DATA: COUNT(16) TYPE C.
*-------------------------------------------------------------------*
* Parameters. *
*-------------------------------------------------------------------*
SELECTION-SCREEN SKIP 2.
PARAMETERS: PARCOM(45) TYPE C LOWER CASE.
*-------------------------------------------------------------------*
* Validering af parametre. *
*-------------------------------------------------------------------*
*-------------------------------------------------------------------*
* TOP-OF-PAGE. *
*-------------------------------------------------------------------*
TOP-OF-PAGE.
PERFORM WRITE_PAGE_HEADING.
*-------------------------------------------------------------------*
* INITIALIZATION. *
*-------------------------------------------------------------------*
INITIALIZATION.
PARCOM = '/usr/sap/trans/* '.
*-------------------------------------------------------------------*
* START-OF-SELECTION. *
*-------------------------------------------------------------------*
START-OF-SELECTION.
PERFORM MAKE_LOC.
PERFORM COLLECT_DATA.
PERFORM WRITE_FILE_CONTENT.
PERFORM WRITE_NUMBER_OF_CONTENT.
*---------------------------------------------------------------------*
* FORM MAKE_LOC. *
*---------------------------------------------------------------------*
FORM MAKE_LOC.
CLEAR: PARCOM_LOC.
PARCOM_LOC(4) = 'cat '.
PARCOM_LOC+4(45) = PARCOM.
ENDFORM.
*---------------------------------------------------------------------*
* FORM COLLECT_DATA. *
*---------------------------------------------------------------------*
FORM COLLECT_DATA.
REFRESH TABL.
CALL 'SYSTEM' ID 'COMMAND' FIELD PARCOM_LOC
ID 'TAB' FIELD TABL-*SYS*.
ENDFORM.
*-------------------------------------------------------------------*
* FORM WRITE_FILE_CONTENT. *
*-------------------------------------------------------------------*
FORM WRITE_FILE_CONTENT.
DATA: LÆNGDE LIKE SY-FDPOS.
LOOP AT TABL.
LÆNGDE = STRLEN( TABL-LINE ).
IF LÆNGDE GE 0.
PERFORM COLORLINE USING ' 0' TABL-LINE+0(69).
PERFORM STREGER_3.
ENDIF.
IF LÆNGDE GE 70.
PERFORM COLORLINE USING ' 70' TABL-LINE+69(70).
PERFORM STREGER_3.
ENDIF.
IF LÆNGDE GE 140.
PERFORM COLORLINE USING '140' TABL-LINE+139(70).
PERFORM STREGER_3.
ENDIF.
IF LÆNGDE GE 210.
PERFORM COLORLINE USING '210' TABL-LINE+209(70).
PERFORM STREGER_3.
ENDIF.
IF LÆNGDE GE 280.
PERFORM COLORLINE USING '280' TABL-LINE+279(70).
PERFORM STREGER_3.
ENDIF.
IF LÆNGDE GE 350.
PERFORM COLORLINE USING '350' TABL-LINE+349(70).
PERFORM STREGER_3.
ENDIF.
IF LÆNGDE GE 420.
PERFORM COLORLINE USING '420' TABL-LINE+419(70).
PERFORM STREGER_3.
ENDIF.
IF LÆNGDE GE 490.
PERFORM COLORLINE USING '490' TABL-LINE+489(70).
PERFORM STREGER_3.
ENDIF.
IF LÆNGDE GE 560.
PERFORM COLORLINE USING '560' TABL-LINE+559(70).
PERFORM STREGER_3.
ENDIF.
ENDLOOP.
WRITE:/1(80) SY-ULINE.
ENDFORM.
*-------------------------------------------------------------------*
* FORM WRITE_PAGE_HEADING. *
*-------------------------------------------------------------------*
FORM WRITE_PAGE_HEADING.
WRITE:/1(80) SY-ULINE.
PERFORM STREGER_2.
FORMAT INTENSIFIED.
WRITE: /2(79) SPACE COLOR 1.
WRITE: 2 SY-DATUM COLOR 1.
WRITE: 15 PARCOM(45) COLOR 1.
PERFORM STREGER_2.
WRITE:/1(80) SY-ULINE.
PERFORM STREGER_2.
FORMAT INTENSIFIED.
WRITE: /2(79) SPACE COLOR 3.
WRITE: 2 'Offset' COLOR 3,
10 '0....+....1....+....2....+....3....+....' COLOR 3,
50 '4....+....5....+....6....+....' COLOR 3.
PERFORM STREGER_3.
FORMAT RESET.
WRITE:/1(80) SY-ULINE.
ENDFORM.
*-------------------------------------------------------------------*
* FORM STREGER_2. *
*-------------------------------------------------------------------*
FORM STREGER_2.
PERFORM WRITE_VLINE USING ' ' 1.
PERFORM WRITE_VLINE USING ' ' 80.
ENDFORM.
*-------------------------------------------------------------------*
* FORM STREGER_3. *
*-------------------------------------------------------------------*
FORM STREGER_3.
PERFORM WRITE_VLINE USING ' ' 1.
PERFORM WRITE_VLINE USING ' ' 9.
PERFORM WRITE_VLINE USING ' ' 80.
ENDFORM.
*-------------------------------------------------------------------*
* WRITE_VLINE. *
*-------------------------------------------------------------------*
FORM WRITE_VLINE USING MODE POS.
IF MODE NE 'T'.
FORMAT INTENSIFIED.
ENDIF.
POSITION POS.
WRITE: SY-VLINE.
IF MODE NE 'T'.
FORMAT RESET.
ENDIF.
ENDFORM.
*-------------------------------------------------------------------*
* FORM COLORLINE. *
*-------------------------------------------------------------------*
FORM COLORLINE USING TEXT1 TEXT2.
ON CHANGE OF SY-TABIX.
COLOR = COLOR + 1.
COLOR = COLOR MOD 2.
ENDON.
FORMAT RESET.
IF COLOR = 1.
WRITE: /2(79) SPACE COLOR 2.
IF TEXT1 = ' 0'.
WRITE: 3 TEXT1 COLOR 2, 11 TEXT2 COLOR 2.
ELSE.
WRITE: 3 TEXT1 COLOR 2, 10 TEXT2 COLOR 2.
ENDIF.
ELSE.
WRITE: /2(79) SPACE COLOR 4.
IF TEXT1 = ' 0'.
WRITE: 3 TEXT1 COLOR 4, 11 TEXT2 COLOR 4.
ELSE.
WRITE: 3 TEXT1 COLOR 4, 10 TEXT2 COLOR 4.
ENDIF.
ENDIF.
ENDFORM.
*-------------------------------------------------------------------*
* FORM WRITE_NUMBER_OF_CONTENT. *
*-------------------------------------------------------------------*
FORM WRITE_NUMBER_OF_CONTENT.
DESCRIBE TABLE TABL LINES COUNT.
FORMAT RESET. CONDENSE COUNT.
RESERVE 3 LINES.
WRITE:/1(80) SY-ULINE.
WRITE: /2(79) SPACE COLOR 2.
WRITE: 2 'Number of records in file:' COLOR 2,
29 COUNT COLOR 2.
PERFORM STREGER_2.
WRITE:/1(80) SY-ULINE.
ENDFORM.