Rational Developer for Power Systems Software
V7.6

com.ibm.etools.iseries.parsers
Class ISeriesEditorRPGILESyntaxChecker

java.lang.Object
  extended by com.ibm.etools.iseries.parsers.ISeriesEditorSyntaxChecker
      extended by com.ibm.etools.iseries.parsers.ISeriesEditorRPGILESyntaxChecker
All Implemented Interfaces:
IISeriesEditorConstantsColors, IISeriesEditorConstantsRPG, IISeriesEditorConstantsRPGILE, IISeriesEditorSyntaxChecker

public class ISeriesEditorRPGILESyntaxChecker
extends ISeriesEditorSyntaxChecker
implements IISeriesEditorSyntaxChecker, IISeriesEditorConstantsRPGILE

This class interfaces to the ILE syntax checker proxy which is written in 'C'.


Nested Class Summary
 
Nested classes/interfaces inherited from class com.ibm.etools.iseries.parsers.ISeriesEditorSyntaxChecker
ISeriesEditorSyntaxChecker.RunnableSyntaxChecker
 
Field Summary
protected  boolean _isAvailable
           
protected  boolean _offline
           
protected  ISeriesEditorParser _parser
           
protected  byte[] _specialCharByteArray
           
protected  String _strFilename
           
protected  String _strHostname
           
protected  String _strSourceType
           
protected  String _strSpecialChars
           
protected  boolean _syntaxCheckSQL
           
static String copyright
           
protected  int iHostCommunicationsPort
           
 
Fields inherited from class com.ibm.etools.iseries.parsers.ISeriesEditorSyntaxChecker
_aEmpty, _bIsPrimaryLpexView, _disableSyntaxCheckAuto, _invokedAuto, _progressMonitor, _ptRange, _strAutoPreferenceName, _strEmpty, _vectorSyntaxErrors, _view
 
Fields inherited from interface com.ibm.etools.iseries.parsers.IISeriesEditorSyntaxChecker
Copyright
 
