Simple Example: Java
A more succinct Java migration of the simple MAPPER RUN does a bit of re-factoring to introduce a loop over a variable:
Java (Using Loop)
/** MJ organizes variables migrated from MAPPER in simple class. */
class Variables implements IMJVariableContainer {
MJNamedInteger bottles;
MJNamedString name;
}
MJVariableNamespace localNS = new MJVariableNamespace(VariableScope.LOCAL);
Variables var = new Variables();
// @ldv <bottles>i2=99,<name>a7=bottles .
var.bottles = new MJNamedInteger("bottles", VariableScope.LOCAL, 2,
EnumSet.noneOf(LoadOption.class), "99");
localNS.addVariable(var.bottles);
var.name = new MJNamedString("name", VariableScope.LOCAL, MaprptVariableType.ALPHANUMERIC, 7,
EnumSet.of(LoadOption.TRUNCATE), "bottles");
localNS.addVariable(var.name);
for (;var.bottles.GT(0);var.bottles.increment(-1)) {
// <bottles>(p) <name>(p) of beer on the wall, <bottles>(p) <name>(p) of beer,
out.format("%1$s %2$s of beer on the wall, %1$s %2$s of beer,<br>",
new MJFormatter(var.bottles.toMapperNumber().intValue()).pack().toFormatted(),
new MJFormatter(var.name.toString()).pack().toFormatted());
if (var.bottles.EQ(1))
var.name.setString("bottle");
// Take 1 down, pass it around, <bottles>(p) <name>(p) of beer on the wall.
out.format("Take 1 down, pass it around, %s %s of beer on the wall.<br>",
new MJFormatter(var.bottles.toMapperNumber().intValue()).pack().toFormatted(),
new MJFormatter(var.name.toString()).pack().toFormatted());
}
// Take 1 down, pass it around, no more bottles of beer on the wall.
out.println("Take 1 down, pass it around, no more bottles of beer on the wall.<br>");