Macros flow control


There are several constructs available for controlling the flow execution, which include conditional statement blocks, several looping constructs and variable assignation. Some example are given in this tutorial. For a complete description, see the section Macros the chapter The KUIP interface in the PAW reference manual.
     Statement                      |     Description

 MACRO mname par1=val1 ...          | begin macro  mname
 EXEC mname par1 par2=val2 ...      | execute macro  mname
 RETURN                             | end of a macro
 READ par                           | read macro parameter  par  from keyboard
 SHIFT                              | control parameters list
 label:                             | label (must terminate with a colon)
 GOTO label                         | jump to  label
 ON ERROR GOTO label                | resume at  label  on error condition
 OF ERROR                           | temporarily deactivate the  ON ERROR GOTO  handling
 ON ERROR                           | reactivate the latest  ON ERROR GOTO  handling
 IF logical_expression GOTO label   | conditional statement
 IF-THEN, ELSEIF, ELSE, ENDIF       | Macro flow control
 CASE, ENDCASE                      | Macro flow control
 WHILE-DO, ENDWHILE                 | Macro flow control
 REPEAT, UNTIL                      | Macro flow control
 DO, ENDDO                          | Macro flow control
 FOR, ENDFOR                        | Macro flow control
 BREAKL                             | Macro flow control
 EXITM                              | Macro termination
 par = arithmetic_expression        | assignment statement

Conditional statement

MACRO PAWEX06A PAW > exe pawex06a A = 10 Sum of 10 and 1.5 is 11.5 NN = 1.5 KUIP arithmetic is correct. TOT = [A]+[NN] IF [TOT] > 11 THEN MESSAGE Sum of [A] and [NN] is [TOT] AOK = correct ELSE AOK = wrong ENDIF MESSAGE KUIP arithmetic is [AOK]. RETURN

Unassigned variables cannot be substituted by their values.

MACRO PAWEX06B PAW > exe pawex06b A = 10 Result of sum is 10+[XX] NN = 1.5 TOT = [A]+[XX] MESSAGE Result of sum is [TOT] RETURN

Example for CASE labels with wildcards

MACRO PAWEX06C PAW > exe pawex06c paw.tex CASE [1] IN paw.tex is a LaTex file. (*.f, *.for) TYPE = FORTRAN (*.c) TYPE = C (*.p) TYPE = PASCAL (*.tex) TYPE = LaTex (*) TYPE = UNKNOWN ENDCASE MESSAGE [1] is a [TYPE] file. RETURN

PAW TutorialLast update: 1999/04/01 14.57
Olivier.Couet@Cern.Ch