Fields inherited from interface com.ibm.etools.iseries.editor.IISeriesEditorConstantsRPGILE
_straControlWords, _straDataWords, _straMacroWords, _straRPGFonts, _straXF2_opcodes, _straXF2_possible_opcodes, CHANGE_CFREE_DIRECTIVE_ADDED, CHANGE_CFREE_DIRECTIVE_REMOVED, CHANGE_CFREESQL_END_ADDED, CHANGE_CFREESQL_START_ADDED, CHANGE_CFREESQL_START_END_ADDED, CHANGE_CFREESQL_START_REMOVED, CHANGE_ENDCFREE_DIRECTIVE_ADDED, CHANGE_ENDCFREE_DIRECTIVE_REMOVED, CHANGE_FIXFORM_SQL_END_ADDED, CHANGE_FIXFORM_SQL_END_REMOVED, CHANGE_FIXFORM_SQL_START_ADDED, CHANGE_FIXFORM_SQL_START_REMOVED, CHANGE_NONE, CLASS_BWDLINK, CLASS_CFREE, CLASS_CFREE_DIRECTIVE, CLASS_CFREE_END, CLASS_CFREE_SQL, CLASS_CFREE_SQLEND, CLASS_CFREE_SQLEND_REAL, CLASS_CFREE_SQLSTART, CLASS_COMMENT, CLASS_CONTROL, CLASS_ENDCFREE_DIRECTIVE, CLASS_ERROR, CLASS_FIXFORM_SQL_END, CLASS_FIXFORM_SQL_START, CLASS_FWDLINK, CLASS_PROCEDURE, CLASS_SPACE, CLASS_SQL, CLASS_SUBROUTINE, CLEVEL_LEN, CLEVEL_POS, COMMENT_POS, CONDIND_LEN, CONDIND_POS, CONTINUATION_INDENT, DECPOS_LEN, DECPOS_POS, DIRECTIVE_POS, EOLCOMMENT_POS, EXTFACTOR2_LEN, EXTFACTOR2_POS, FACTOR1_LEN, FACTOR1_POS, FACTOR2_LEN, FACTOR2_POS, FIELDDEF_LEN, FIELDDEF_POS, FIELDLEN_LEN, FIELDLEN_POS, FONT_COMMENT, FONT_DEFAULT, FREE_LEN, FREE_POS, IND_LEN, INDENT_LIMIT, LENGTH_C_OPCODE, MAX_NEST, NUM_OF_OPCODES, OPCODE_LEN, OPCODE_POS, PAGE_INDEX_ILE_C_Calculation, PAGE_INDEX_ILE_C_Calculation_Extended_Factor_2, PAGE_INDEX_ILE_C_Calculation_Extended_Factor_2_Continuation, PAGE_INDEX_ILE_C_Calculation_Free_Form, PAGE_INDEX_ILE_Comment, PAGE_INDEX_ILE_D_Definition, PAGE_INDEX_ILE_D_Definition_Continuation, PAGE_INDEX_ILE_D_Definition_Continued_Name_Line, PAGE_INDEX_ILE_F_File_Description, PAGE_INDEX_ILE_F_File_Description_Continuation, PAGE_INDEX_ILE_Full_Line, PAGE_INDEX_ILE_H_Control, PAGE_INDEX_ILE_I_Input_Field_Description, PAGE_INDEX_ILE_I_Input_Field_Description_Externally_Described_File, PAGE_INDEX_ILE_I_Input_Record_Identification, PAGE_INDEX_ILE_I_Input_Record_Identification_Externally_Described_File, PAGE_INDEX_ILE_I_Input_Record_Identification_Logical_Relationship, PAGE_INDEX_ILE_O_Output_Field_Description, PAGE_INDEX_ILE_O_Output_Field_Description_Continuation, PAGE_INDEX_ILE_O_Output_Record_Identification, PAGE_INDEX_ILE_O_Output_Record_Identification_AND_OR, PAGE_INDEX_ILE_O_Output_to_Disk, PAGE_INDEX_ILE_P_Procedure, PAGE_INDEX_ILE_P_Procedure_Continued_Name_Line, PREF_COLUMN_CFIXED_MAX, PREF_COLUMN_CFREE_MAX, PREF_COLUMN_CFREE_MIN, PREF_COLUMN_CFREE_START, PROMPT_C, PROMPT_CF, PROMPT_CFE, PROMPT_CFS, PROMPT_CFSQL, PROMPT_CM, PROMPT_D, PROMPT_DATA, PROMPT_DC, PROMPT_DX, PROMPT_F, PROMPT_FC, PROMPT_H, PROMPT_IF, PROMPT_IFX, PROMPT_IR, PROMPT_IR2, PROMPT_IRX, PROMPT_LAST, PROMPT_MACRO, PROMPT_NONE, PROMPT_OD, PROMPT_OF, PROMPT_OFC, PROMPT_OR, PROMPT_OR2, PROMPT_P, PROMPT_PC, PROMPT_SPACE, PROMPT_SQL, PROMPT_XF2, PROMPT_XF2C, RESINDEQ_POS, RESINDER_POS, RESINDNR_POS, RESINDS_LEN, RESINDS_POS, RESULTFIELD_LEN, RESULTFIELD_POS, RPGSPEC_C, RPGSPEC_CF, RPGSPEC_D, RPGSPEC_E, RPGSPEC_F, RPGSPEC_H, RPGSPEC_I, RPGSPEC_L, RPGSPEC_O, RPGSPEC_P, RPGSPEC_U, SIGNIFICANT_LEN, SLASHSLASHEOL_POS, SPECTYPE_POS, SRCRECLEN, STRING_HELP_DOC_PLUGIN_ID, STRING_HELP_TABLE_FILENAME, STRING_HELP_TABLE_PLUGIN_ID, STRING_MESSAGE_HELP_DOC_PLUGIN_ID, STRING_MESSAGE_HELP_TABLE_FILENAME, STRING_MESSAGE_HELP_TABLE_PLUGIN_ID, XACQ, XADD, XADDDUR, XALLOC, XANDEQ, XANDGE, XANDGT, XANDLE, XANDLT, XANDNE, XBEGSR, XBITOFF, XBITON, XBLANK, XCAB, XCABEQ, XCABGE, XCABGT, XCABLE, XCABLT, XCABNE, XCALL, XCALLB, XCALLP, XCAS, XCASEQ, XCASGE, XCASGT, XCASLE, XCASLT, XCASNE, XCAT, XCHAIN, XCHECK, XCHECKR, XCLEAR, XCLOSE, XCOMMIT, XCOMP, XDEALLOC, XDEFINE, XDELETE, XDIV, XDO, XDOU, XDOUEQ, XDOUGE, XDOUGT, XDOULE, XDOULT, XDOUNE, XDOW, XDOWEQ, XDOWGE, XDOWGT, XDOWLE, XDOWLT, XDOWNE, XDSPLY, XDUMP, XELSE, XELSEIF, XEND, XENDCS, XENDDO, XENDFOR, XENDIF, XENDMON, XENDSL, XENDSR, XEVAL, XEVAL_CORR, XEVALR, XEXCEPT, XEXFMT, XEXSR, XEXTRCT, XFEOD, XFOR, XFORCE, XGOTO, XIF, XIFEQ, XIFGE, XIFGT, XIFLE, XIFLT, XIFNE, XIN, XITER, XKFLD, XKLIST, XLEAVE, XLEAVESR, XLOOKUP, XMHHZO, XMHLZO, XMLHZO, XMLLZO, XMONITOR, XMOVE, XMOVEA, XMOVEL, XMULT, XMVR, XNEXT, XOCCUR, XON_ERROR, XOPEN, XOREQ, XORGE, XORGT, XORLE, XORLT, XORNE, XOTHER, XOUT, XPARM, XPLIST, XPOST, XREAD, XREADC, XREADE, XREADP, XREADPE, XREALLOC, XREL, XRESET, XRETURN, XROLBK, XSCAN, XSELECT, XSETGT, XSETLL, XSETOFF, XSETON, XSHTDN, XSORTA, XSQRT, XSUB, XSUBDUR, XSUBST, XTAG, XTEST, XTESTB, XTESTN, XTESTZ, XTIME, XUNLOCK, XUPDATE, XWHEN, XWHENEQ, XWHENGE, XWHENGT, XWHENLE, XWHENLT, XWHENNE, XWRITE, XXFOOT, XXLATE, XXML_INTO, XXML_SAX, XZ_ADD, XZ_SUB
 
