---
date_published: 2026-05-13
date_modified: 2026-05-13
canonical_url: https://jawk.io/cpd.html
---

# CPD Results

The following document contains the results of PMD's [CPD](https://pmd.github.io/latest/pmd_userdocs_cpd.html)[1] 7.7.0.

## [Duplications](#duplications)

| File | Line |
| --- | --- |
| io/jawk/jrt/HashAssocArray.java | [48](./xref/io/jawk/jrt/HashAssocArray.html#L48)[2] |
| io/jawk/jrt/SortedAssocArray.java | [71](./xref/io/jawk/jrt/SortedAssocArray.html#L71)[3] |
| ``` @Override public Object get(Object key) { key = AssocArray.normalizeKey(key); Object result = super.get(key); if (result != null) { return result; } Long lKey = AssocArray.toLongKey(key); if (lKey != null) { result = super.get(lKey); if (result != null) { return result; } key = lKey; } result = BLANK; super.put(key, result); return result; } /** * Associates the specified value with the specified key, normalizing the key * to a {@code Long} when the key is a valid integer string. * * @param key the key * @param value the value * @return the previous value associated with the key, or {@code null} */ @Override public Object put(Object key, Object value) { key = AssocArray.normalizeKey(key); Long lKey = AssocArray.toLongKey(key); return super.put(lKey != null ? lKey : key, value); } /** * Removes the mapping for the specified key, trying both the original and its * {@code Long} equivalent. * * @param key the key whose mapping is to be removed * @return the previous value associated with the key, or {@code null} */ @Override public Object remove(Object key) { key = AssocArray.normalizeKey(key); Object result = super.remove(key); if (result != null) { return result; } Long lKey = AssocArray.toLongKey(key); return lKey != null ? super.remove(lKey) : null; } /** * Returns the specification version of the underlying {@link HashMap} class. * * @return the specification version string, or {@code null} if unavailable */ @Override public String getMapVersion() { return HashMap.class.getPackage().getSpecificationVersion(); ``` |

| File | Line |
| --- | --- |
| io/jawk/SandboxedAwk.java | [115](./xref/io/jawk/SandboxedAwk.html#L115)[4] |
| io/jawk/SandboxedAwk.java | [175](./xref/io/jawk/SandboxedAwk.html#L175)[5] |
| ``` final class SandboxedCompiledAwkProgram extends AwkProgram { private static final long serialVersionUID = 1L; @Override public void printToFile(int numExprs, boolean append) { deny("Output redirection is disabled in sandbox mode"); } @Override public void printToPipe(int numExprs) { deny("Command execution through pipelines is disabled in sandbox mode"); } @Override public void printfToFile(int numExprs, boolean append) { deny("Output redirection is disabled in sandbox mode"); } @Override public void printfToPipe(int numExprs) { deny("Command execution through pipelines is disabled in sandbox mode"); } @Override public void system() { deny("system() is disabled in sandbox mode"); } @Override public void useAsCommandInput() { deny("Command execution through pipelines is disabled in sandbox mode"); } @Override public void useAsFileInput() { deny("Input redirection is disabled in sandbox mode"); } @Override public void assignARGC() { deny("Assigning to ARGC is disabled in sandbox mode"); } @Override public void argcOffset(int offset) { // no-op: keep argcOffset at NULL_OFFSET; AVM.getARGC() returns the // command-line argument count when ARGC is not materialized. } @Override public void argvOffset(int offset) { // no-op: keep argvOffset at NULL_OFFSET; AVM.getARGV() returns a // synthetic AssocArray when ARGV is not materialized. } private static void deny(String message) { throw new AwkSandboxException(message); } } ``` |

| File | Line |
| --- | --- |
| io/jawk/intermediate/AwkTuples.java | [2308](./xref/io/jawk/intermediate/AwkTuples.html#L2308)[6] |
| io/jawk/intermediate/AwkTuples.java | [2344](./xref/io/jawk/intermediate/AwkTuples.html#L2344)[7] |
| ``` } while (!worklist.isEmpty()) { int index = worklist.removeFirst(); Tuple tuple = queue.get(index); if (fallsThrough(tuple.getOpcode())) { Tuple nextTuple = tuple.getNext(); if (nextTuple != null) { int nextIndex = index + 1; if (!reachable[nextIndex]) { reachable[nextIndex] = true; worklist.addLast(nextIndex); } } } Address address = tuple.getAddress(); if (address != null) { int targetIndex = address.index(); if (targetIndex < 0 || targetIndex >= size) { throw new Error("address " + address + " doesn't resolve to an actual list element"); } referencesFromReachable[targetIndex]++; if (!reachable[targetIndex]) { reachable[targetIndex] = true; worklist.addLast(targetIndex); } } } ``` |

| File | Line |
| --- | --- |
| io/jawk/frontend/AwkParser.java | [3357](./xref/io/jawk/frontend/AwkParser.html#L3357)[8] |
| io/jawk/frontend/AwkParser.java | [4359](./xref/io/jawk/frontend/AwkParser.html#L4359)[9] |
| ``` private void pushSpecialThenSwap(AwkTuples tuples, String id) { switch (id) { case "NF": tuples.pushNF(); break; case "NR": tuples.pushNR(); break; case "FNR": tuples.pushFNR(); break; case "FS": tuples.pushFS(); break; case "RS": tuples.pushRS(); break; case "OFS": tuples.pushOFS(); break; case "ORS": tuples.pushORS(); break; case "RSTART": tuples.pushRSTART(); break; case "RLENGTH": tuples.pushRLENGTH(); break; case "FILENAME": tuples.pushFILENAME(); break; case "SUBSEP": tuples.pushSUBSEP(); break; case "CONVFMT": tuples.pushCONVFMT(); break; case "OFMT": tuples.pushOFMT(); break; case "ARGC": tuples.pushARGC(); break; default: throw new Error("Unhandled special var: " + id); } ``` |

| File | Line |
| --- | --- |
| io/jawk/SandboxedAwk.java | [118](./xref/io/jawk/SandboxedAwk.html#L118)[10] |
| io/jawk/intermediate/SandboxedAwkTuples.java | [39](./xref/io/jawk/intermediate/SandboxedAwkTuples.html#L39)[11] |
| ``` @Override public void printToFile(int numExprs, boolean append) { deny("Output redirection is disabled in sandbox mode"); } @Override public void printToPipe(int numExprs) { deny("Command execution through pipelines is disabled in sandbox mode"); } @Override public void printfToFile(int numExprs, boolean append) { deny("Output redirection is disabled in sandbox mode"); } @Override public void printfToPipe(int numExprs) { deny("Command execution through pipelines is disabled in sandbox mode"); } @Override public void system() { deny("system() is disabled in sandbox mode"); } @Override public void useAsCommandInput() { deny("Command execution through pipelines is disabled in sandbox mode"); } @Override public void useAsFileInput() { deny("Input redirection is disabled in sandbox mode"); } @Override public void assignARGC() { deny("Assigning to ARGC is disabled in sandbox mode"); } @Override public void argcOffset(int offset) { // no-op: keep argcOffset at NULL_OFFSET; AVM.getARGC() returns the // command-line argument count when ARGC is not materialized. } @Override public void argvOffset(int offset) { // no-op: keep argvOffset at NULL_OFFSET; AVM.getARGV() returns a // synthetic AssocArray when ARGV is not materialized. } ``` |

| File | Line |
| --- | --- |
| io/jawk/SandboxedAwk.java | [178](./xref/io/jawk/SandboxedAwk.html#L178)[12] |
| io/jawk/intermediate/SandboxedAwkTuples.java | [39](./xref/io/jawk/intermediate/SandboxedAwkTuples.html#L39)[11] |
| ``` @Override public void printToFile(int numExprs, boolean append) { deny("Output redirection is disabled in sandbox mode"); } @Override public void printToPipe(int numExprs) { deny("Command execution through pipelines is disabled in sandbox mode"); } @Override public void printfToFile(int numExprs, boolean append) { deny("Output redirection is disabled in sandbox mode"); } @Override public void printfToPipe(int numExprs) { deny("Command execution through pipelines is disabled in sandbox mode"); } @Override public void system() { deny("system() is disabled in sandbox mode"); } @Override public void useAsCommandInput() { deny("Command execution through pipelines is disabled in sandbox mode"); } @Override public void useAsFileInput() { deny("Input redirection is disabled in sandbox mode"); } @Override public void assignARGC() { deny("Assigning to ARGC is disabled in sandbox mode"); } @Override public void argcOffset(int offset) { // no-op: keep argcOffset at NULL_OFFSET; AVM.getARGC() returns the // command-line argument count when ARGC is not materialized. } @Override public void argvOffset(int offset) { // no-op: keep argvOffset at NULL_OFFSET; AVM.getARGV() returns a // synthetic AssocArray when ARGV is not materialized. } ``` |

| File | Line |
| --- | --- |
| io/jawk/frontend/AwkParser.java | [1931](./xref/io/jawk/frontend/AwkParser.html#L1931)[13] |
| io/jawk/frontend/AwkParser.java | [1957](./xref/io/jawk/frontend/AwkParser.html#L1957)[14] |
| ``` expectKeyword("print"); ParsedPrintStatement parsedPrintStatement = parsePrintStatement(); AST params = parsedPrintStatement.getFuncParams(); if (parsedPrintStatement.isParenthesized() && token == Token.QUESTION_MARK && params instanceof FunctionCallParamListAst && ((FunctionCallParamListAst) params).getAst2() == null) { AST condExpr = ((FunctionCallParamListAst) params).getAst1(); lexer(); AST trueBlock = TERNARY_EXPRESSION(null, true, true, true); lexer(Token.COLON); AST falseBlock = TERNARY_EXPRESSION(null, true, true, true); params = new FunctionCallParamListAst( new TernaryExpressionAst(condExpr, trueBlock, falseBlock), null); } return new PrintAst( ``` |

| File | Line |
| --- | --- |
| io/jawk/Awk.java | [1023](./xref/io/jawk/Awk.html#L1023)[15] |
| io/jawk/backend/AVM.java | [3408](./xref/io/jawk/backend/AVM.html#L3408)[16] |
| ``` } private static final class SingleRecordInputSource implements InputSource { private final String record; private boolean consumed; private SingleRecordInputSource(String record) { this.record = record; } @Override public boolean nextRecord() { if (consumed || record == null) { return false; } consumed = true; return true; } @Override public String getRecordText() { return consumed ? record : null; } @Override public List<String> getFields() { return null; } @Override public boolean isFromFilenameList() { return false; } } ``` |

| File | Line |
| --- | --- |
| io/jawk/frontend/AwkParser.java | [4668](./xref/io/jawk/frontend/AwkParser.html#L4668)[17] |
| io/jawk/frontend/AwkParser.java | [4773](./xref/io/jawk/frontend/AwkParser.html#L4773)[18] |
| ``` tuples.inc(idAst.offset, idAst.isGlobal); } else if (getAst1() instanceof ArrayReferenceAst) { ArrayReferenceAst arrAst = (ArrayReferenceAst) getAst1(); if (arrAst.getAst1() instanceof IDAst) { IDAst idAst = (IDAst) arrAst.getAst1(); if (idAst.isScalar()) { throw new SemanticException("Cannot use " + idAst + " as an array."); } idAst.setArray(true); } arrAst.populateTargetReferenceTuples(tuples); tuples.incMapRef(); } else if (getAst1() instanceof DollarExpressionAst) { ``` |

| File | Line |
| --- | --- |
| io/jawk/frontend/AwkParser.java | [4668](./xref/io/jawk/frontend/AwkParser.html#L4668)[17] |
| io/jawk/frontend/AwkParser.java | [4716](./xref/io/jawk/frontend/AwkParser.html#L4716)[19] |
| io/jawk/frontend/AwkParser.java | [4773](./xref/io/jawk/frontend/AwkParser.html#L4773)[18] |
| io/jawk/frontend/AwkParser.java | [4811](./xref/io/jawk/frontend/AwkParser.html#L4811)[20] |
| ``` tuples.inc(idAst.offset, idAst.isGlobal); } else if (getAst1() instanceof ArrayReferenceAst) { ArrayReferenceAst arrAst = (ArrayReferenceAst) getAst1(); if (arrAst.getAst1() instanceof IDAst) { IDAst idAst = (IDAst) arrAst.getAst1(); if (idAst.isScalar()) { throw new SemanticException("Cannot use " + idAst + " as an array."); } idAst.setArray(true); } arrAst.populateTargetReferenceTuples(tuples); tuples.incMapRef(); ``` |

| File | Line |
| --- | --- |
| io/jawk/frontend/AwkParser.java | [3212](./xref/io/jawk/frontend/AwkParser.html#L3212)[21] |
| io/jawk/frontend/AwkParser.java | [3487](./xref/io/jawk/frontend/AwkParser.html#L3487)[22] |
| io/jawk/frontend/AwkParser.java | [3543](./xref/io/jawk/frontend/AwkParser.html#L3543)[23] |
| io/jawk/frontend/AwkParser.java | [3586](./xref/io/jawk/frontend/AwkParser.html#L3586)[24] |
| ``` private AssignmentExpressionAst(AST lhs, Token op, String text, AST rhs) { super(lhs, rhs); this.op = op; this.text = text; } @Override public String toString() { return super.toString() + " (" + op + "/" + text + ")"; } @Override public int populateTuples(AwkTuples tuples) { pushSourceLineNumber(tuples); ``` |

| File | Line |
| --- | --- |
| io/jawk/backend/AVM.java | [1526](./xref/io/jawk/backend/AVM.html#L1526)[25] |
| io/jawk/backend/AVM.java | [1561](./xref/io/jawk/backend/AVM.html#L1561)[26] |
| ``` checkScalar(key); Object o = aa.get(key); double ans = JRT.toDouble(o) + 1; if (JRT.isActuallyLong(ans)) { aa.put(key, (long) Math.rint(ans)); } else { aa.put(key, ans); } position.next(); break; } case DEC_ARRAY_REF: { ``` |

| File | Line |
| --- | --- |
| io/jawk/backend/AVM.java | [1545](./xref/io/jawk/backend/AVM.html#L1545)[27] |
| io/jawk/backend/AVM.java | [1577](./xref/io/jawk/backend/AVM.html#L1577)[28] |
| ``` checkScalar(key); Object o = aa.get(key); double ans = JRT.toDouble(o) - 1; if (JRT.isActuallyLong(ans)) { aa.put(key, (long) Math.rint(ans)); } else { aa.put(key, ans); } position.next(); break; } case INC_MAP_REF: { ``` |

| File | Line |
| --- | --- |
| io/jawk/frontend/AwkParser.java | [2982](./xref/io/jawk/frontend/AwkParser.html#L2982)[29] |
| io/jawk/frontend/AwkParser.java | [3034](./xref/io/jawk/frontend/AwkParser.html#L3034)[30] |
| ``` super(block, expr); addFlag(AstFlag.BREAKABLE); addFlag(AstFlag.CONTINUEABLE); } @Override public Address breakAddress() { return breakAddress; } @Override public Address continueAddress() { return continueAddress; } @Override public int populateTuples(AwkTuples tuples) { pushSourceLineNumber(tuples); breakAddress = tuples.createAddress("breakAddress"); continueAddress = tuples.createAddress("continueAddress"); ``` |

| File | Line |
| --- | --- |
| io/jawk/backend/AVM.java | [1518](./xref/io/jawk/backend/AVM.html#L1518)[31] |
| io/jawk/backend/AVM.java | [1537](./xref/io/jawk/backend/AVM.html#L1537)[32] |
| ``` case INC_ARRAY_REF: { // arg[0] = offset // arg[1] = isGlobal // stack[0] = array index VariableTuple variableTuple = (VariableTuple) tuple; boolean isGlobal = variableTuple.isGlobal(); Map<Object, Object> aa = ensureMapVariable(variableTuple.getVariableOffset(), isGlobal); Object key = pop(); checkScalar(key); Object o = aa.get(key); double ans = JRT.toDouble(o) + 1; ``` |

| File | Line |
| --- | --- |
| io/jawk/frontend/AwkParser.java | [2931](./xref/io/jawk/frontend/AwkParser.html#L2931)[33] |
| io/jawk/frontend/AwkParser.java | [3034](./xref/io/jawk/frontend/AwkParser.html#L3034)[30] |
| io/jawk/frontend/AwkParser.java | [3105](./xref/io/jawk/frontend/AwkParser.html#L3105)[34] |
| ``` super(expr, block); addFlag(AstFlag.BREAKABLE); addFlag(AstFlag.CONTINUEABLE); } @Override public Address breakAddress() { return breakAddress; } @Override public Address continueAddress() { return continueAddress; } @Override public int populateTuples(AwkTuples tuples) { pushSourceLineNumber(tuples); breakAddress = tuples.createAddress("breakAddress"); ``` |

| File | Line |
| --- | --- |
| io/jawk/frontend/AwkParser.java | [4510](./xref/io/jawk/frontend/AwkParser.html#L4510)[35] |
| io/jawk/frontend/AwkParser.java | [4542](./xref/io/jawk/frontend/AwkParser.html#L4542)[36] |
| io/jawk/frontend/AwkParser.java | [4569](./xref/io/jawk/frontend/AwkParser.html#L4569)[37] |
| ``` addFlag(AstFlag.NON_STATEMENT); } @Override public String toString() { return super.toString() + " (" + value + ")"; } @Override public int populateTuples(AwkTuples tuples) { pushSourceLineNumber(tuples); tuples.push(value); popSourceLineNumber(tuples); return 1; } } /** * Can either assume the role of a double or an integer * by aggressively normalizing the value to an int if possible. */ private final class DoubleAst extends ScalarExpressionAst { ``` |

| File | Line |
| --- | --- |
| io/jawk/frontend/AwkParser.java | [4765](./xref/io/jawk/frontend/AwkParser.html#L4765)[38] |
| io/jawk/frontend/AwkParser.java | [4803](./xref/io/jawk/frontend/AwkParser.html#L4803)[39] |
| ``` if (getAst1() instanceof ArrayReferenceAst) { ((ArrayReferenceAst) getAst1()).populateTargetValueTuples(tuples); tuples.unaryPlus(); } else { getAst1().populateTuples(tuples); } if (getAst1() instanceof IDAst) { IDAst idAst = (IDAst) getAst1(); tuples.postInc(idAst.offset, idAst.isGlobal); ``` |

| File | Line |
| --- | --- |
| io/jawk/backend/AVM.java | [2009](./xref/io/jawk/backend/AVM.html#L2009)[40] |
| io/jawk/backend/AVM.java | [2026](./xref/io/jawk/backend/AVM.html#L2026)[41] |
| ``` case IS_EMPTY_KEYLIST: { // arg[0] = address // stack[0] = Deque Object o = pop(); if (o == null || !(o instanceof Deque)) { throw new AwkRuntimeException( position.lineNumber(), "Cannot get a key list (via 'in') of a non associative array. arg = " + o.getClass() + ", " + o); } Deque<?> keylist = (Deque<?>) o; ``` |

| File | Line |
| --- | --- |
| io/jawk/frontend/AwkParser.java | [2931](./xref/io/jawk/frontend/AwkParser.html#L2931)[33] |
| io/jawk/frontend/AwkParser.java | [2982](./xref/io/jawk/frontend/AwkParser.html#L2982)[29] |
| io/jawk/frontend/AwkParser.java | [3105](./xref/io/jawk/frontend/AwkParser.html#L3105)[34] |
| ``` super(expr, block); addFlag(AstFlag.BREAKABLE); addFlag(AstFlag.CONTINUEABLE); } @Override public Address breakAddress() { return breakAddress; } @Override public Address continueAddress() { return continueAddress; } @Override public int populateTuples(AwkTuples tuples) { pushSourceLineNumber(tuples); breakAddress = tuples.createAddress("breakAddress"); ``` |

| File | Line |
| --- | --- |
| io/jawk/frontend/AwkParser.java | [4154](./xref/io/jawk/frontend/AwkParser.html#L4154)[42] |
| io/jawk/frontend/AwkParser.java | [4671](./xref/io/jawk/frontend/AwkParser.html#L4671)[43] |
| io/jawk/frontend/AwkParser.java | [4719](./xref/io/jawk/frontend/AwkParser.html#L4719)[44] |
| io/jawk/frontend/AwkParser.java | [4776](./xref/io/jawk/frontend/AwkParser.html#L4776)[45] |
| io/jawk/frontend/AwkParser.java | [4814](./xref/io/jawk/frontend/AwkParser.html#L4814)[46] |
| ``` if (arrAst.getAst1() instanceof IDAst) { IDAst idAst = (IDAst) arrAst.getAst1(); if (idAst.isScalar()) { throw new SemanticException("Cannot use " + idAst + " as an array."); } idAst.setArray(true); } arrAst.populateTargetReferenceTuples(tuples); tuples.subForMapReference(isGsub); ``` |

| File | Line |
| --- | --- |
| io/jawk/frontend/AwkParser.java | [4669](./xref/io/jawk/frontend/AwkParser.html#L4669)[47] |
| io/jawk/frontend/AwkParser.java | [5140](./xref/io/jawk/frontend/AwkParser.html#L5140)[48] |
| ``` } else if (getAst1() instanceof ArrayReferenceAst) { ArrayReferenceAst arrAst = (ArrayReferenceAst) getAst1(); if (arrAst.getAst1() instanceof IDAst) { IDAst idAst = (IDAst) arrAst.getAst1(); if (idAst.isScalar()) { throw new SemanticException("Cannot use " + idAst + " as an array."); ``` |

| File | Line |
| --- | --- |
| io/jawk/frontend/AwkParser.java | [4717](./xref/io/jawk/frontend/AwkParser.html#L4717)[49] |
| io/jawk/frontend/AwkParser.java | [5140](./xref/io/jawk/frontend/AwkParser.html#L5140)[48] |
| ``` } else if (getAst1() instanceof ArrayReferenceAst) { ArrayReferenceAst arrAst = (ArrayReferenceAst) getAst1(); if (arrAst.getAst1() instanceof IDAst) { IDAst idAst = (IDAst) arrAst.getAst1(); if (idAst.isScalar()) { throw new SemanticException("Cannot use " + idAst + " as an array."); ``` |

| File | Line |
| --- | --- |
| io/jawk/frontend/AwkParser.java | [4774](./xref/io/jawk/frontend/AwkParser.html#L4774)[50] |
| io/jawk/frontend/AwkParser.java | [5140](./xref/io/jawk/frontend/AwkParser.html#L5140)[48] |
| ``` } else if (getAst1() instanceof ArrayReferenceAst) { ArrayReferenceAst arrAst = (ArrayReferenceAst) getAst1(); if (arrAst.getAst1() instanceof IDAst) { IDAst idAst = (IDAst) arrAst.getAst1(); if (idAst.isScalar()) { throw new SemanticException("Cannot use " + idAst + " as an array."); ``` |

| File | Line |
| --- | --- |
| io/jawk/frontend/AwkParser.java | [4812](./xref/io/jawk/frontend/AwkParser.html#L4812)[51] |
| io/jawk/frontend/AwkParser.java | [5140](./xref/io/jawk/frontend/AwkParser.html#L5140)[48] |
| ``` } else if (getAst1() instanceof ArrayReferenceAst) { ArrayReferenceAst arrAst = (ArrayReferenceAst) getAst1(); if (arrAst.getAst1() instanceof IDAst) { IDAst idAst = (IDAst) arrAst.getAst1(); if (idAst.isScalar()) { throw new SemanticException("Cannot use " + idAst + " as an array."); ``` |

| File | Line |
| --- | --- |
| io/jawk/backend/AVM.java | [387](./xref/io/jawk/backend/AVM.html#L387)[52] |
| io/jawk/backend/AVM.java | [464](./xref/io/jawk/backend/AVM.html#L464)[53] |
| ``` installProgramMetadata(compiledProgram); jrt.prepareForExecution(settings.getFieldSeparator(), settings.getDefaultRS()); if (!executionSpecialVariables.isEmpty()) { jrt.applySpecialVariables(executionSpecialVariables); } rebindResolvedInputSource(resolvedSource); executeTuples(compiledProgram.top()); } /** * Executes a compiled AWK program while persisting user-defined global * variables across repeated executions on this AVM instance. * <p> * Before the new program starts, this method imports any user-defined * globals currently materialized in the AVM and remaps them onto the * incoming program's compiled global slots. * * @param program compiled program to execute * @param inputSource input source providing records * @throws ExitException when the program terminates via {@code exit} * @throws IOException if execution fails */ public void executePersistingGlobals(AwkProgram program, InputSource inputSource) ``` |

| File | Line |
| --- | --- |
| io/jawk/backend/AVM.java | [981](./xref/io/jawk/backend/AVM.html#L981)[54] |
| io/jawk/jrt/StreamInputSource.java | [399](./xref/io/jawk/jrt/StreamInputSource.html#L399)[55] |
| ``` private NameValueAssignment parseNameValueAssignment(String nameValue) { int eqIdx = nameValue.indexOf('='); if (eqIdx == 0) { throw new IllegalArgumentException( "Must have a non-blank variable name in a name=value variable assignment argument."); } String name = nameValue.substring(0, eqIdx); String value = nameValue.substring(eqIdx + 1); ``` |

| File | Line |
| --- | --- |
| io/jawk/backend/AVM.java | [1594](./xref/io/jawk/backend/AVM.html#L1594)[56] |
| io/jawk/backend/AVM.java | [1613](./xref/io/jawk/backend/AVM.html#L1613)[57] |
| ``` double num = original + 1; setNumOnJRT(fieldnum, num); if (JRT.isActuallyLong(original)) { push((long) Math.rint(original)); } else { push(Double.valueOf(original)); } position.next(); break; } case DEC_DOLLAR_REF: { ``` |
