Today, no business topic but it’s play time A couple of days ago, I stumbled upon the free book “10 PRINT CHR$(205.5+RND(1)); : GOTO 10“. No joke, that’s the title of the book. It’s about an one-line Commodore 64 BASIC program that prints a maze to the screen. Because I’m a big fan of Retrocomputing, I browsed the book a little bit.
Afterwards I asked myself what ABAP report I could write in one line of 40 characters with a nice output. The answer was sobering: Nothing interesting. Even with 80 characters I just printed vertical lines to the screen Here is my approach.
REPORT z.DO 10 TIMES.DO 80 TIMES.WRITE AT sy-index(1) '|'.ENDDO.NEW-LINE.ENDDO.
Finally I decided to give up the length restriction and wrote my own random maze generator as a homage to the original BASIC program. It uses the WRITE instruction and the characters “-” and “|” to build frames. You will find it on GitHub, too.
REPORT z_random_maze.
DATA: lr_random_int TYPE REF TO cl_abap_random_int,
lv_random_int TYPE i,
lv_position_x TYPE i,
lv_position_y TYPE i,
lv_maze_part TYPE char2.
lr_random_int = cl_abap_random_int=>create( seed = CONV i( sy-uzeit ) min = 1 max = 9 ).
DO 20 TIMES.
lv_position_y = sy-index.
lv_position_x = 1.
DO 30 TIMES.
CLEAR lv_maze_part.
IF lv_position_y = 20.
lv_maze_part = '--'.
ELSE.
lv_random_int = lr_random_int->get_next( ).
IF lv_random_int < 5.
lv_maze_part = '|'.
ELSEIF lv_random_int > 7.
lv_maze_part = '--'.
ENDIF.
ENDIF.
WRITE AT lv_position_x(2) lv_maze_part.
lv_position_x = lv_position_x + 2.
ENDDO.
NEW-LINE.
ENDDO.
Relax your eyes, try to find your way through the maze and have fun Here is a little example of the report output. And if you have a good idea for an interesting one-liner in ABAP, let me know.
Ekli dosyayı görüntüle 4209
Okumaya devam et...
Afterwards I asked myself what ABAP report I could write in one line of 40 characters with a nice output. The answer was sobering: Nothing interesting. Even with 80 characters I just printed vertical lines to the screen Here is my approach.
REPORT z.DO 10 TIMES.DO 80 TIMES.WRITE AT sy-index(1) '|'.ENDDO.NEW-LINE.ENDDO.
Finally I decided to give up the length restriction and wrote my own random maze generator as a homage to the original BASIC program. It uses the WRITE instruction and the characters “-” and “|” to build frames. You will find it on GitHub, too.
REPORT z_random_maze.
DATA: lr_random_int TYPE REF TO cl_abap_random_int,
lv_random_int TYPE i,
lv_position_x TYPE i,
lv_position_y TYPE i,
lv_maze_part TYPE char2.
lr_random_int = cl_abap_random_int=>create( seed = CONV i( sy-uzeit ) min = 1 max = 9 ).
DO 20 TIMES.
lv_position_y = sy-index.
lv_position_x = 1.
DO 30 TIMES.
CLEAR lv_maze_part.
IF lv_position_y = 20.
lv_maze_part = '--'.
ELSE.
lv_random_int = lr_random_int->get_next( ).
IF lv_random_int < 5.
lv_maze_part = '|'.
ELSEIF lv_random_int > 7.
lv_maze_part = '--'.
ENDIF.
ENDIF.
WRITE AT lv_position_x(2) lv_maze_part.
lv_position_x = lv_position_x + 2.
ENDDO.
NEW-LINE.
ENDDO.
Relax your eyes, try to find your way through the maze and have fun Here is a little example of the report output. And if you have a good idea for an interesting one-liner in ABAP, let me know.
Ekli dosyayı görüntüle 4209
Okumaya devam et...