public boolean decode_OpCompleteParm() throws ParserException {
		boolean decoded = false;
		if (chars[index] == 'v' && chars[index + 1] == 'i') {
			// VoiceInterruptParm = ViParmToken EQUALS BOOLSTR;
			index = index + 3;
			boolean boolStrValue = decode_BOOLSTR();
			BooleanValue boolValue = new BooleanValue(ParameterEnum.vi, boolStrValue);
			value.put(ParameterEnum.vi, boolValue);
			decoded = true;
		} else if (chars[index] == 'i' && chars[index + 1] == 'k') {
			// IntKeySeqParm = IkParmToken EQUALS CommandKeySequence;
			index = index + 3;
			String cmdKeySequence = "";
			if ((chars[index] >= '0' && chars[index] <= '9') || chars[index] == '*' || chars[index] == '#') {
				decoded = true;
				cmdKeySequence = cmdKeySequence + chars[index];
				index++;
				for (int i = 1; i < 3 && (index < totalChars); i++) {
					if ((chars[index] >= '0' && chars[index] <= '9') || chars[index] == '*' || chars[index] == '#') {
						cmdKeySequence = cmdKeySequence + chars[index];
						index++;
					} else {
						break;
					}
				}

				StringValue s = new StringValue(ParameterEnum.ik, cmdKeySequence);
				value.put(ParameterEnum.ik, s);
				decoded = true;

			} else {
				throw new ParserException("Decoding of IntKeySeqParm failed");
			}

		} else if (chars[index] == 'n' && chars[index + 1] == 'a') {
			// NumAttemptsParm = NaParmToken EQUALS NUMBER;
			index = index + 3;
			int number = decode_NUMBER();
			NumberValue n = new NumberValue(ParameterEnum.na, number);
			value.put(ParameterEnum.na, n);
			decoded = true;
		} else if (chars[index] == 'a' && chars[index + 1] == 'p') {
			// AmtPlayedParm = ApParmToken EQUALS NUMBER;
			index = index + 3;
			int number = decode_NUMBER();
			NumberValue n = new NumberValue(ParameterEnum.ap, number);
			value.put(ParameterEnum.ap, n);
			decoded = true;
		} else if (chars[index] == 'd' && chars[index + 1] == 'c') {
			// DigitsColParm = DcParmToken EQUALS KeySequence;
			index = index + 3;
			String keySequence = "";
			if ((chars[index] >= '0' && chars[index] <= '9') || chars[index] == '*' || chars[index] == '#') {
				decoded = true;
				keySequence = keySequence + chars[index];
				index++;
				for (int i = 1; i < 64 && (index < totalChars); i++) {
					if ((chars[index] >= '0' && chars[index] <= '9') || chars[index] == '*' || chars[index] == '#') {
						keySequence = keySequence + chars[index];
						index++;
					} else {
						break;
					}
				}

				StringValue s = new StringValue(ParameterEnum.dc, keySequence);
				value.put(ParameterEnum.dc, s);
				decoded = true;

			} else {
				throw new ParserException("Decoding of DigitsColParm failed");
			}

		} else if (chars[index] == 'r' && chars[index + 1] == 'i') {
			// RecordingIdParm = RiParmToken EQUALS NUMBER;
			index = index + 3;
			int number = decode_NUMBER();
			NumberValue n = new NumberValue(ParameterEnum.ri, number);
			value.put(ParameterEnum.ri, n);
			decoded = true;

		} else if (chars[index] == 'r' && chars[index + 1] == 'c') {
			// ReturnCodeParm = RcParmToken EQUALS 3*3(DIGIT);
			index = index + 3;
			String rc = "";
			if (chars[index] >= '0' && chars[index] <= '9') {
				rc = rc + chars[index];
				index++;
				if (chars[index] >= '0' && chars[index] <= '9') {
					rc = rc + chars[index];
					index++;
					if (chars[index] >= '0' && chars[index] <= '9') {
						rc = rc + chars[index];
						index++;

						try {
							int number = Integer.parseInt(rc);
							NumberValue n = new NumberValue(ParameterEnum.rc, number);
							value.put(ParameterEnum.rc, n);
							decoded = true;
						} catch (NumberFormatException e) {
							throw new ParserException(
									"Decoding of ReturnCodeParm failed. The Return code is not number");
						}

					} else {
						throw new ParserException("Decoding of ReturnCodeParm failed");
					}
				} else {
					throw new ParserException("Decoding of ReturnCodeParm failed");
				}

			} else {
				throw new ParserException("Decoding of ReturnCodeParm failed");
			}

		} else {
			throw new ParserException("Decoding of PlayRecParm failed");
		}
		return decoded;
	}
