@ECHO OFF REM ------------------------------------------------------------------ REM REM *** sample code to show how to use subroutines in OS/2 batch files REM REM ------------------------------------------------------------------ REM *** set a sample environment variable REM SET myEnvVar=1 REM ------------------------------------------------------------------ ECHO. [MAIN] The value of the environment variable "MyEnvVar" is %MyEnvVar% ECHO. [MAIN] Now MAIN calls "subroutine" SUB1 ... REM *** save the return address in an environment variable and call REM the "subroutine" REM SET retAddr1=RET001 GOTO SUB1 REM *** SUB1 jumps to this label to return to the caller :RET001 REM ------------------------------------------------------------------ ECHO. [MAIN] The value of the environment variable "MyEnvVar" is %MyEnvVar% ECHO. [MAIN] Now MAIN calls "subroutine" SUB2 ... REM *** save the return address in an environment variable and call REM the "subroutine" REM SET retAddr2=RET002 GOTO SUB2 REM *** SUB2 jumps to this label to return to the caller :RET002 ECHO. [MAIN] The value of the environment variable "MyEnvVar" is %MyEnvVar% REM ------------------------------------------------------------------ REM *** do something ... PAUSE REM *** set a sample environment variable REM SET myEnvVar=2 REM ------------------------------------------------------------------ ECHO. [MAIN] Now MAIN calls "subroutine" SUB1 ... ECHO. [MAIN] The value of the environment variable "MyEnvVar" is %MyEnvVar% REM *** save the return address in an environment variable and call REM the "subroutine" REM SET retAddr1=RET003 GOTO SUB1 REM *** SUB1 jumps to this label to return to the caller :RET003 REM ------------------------------------------------------------------ ECHO. [MAIN] The value of the environment variable "MyEnvVar" is %MyEnvVar% ECHO. [MAIN] Now MAIN calls "subroutine" SUB2 ... REM *** save the return address in an environment variable and call REM the "subroutine" REM SET retAddr2=RET004 GOTO SUB2 REM *** SUB2 jumps to this label to return to the caller :RET004 ECHO. [MAIN] The value of the environment variable "MyEnvVar" is %MyEnvVar% REM ------------------------------------------------------------------ REM *** house keeping REM SET retAddr1= SET retAddr2= SET myEnvVar= REM *** and end the program GOTO End REM ------------------------------------------------------------------ REM *** This is the "subroutine" SUB1 REM SUB1 has a local variable scope REM :SUB1 SETLOCAL ECHO. [SUB1] *** This is SUB1 (local variable scope) ECHO. [SUB1] The value of the environment variable "MyEnvVar" is %MyEnvVar% ECHO. [SUB1] Setting the variable "myEnvVar" to 11 SET myEnvVar=11 ECHO. [SUB1] The value of the environment variable "MyEnvVar" is %MyEnvVar% ECHO. [SUB1] Now SUB1 calls "subroutine" SUB2 ... SET retAddr2=SUB2_1 GOTO SUB2 REM *** SUB2 jumps to this label to return to the caller :SUB2_1 ECHO. [SUB1] The value of the environment variable "MyEnvVar" is %MyEnvVar% ECHO. ECHO. [SUB1] Now I am returning control back to the label %retAddr1% ENDLOCAL GOTO %retAddr1% REM ------------------------------------------------------------------ REM *** This is the "subroutine" SUB2 REM SUB2 has a global variable scope REM :SUB2 ECHO. [SUB2] *** This is SUB2 (global variable scope) ECHO. [SUB2] The value of the environment variable "MyEnvVar" is %MyEnvVar% ECHO. [SUB2] Setting the variable "myEnvVar" to 22 SET myEnvVar=22 ECHO. [SUB2] Now I am returning control back to the label %retAddr2% GOTO %retAddr2% REM ------------------------------------------------------------------ REM *** label marking the program end REM :END