expression: opcode,op1,rel,op2 opcode,op1,rel,op2,OR,opcode,op1,rel,op2 opcode,op1,rel,op2,AND,opcode,op1,rel,op2 opcode::=C,CH,CR,CLC,CLI,CLCL, LTR, CP,CE,CD,... rel::=EQ,NE,LT,LE,GT,GE, (fortran style) E,L,H,NE,NL,NH (assembler style) P (plus), M (minus) ,Z (zero) ,O (overflow) opcode::=CLM,TM rel::=O (ones),M (mixed) ,Z (zeros) * IF IF expression [THEN] ... ELSEIF expression [THEN] ... ELSE ... ENDIF IF C,R4,EQ,=F'10' THEN if r4=10 then MVI PG,C'A' pg='A' ELSEIF C,R4,EQ,=F'11' THEN elseif r4=11 then MVI PG,C'B' pg='B' ELSEIF C,R4,EQ,=F'12' THEN elseif r4=12 then MVI PG,C'C' pg='C' ELSE else MV PG,C'?' pg='?' ENDIF end if * SELECT SELECT expressionpart1 WHEN expressionpart2a ... WHEN expressionpart2b ... OTHRWISE ... ENDSEL * example SELECT type 1 SELECT CLI,HEXAFLAG,EQ select hexaflag= WHEN X'20' when x'20' MVI PG,C'<' pg='<' WHEN X'21' when x'21' MVI PG,C'!' pg='!' WHEN X'22' when x'21' MVI PG,C'>' pg='>' OTHRWISE otherwise MVI PG,C'?' pg='?' ENDSEL end select * example SELECT type 2 SELECT select WHEN C,DELTA,LT,0 when delta<0 MVC PG,=C'0 SOL' pg='0 SOL' WHEN C,DELTA,EQ,0 when delta=0 MVC PG,=C'1 SOL'' pg='0 SOL' WHEN C,DELTA,GT,0 when delta>0 MVC PG,=C'2 SOL'' pg='0 SOL' ENDSEL end select * CASE CASENTRY R4 select case r4 CASE 1 case 1 LA R5,1 r5=1 CASE 3 case 3 LA R5,2 r5=2 CASE 5 case 5 LA R5,3 r5=1 CASE 7 case 7 LA R5,4 r5=4 ENDCASE end select