Fields inherited from interface com.ibm.etools.iseries.editor.IISeriesEditorConstantsRPG
_straSQLWords, _straSQLWordsWithComment, CMD_SETFORMATLINETEXT, CMD_SETTABS, COLUMN_C_FREE, COLUMN_C_OPCODE, COLUMN_COMMENT, COLUMN_FACTOR1, COLUMN_FACTOR2, COLUMN_KEYWORDS, COLUMN_PROC_NAME_BEGIN, COLUMN_PROC_NAME_END, COLUMN_PROC_SPEC, COLUMN_SPEC, FIELD_FACTOR1, FIELD_FACTOR2, FIELD_FROM, FIELD_OPCODE, FIELD_TOLENGTH, OPM_COLUMN_FACTOR1
 
Fields inherited from interface com.ibm.etools.iseries.edit.IISeriesEditorConstantsColors
COLOR_BLACK_WHITE, COLOR_BLUE_WHITE, COLOR_BRIGHTBLUE_WHITE, COLOR_BRIGHTGREEN_WHITE, COLOR_BRIGHTGREY_WHITE, COLOR_BRIGHTPINK_WHITE, COLOR_BRIGHTRED_WHITE, COLOR_BRIGHTRED_WHITE_SQUIGGLE, COLOR_BROWN_WHITE, COLOR_CYAN_WHITE, COLOR_DARK_BROWN_WHITE, COLOR_ERROR_HIGHLIGHT, COLOR_GREEN_WHITE, COLOR_GREY_WHITE, COLOR_HIGHLIGHT, COLOR_MAGENTA_WHITE, COLOR_PINK_WHITE, COLOR_RED_WHITE, COLOR_WHITE_BRIGHTRED
 
Constructor Summary
ISeriesEditorRPGILESyntaxChecker(LpexView lpexView, ISeriesEditorParser parser)
          Constructor.
 
Method Summary
 ISeriesEditorSyntaxError[] checkSyntax(int iElementStart, int iElementEnd)
          Invokes the syntax checker proxy if available.
 void checkSyntaxOfRange(int iElementStart, int iElementEnd)
          Syntax checks the specified range of elements.
protected  byte[] getRPGSpecialCharBytes(String strSpecialChars)
          This API is a workaround for NL variant chars problem in syntax checker and verifier.
 boolean isAvailable()
          Returns whether syntax checking is available.
 boolean isCancelable()
          Returns whether the syntax checker is cancelable before the operation is complete.
 void setEnable(boolean value)
          Use to enable & disable the syntax checker
 
