/************************************************************************ * case.com -everything you need for case/switch statements * ************************************************************************/ common /case/casesp,casel,namcas integer casesp #the case level stack pointer integer casel(2,MAXCASE) #the stack of case labels. character namcas(6) #the name for the stored case /************************************************************************ * How things work... * * * * casesp points into casel. This is an indication of the case * * level. When a nested case is encounterd casesp is changed. * * * * casel(1,casesp) has the value of the number of case labels * * encountered so far. casel(2,casesp) is the old value of * * casesp. * * * * Generally casel(1,*) contains the case value, while casel(2,*) * * contains the value of the label assigned to the case value * * * * |-------------|-------------| * * casel(*,1) | 0 | 0 | * * |-------------|-------------| * * casel(*,2)----> | 3 | 1 | * * |-------------|-------------| * * | case-value | label-value | * * |-------------|-------------| * * | case-value | label-value | * * |-------------|-------------| * * | case-value | label-value | * * |-------------|-------------| * * casesp--------> | 2 | 2 | * * |-------------|-------------| * * | case-value | label-value | * * |-------------|-------------| * * | case-value | label-value | * * |-------------|-------------| * * | random | random | * ************************************************************************/