Case {Begin|Break|Else|End}
#IFSAME !1 BEGIN // ---CASE BEGIN--- #IFIND // this handles flex bug/feature that [] Begin // single commands in macros lose their indicators. #ELSE // If an indicator force them to be kept Begin #ENDIF Case$Begin$!r: #ELSE #POP S$ #PUSH !s #IFSAME !1 BREAK // ---CASE BREAK--- Case$Break !1 !2 #ELSE #CHECK Case$Begin$!s _RSNDIE#OBU #IFSAME !1 END // ---CASE END--- #CHECK Case$If$!s _RSNDIE#OBU #SET N$ !n-1 #IFDEF Case$Else$!s #ELSE #XPOP !n S$ // Get goto line number from last IF. #FREF (!a+1) !s // Modify goto line number as next command #ENDIF End #ELSE #CHECK Case$Else$!s _T #IFSAME !1 ELSE // ---CASE ELSE--- #CHECK Case$If$!s _RSNDIE#OBU Case$Else$!s: #SET N$ !n-1 #IF (!0>1) !1 !2 !3 !4 !5 !6 !7 !8 !9 #ELSE #XPOP !n S$ //--- else w/ 0 args #FREF (!a+1) !s #ENDIF #SET N$ !N #ELSE // ---CASE <test>--- #IFDEF Case$If$!s #SET N$ !n-1 Else If !1 !2 !3 !4 !5 !6 !7 !8 !9 #SET N$ !N #ELSE Case$If$!s: If !1 !2 !3 !4 !5 !6 !7 !8 !9 #SET N$ !N #XPUSH !n $INIT // Init IF/ELSE stack at this nesting level. #ENDIF #ENDIF #ENDIF #ENDIF #ENDIF