home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS 1992 June / SIMTEL_0692.cdr / msdos / turbopas / tshell12.arc / EXAMPLE.PAS next >
Pascal/Delphi Source File  |  1987-05-05  |  2KB  |  112 lines

  1.  
  2. (*
  3.  * this program demonstrates and tests the facilities of TSHELL 1.0
  4.  *
  5.  *)
  6.  
  7. program tshell_tester;
  8.  
  9. {this statement will place a "signature" into the .com file where it can
  10.  be detected and used for configuration management}
  11.  
  12. const example_tag: string[90]
  13.    = #0'@(#)CURRENT_FILE LAST_UPDATE Example program 1.0'#0;
  14.  
  15. {this statement puts a message into the compilation logfile}
  16. #log Sample program, Main file (version 1.0)
  17.  
  18. {define some macros}
  19. #define WHOAMI test program 1
  20. #define DEBUG     {this macro will control generation of debug code}
  21. #define LEV2      {this macro will enable low level debug code}
  22.  
  23.  
  24. {define increment and decrement macros - these can be called with 1 actual
  25.  parameter, which will be substituted where %1 is used in the definition}
  26. #define INCR %1 := succ(%1)
  27. #define DECR %1 := pred(%1)
  28.  
  29. #define DISP writeln('%1=',%1)
  30.  
  31.  
  32. var
  33.    i:  integer;
  34.  
  35. begin
  36.  
  37. #pragma LIST
  38.    #define TWOLINES     \
  39.       writeln('line1'); \
  40.       writeln('line2')
  41.  
  42.    writeln('twoline test:');
  43.    {before;} TWOLINES; {after;}
  44.    writeln('end twoline test');
  45.    {nospace} DISP(i);
  46.    {space}   DISP (i);
  47.    {mspace}  DISP     ( i )  ;
  48. #pragma NOLIST
  49.  
  50.    i := 0;
  51.    while i < 5 do
  52.    begin
  53.       DISP(i);
  54.       INCR(i);
  55.    end;
  56.  
  57.  
  58. {test preprocessed source listing}
  59. #pragma LIST
  60.   {This will show during compilation}
  61.   writeln('whoami=WHOAMI');
  62. #pragma NOLIST
  63.  
  64.  
  65. {the following writeln should NOT be expanded}
  66. #pragma NOEXPAND
  67.   writeln('whoami=WHOAMI (shouldn''t say "test program 1")');
  68. #pragma EXPAND
  69.  
  70.  
  71. {test predefined symbols}
  72.   writeln('system_date=SYSTEM_DATE (date last compiled)');
  73.   writeln('last_update=LAST_UPDATE (date last updated)');
  74.   writeln('current_filename=CURRENT_FILE (source filename)');
  75.  
  76.  
  77. {test conditional compilation}
  78. #ifdef DEBUG
  79.    writeln('debug enabled');
  80.  
  81.    #ifdef LEV2
  82.       writeln('debug lev2');
  83.  
  84.       #ifdef LEV3
  85.          writeln('debug lev3');
  86.       #endif
  87.  
  88.    #else
  89.       writeln('debug not lev2');
  90.    #endif
  91.  
  92. #else
  93.    writeln('not debugging');
  94.  
  95.    #ifdef LEV2
  96.       writeln('not debug lev2');
  97.    #else
  98.       writeln('not debug not lev2');
  99.    #endif
  100. #endif
  101.  
  102.  
  103. {test the #undef command}
  104.  
  105. #define TEST1 Test-1
  106.    writeln('test1="TEST1" <-- should say Test-1');
  107.  
  108. #undef TEST1
  109.    writeln('test1="TEST1" <-- should say TEST1');
  110.  
  111. end.
  112.