1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package net.sf.zel.instr.var;
20
21 import net.sf.zel.instr.*;
22 import net.sf.zel.nr.OperableNumber;
23 import net.sf.zel.vm.*;
24
25
26
27 public class MAX extends Instruction
28 {
29 private static final long serialVersionUID = -7339415434652687086L;
30
31 private MAX(){};
32
33 public final void execute(ExecutionContext context) throws ZExecutionException
34 {
35 Object param = null;
36 OperableNumber max = ((OperableNumber) context.popSyncStackVal());
37 while (((param = context.popSyncStackVal()) != EndParamMarker.instance))
38 {
39 if ( max.compareTo(param) <0)
40 {
41 max = ((OperableNumber) param);
42 }
43 }
44 context.stack.push(max);
45 context.ip++;
46 }
47
48
49
50 public static final Instruction instance = new MAX();
51
52
53 }