Methods inherited from class com.ibm.etools.iseries.parsers.ISeriesEditorSyntaxChecker
callbackAddSyntaxError, callbackGetLineText, callbackGetNextLine, callbackGetPreviousLine, callbackIsCanceled, callbackIsShowLine, checkSyntaxAuto, checkSyntaxAuto, checkSyntaxOfCurrentLine, checkSyntaxOfDocument, checkSyntaxOfRangeWithProgress, checkSyntaxOfSelection, displaySyntaxErrors, getHostCommunicationsPort
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface com.ibm.etools.iseries.parsers.IISeriesEditorSyntaxChecker
checkSyntaxOfCurrentLine, checkSyntaxOfDocument, checkSyntaxOfSelection
 

Field Detail

copyright

public static final String copyright
See Also:
Constant Field Values

_strFilename

protected String _strFilename

_strSpecialChars

protected String _strSpecialChars

_parser

protected ISeriesEditorParser _parser

_isAvailable

protected boolean _isAvailable

_strHostname

protected String _strHostname

_strSourceType

protected String _strSourceType

iHostCommunicationsPort

protected int iHostCommunicationsPort

_syntaxCheckSQL

protected boolean _syntaxCheckSQL

_offline

protected boolean _offline

_specialCharByteArray

protected byte[] _specialCharByteArray
Constructor Detail

ISeriesEditorRPGILESyntaxChecker

public ISeriesEditorRPGILESyntaxChecker(LpexView lpexView,
                                        ISeriesEditorParser parser)
Constructor.

Method Detail

checkSyntax

public ISeriesEditorSyntaxError[] checkSyntax(int iElementStart,
                                              int iElementEnd)
Invokes the syntax checker proxy if available. The proxy is given the instance to this class. The proxy calls this instance's addSyntaxError method for each syntax error string.

Specified by:
checkSyntax in interface IISeriesEditorSyntaxChecker
Specified by:
checkSyntax in class ISeriesEditorSyntaxChecker

checkSyntaxOfRange

public void checkSyntaxOfRange(int iElementStart,
                               int iElementEnd)
Syntax checks the specified range of elements.

Specified by:
checkSyntaxOfRange in interface IISeriesEditorSyntaxChecker
Specified by:
checkSyntaxOfRange in class ISeriesEditorSyntaxChecker

isAvailable

public boolean isAvailable()
Returns whether syntax checking is available.

Specified by:
isAvailable in interface IISeriesEditorSyntaxChecker
Specified by:
isAvailable in class ISeriesEditorSyntaxChecker

isCancelable

public boolean isCancelable()
Returns whether the syntax checker is cancelable before the operation is complete.

Specified by:
isCancelable in class ISeriesEditorSyntaxChecker

setEnable

public void setEnable(boolean value)
Use to enable & disable the syntax checker

Parameters:
value - true to enable the syntax checker, false to disable it

getRPGSpecialCharBytes

protected byte[] getRPGSpecialCharBytes(String strSpecialChars)
This API is a workaround for NL variant chars problem in syntax checker and verifier. The special chars array is organized as @, $, # in ISeriesEditorParser. In some encoding, a variant char is converted to multiple bytes. For example, in Chinese GB18030, the $ special char is converted to 4 bytes. There is a bug on Syntax checker DLL and Verifier DLL right now which only takes the first 3 bytes and treat them as @, $, #. Because a variant char converts to multiple bytes, the byte for the variant char after that variant char is not used by syntax checker and verifier. Thus, this variant char will be flagged as invalid. For GB18030, both Chinese $ and # are flagged as invalid. To workaround this problem, rearrange the byte array so that it contains a complete byte for variant chars as many as possible. For example, in GB18030 case, the #'s byte and $' bytes will be switched so that #'s byte is the second element in specialchar's byte array. As a result, # will not be flagged as invalid. $ sign in GB18030 is still flagged as invalid as before. - LD.


Rational Developer for Power Systems Software
V7.6

Copyright 2011 IBM Corp. All Rights Reserved.

Note: This documentation is for part of an interim API that is still under development and expected to change significantly before reaching stability. It is being made available at this early stage to solicit feedback from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken (repeatedly) as the API evolves.