public boolean decode_OpCompleteParm ( ) throws ParserException { boolean decoded = false ; if ( chars [ index ] == 'v' && chars [ index + 1 ] == 'i' ) { index = index + 3 ; boolean boolStrValue = decode_BOOLSTR ( ) ; BooleanValue boolValue = new BooleanValue ( ParameterEnum . vi , boolStrValue ) ; value . put ( ParameterEnum . vi , boolValue ) ; decoded = true ; } else if ( chars [ index ] == 'i' && chars [ index + 1 ] == 'k' ) { index = index + 3 ; String cmdKeySequence = "" ; if ( ( chars [ index ] >= '0' && chars [ index ] <= '9' ) || chars [ index ] == '*' || chars [ index ] == '#' ) { decoded = true ; cmdKeySequence = cmdKeySequence + chars [ index ] ; index ++ ; for ( int i = 1 ; i < 3 && ( index < totalChars ) ; i ++ ) { if ( ( chars [ index ] >= '0' && chars [ index ] <= '9' ) || chars [ index ] == '*' || chars [ index ] == '#' ) { cmdKeySequence = cmdKeySequence + chars [ index ] ; index ++ ; } else { break ; } } StringValue s = new StringValue ( ParameterEnum . ik , cmdKeySequence ) ; value . put ( ParameterEnum . ik , s ) ; decoded = true ; } else { throw new ParserException ( "Decoding of IntKeySeqParm failed" ) ; } } else if ( chars [ index ] == 'n' && chars [ index + 1 ] == 'a' ) { index = index + 3 ; int number = decode_NUMBER ( ) ; NumberValue n = new NumberValue ( ParameterEnum . na , number ) ; value . put ( ParameterEnum . na , n ) ; decoded = true ; } else if ( chars [ index ] == 'a' && chars [ index + 1 ] == 'p' ) { index = index + 3 ; int number = decode_NUMBER ( ) ; NumberValue n = new NumberValue ( ParameterEnum . ap , number ) ; value . put ( ParameterEnum . ap , n ) ; decoded = true ; } else if ( chars [ index ] == 'd' && chars [ index + 1 ] == 'c' ) { index = index + 3 ; String keySequence = "" ; if ( ( chars [ index ] >= '0' && chars [ index ] <= '9' ) || chars [ index ] == '*' || chars [ index ] == '#' ) { decoded = true ; keySequence = keySequence + chars [ index ] ; index ++ ; for ( int i = 1 ; i < 64 && ( index < totalChars ) ; i ++ ) { if ( ( chars [ index ] >= '0' && chars [ index ] <= '9' ) || chars [ index ] == '*' || chars [ index ] == '#' ) { keySequence = keySequence + chars [ index ] ; index ++ ; } else { break ; } } StringValue s = new StringValue ( ParameterEnum . dc , keySequence ) ; value . put ( ParameterEnum . dc , s ) ; decoded = true ; } else { throw new ParserException ( "Decoding of DigitsColParm failed" ) ; } } else if ( chars [ index ] == 'r' && chars [ index + 1 ] == 'i' ) { index = index + 3 ; int number = decode_NUMBER ( ) ; NumberValue n = new NumberValue ( ParameterEnum . ri , number ) ; value . put ( ParameterEnum . ri , n ) ; decoded = true ; } else if ( chars [ index ] == 'r' && chars [ index + 1 ] == 'c' ) { index = index + 3 ; String rc = "" ; if ( chars [ index ] >= '0' && chars [ index ] <= '9' ) { rc = rc + chars [ index ] ; index ++ ; if ( chars [ index ] >= '0' && chars [ index ] <= '9' ) { rc = rc + chars [ index ] ; index ++ ; if ( chars [ index ] >= '0' && chars [ index ] <= '9' ) { rc = rc + chars [ index ] ; index ++ ; try { int number = Integer . parseInt ( rc ) ; NumberValue n = new NumberValue ( ParameterEnum . rc , number ) ; value . put ( ParameterEnum . rc , n ) ; decoded = true ; } catch ( NumberFormatException e ) { throw new ParserException ( "Decoding of ReturnCodeParm failed. The Return code is not number" ) ; } } else { throw new ParserException ( "Decoding of ReturnCodeParm failed" ) ; } } else { throw new ParserException ( "Decoding of ReturnCodeParm failed" ) ; } } else { throw new ParserException ( "Decoding of ReturnCodeParm failed" ) ; } } else { throw new ParserException ( "Decoding of PlayRecParm failed" ) ; } return decoded ; }
/*
OpCompleteParm = ( VoiceInterruptParm / IntKeySeqParm / NumAttemptsParm /
AmtPlayedParm / DigitsColParm / RecordingIdParm / ReturnCodeParm );