// // $Id$ // // This files demonstrates the use of BEGIN/RECOVER/END SEQUENCE // and BREAK statement // MEMVAR oMemvar MEMVAR mPrivate PROCEDURE MAIN LOCAL oLocal PRIVATE mPrivate:='private value in MAIN' BEGIN SEQUENCE ? " Inside SEQUENCE 1" ? " No break issued...." RECOVER ? " Recovering in 1 ..." END SEQUENCE ? "After SEQUENCE 1" BEGIN SEQUENCE ? " Inside SEQUENCE 2" Break( "VALUE 2" ) RECOVER USING oLocal ? " Recovering in 2 using....", oLocal END SEQUENCE ? "After SEQUENCE 2" BEGIN SEQUENCE ? " Inside SEQUENCE 3" Break RECOVER USING oLocal ? " Recovering in 3 using....", oLocal END SEQUENCE ? "After SEQUENCE 3" BEGIN SEQUENCE ? " Inside SEQUENCE 4" Break ? " Recovering in 4 using....", oLocal END SEQUENCE ? "After SEQUENCE 4" BEGIN SEQUENCE ? " Inside SEQUENCE 5" Break1( ) ? " Recovering in 5 using....", oLocal END SEQUENCE ? "After SEQUENCE 5" BEGIN SEQUENCE ? " Inside SEQUENCE 6" Break1( ) RECOVER USING oMemvar ? " Recovering in 6 using... ", oMemvar END SEQUENCE ? "After SEQUENCE 6" BEGIN SEQUENCE ? " Inside SEQUENCE 7" Break2( ) RECOVER USING oMemvar ? " Recovering in 7 using... ", oMemvar END SEQUENCE ? "After SEQUENCE 7" ? M->mPrivate BREAK( "exit from MAIN" ) ? "This text will be not printed" RETURN PROCEDURE Break1() PRIVATE mPrivate:='VALUE from Break1' BREAK M->mPrivate RETURN PROCEDURE Break2() BEGIN SEQUENCE ? " Inside SEQUENCE 8" Break3( ) RECOVER USING oMemvar ? " Recovering in 8 using...", EVAL( oMemvar, ' eval in 8' ) BREAK( "BREAK from recovery code" ) END SEQUENCE ? "After SEQUENCE 8" RETURN PROCEDURE Break3() STATIC oStatic BEGIN SEQUENCE ? " Inside SEQUENCE 9" BEGIN SEQUENCE ? " Inside SEQUENCE 10" Break( "value from nested SEQUENCE 10" ) RECOVER USING oStatic ? " Recovering in 10 using...", oStatic END SEQUENCE ? "After SEQUENCE 10" Break4( " and parameter" ) RECOVER USING oMemvar ? " Recovering in 9 using...", EVAL( oMemvar, ' eval in 9' ) BREAK( oMemvar ) END SEQUENCE ? "After SEQUENCE 9" RETURN PROCEDURE Break4( cValue ) LOCAL oLocal:=' detached Break4 ' BREAK( {|x| oLocal + x + cValue} ) RETURN