if (inctokenizer!=null) processDBD(data, inctokenizer, include_filename, new PathSpecification(file.getParentFile().getAbsolutePath()));
if (inctokenizer!=null) processDBD(data, inctokenizer, include_filename, new PathSpecification(file.getParentFile().getAbsolutePath(), paths));
public static void processDBD(DBDData data, EnhancedStreamTokenizer tokenizer, String fileName, PathSpecification paths) throws Exception {		DBDRecordData rd;	DBDMenuData md;	DBDDeviceData dd;	String str;	String include_filename;	EnhancedStreamTokenizer inctokenizer = null;	if (data!=null) 		try	{				while (tokenizer.nextToken() != EnhancedStreamTokenizer.TT_EOF)			if (tokenizer.ttype == EnhancedStreamTokenizer.TT_WORD)				/****************** records ********************/				if (tokenizer.sval.equalsIgnoreCase(RECORDTYPE)) {					rd = new DBDRecordData();					// read record_type					tokenizer.nextToken();					if ((tokenizer.ttype == EnhancedStreamTokenizer.TT_WORD) ||						(tokenizer.ttype == DBDConstants.quoteChar)) rd.setName(tokenizer.sval);					else throw (new DBDParseException("Invalid record_type...", tokenizer, fileName));					processFields(rd, tokenizer, fileName, paths);					data.addRecord(rd);				}								/******************* menus *********************/				else if (tokenizer.sval.equalsIgnoreCase(MENU)) {					md = new DBDMenuData();					// read menu_name					tokenizer.nextToken();					if ((tokenizer.ttype == EnhancedStreamTokenizer.TT_WORD) ||						(tokenizer.ttype == DBDConstants.quoteChar)) md.setName(tokenizer.sval);					else throw (new DBDParseException("Invalid menu_name...", tokenizer, fileName));					processMenuChoices(md, tokenizer, fileName, paths);					data.addMenu(md);				}								/******************* devices *********************/				else if (tokenizer.sval.equalsIgnoreCase(DEVICE)) {					dd = new DBDDeviceData();					// read record_type					tokenizer.nextToken();					if ((tokenizer.ttype == EnhancedStreamTokenizer.TT_WORD) ||						(tokenizer.ttype == DBDConstants.quoteChar)) dd.setRecord_type(tokenizer.sval);					else throw (new DBDParseException("Invalid record_type...", tokenizer, fileName));					// read link_type					tokenizer.nextToken();					if ((tokenizer.ttype == EnhancedStreamTokenizer.TT_WORD) ||						(tokenizer.ttype == DBDConstants.quoteChar)) dd.setLink_type(tokenizer.sval);					else throw (new DBDParseException("Invalid link_type...", tokenizer, fileName));					// read dset_name					tokenizer.nextToken();					if ((tokenizer.ttype == EnhancedStreamTokenizer.TT_WORD) ||						(tokenizer.ttype == DBDConstants.quoteChar)) dd.setDset_name(tokenizer.sval);					else throw (new DBDParseException("Invalid dset_name...", tokenizer, fileName));					// read choice_string					tokenizer.nextToken();					if (tokenizer.ttype == DBDConstants.quoteChar) dd.setChoice_string(tokenizer.sval);					else throw (new DBDParseException("Invalid choice_string...", tokenizer, fileName));					data.addDevice(dd);				}								/****************** include ********************/				else if (tokenizer.sval.equalsIgnoreCase(INCLUDE)) {					// read incude_filename					tokenizer.nextToken();					if (tokenizer.ttype == DBDConstants.quoteChar) include_filename=tokenizer.sval;					else throw (new DBDParseException("Invalid include_filename...", tokenizer, fileName));					File file = paths.search4File(include_filename);					inctokenizer = getEnhancedStreamTokenizer(file.getAbsolutePath());					if (inctokenizer!=null) processDBD(data, inctokenizer, include_filename, new PathSpecification(file.getParentFile().getAbsolutePath()));				}				/****************** path ********************/				else if (tokenizer.sval.equalsIgnoreCase(PATH))  				{					// read paths					tokenizer.nextToken();					if (tokenizer.ttype == DBDConstants.quoteChar) str=tokenizer.sval;					else throw (new DBDParseException("Invalid path...", tokenizer, fileName));					paths.setPath(str);					//Console.getInstance().println("Warning: 'path' command is not yet supported...");  				}								/****************** addpath ********************/				else if (tokenizer.sval.equalsIgnoreCase(ADDPATH))  				{					// read add paths					tokenizer.nextToken();					if (tokenizer.ttype == DBDConstants.quoteChar) str=tokenizer.sval;					else throw (new DBDParseException("Invalid addpath...", tokenizer, fileName));					paths.addAddPath(str);					//Console.getInstance().println("Warning: 'addpath' command is not yet supported...");  				}				// driver, breaktable not read	} catch (Exception e) {		Console.getInstance().println("\n"+e);		throw e;	}		}