Examples of Do

Example:

          GTM>DO ^%RD
        

This example invokes the routine directory utility program (%RD) from Direct Mode. The caret symbol (^) specifies that the DO command invokes %RD as an external routine.

Example:

          GTM>DO A(3)
        

This example invokes the subroutine at label A and passes the value 3 as a parameter. Because the DO argument does not have a caret symbol (^), it identifies A as a label in the current routine.

Example:

        Label A;
        SET di="" U outfile
        FOR SET di=$O(^div(di)) Q:di="" D PREP D D POST
        .SET de="",(nr,gr)=0
        .WRITE "Division ",di,! F S de=$O(^de(di,de)) Q:de="" D
        ..WRITE "Department ",de," Gross Rev: ",^grev(di,de),!
        ..WRITE "Department ",de," Net Rev: ",^nrev(di,de),!
        ..SET gr=gr+^grev(di,de),nr=nr+^nrev(di,de)
        .W "Division Gross Rev: ",gr,!,"Division Net Rev: ",nr,!
        DO PRINT^OUTPUT(outfile)
        QUIT
        

This routine first uses a DO with a label argument (PREP) to do some pre-processing. Then, it uses an argumentless DO to loop through each division of a company to format a report. Within the first argumentless DO, a second argumentless DO (line 4) loops through and formats each department within a division. After the processing of all departments, control returns to the first argumentless DO, which prints a summary of the division. Following processing of all divisions, a DO with a label argument (POST) does some post-processing. Finally, at the next-to-last line, the routine uses a DO that invokes a subroutine at a label (PRINT) in an external routine (^OUTPUT), passing the name of the output file (outfile) as a parameter.