Checking Syntax a program at runtime

Check out this test code to check syntactical errors in a code through a program. My test code will work only in unicode systems, as I have checked an unicode error.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
*&---------------------------------------------------------------------*
*& Report Z_TEST_SYNTAX_CHECK
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT z_test_syntax_check.
DATA: itab1 TYPE STANDARD TABLE OF string,
itab2 TYPE STANDARD TABLE OF string,
mess TYPE string,
lin TYPE i,
wrd TYPE string,
dir TYPE trdir.
**********************************************************************
APPEND 'PROGRAM test.' TO itab1.
APPEND 'DATA dat TYPE d.' TO itab1.
APPEND 'DATA len TYPE c.' TO itab1.
APPEND 'DESCRIBE FIELD dat LENGTH len.' TO itab1.

SELECT SINGLE *
FROM trdir
INTO dir
WHERE name = sy-repid.

SYNTAX-CHECK FOR itab1 MESSAGE mess
LINE lin WORD wrd
DIRECTORY ENTRY dir.

IF sy-subrc = 4.
WRITE: /1 'Error in first program:' , mess.
ELSE.
WRITE: /1 'No error in first program'.
ENDIF.
**********************************************************************
APPEND 'PROGRAM test.' TO itab2.
APPEND 'DATA dat TYPE d.' TO itab2.
APPEND 'DATA len TYPE i.' TO itab2.
APPEND 'DESCRIBE FIELD dat LENGTH len IN byte MODE.' TO itab2.

SYNTAX-CHECK FOR itab2 MESSAGE mess
LINE lin WORD wrd
DIRECTORY ENTRY dir.

IF sy-subrc = 4.
WRITE : /1 'Error in second program:' , mess.
ELSE.
WRITE: /1 'No error in second program'.
ENDIF.

No comments:

Post a Comment