Rational Developer for Power Systems Software

Class ISeriesEditorRPGOPMSyntaxChecker

  extended by com.ibm.etools.iseries.parsers.ISeriesEditorSyntaxChecker
      extended by com.ibm.etools.iseries.parsers.ISeriesEditorRPGOPMSyntaxChecker
All Implemented Interfaces:

public class ISeriesEditorRPGOPMSyntaxChecker
extends ISeriesEditorSyntaxChecker
implements IISeriesEditorSyntaxChecker

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

Nested Class Summary
Nested classes/interfaces inherited from class com.ibm.etools.iseries.parsers.ISeriesEditorSyntaxChecker
Field Summary
protected  boolean _isAvailable
protected  ISeriesEditorRPGOPMParser _parser
protected  byte[] _specialCharByteArray
protected  String _strFilename
protected  String _strSpecialChars
static String Copyright
Fields inherited from class com.ibm.etools.iseries.parsers.ISeriesEditorSyntaxChecker
_aEmpty, _bIsPrimaryLpexView, _disableSyntaxCheckAuto, _invokedAuto, _progressMonitor, _ptRange, _strAutoPreferenceName, _strEmpty, _vectorSyntaxErrors, _view, copyright
Constructor Summary
ISeriesEditorRPGOPMSyntaxChecker(LpexView lpexView, ISeriesEditorRPGOPMParser parser)
Method Summary
 ISeriesEditorSyntaxError[] checkSyntax(int iElementStart, int iElementEnd)
          Syntax checks the given Element number.
 ISeriesEditorSyntaxError[] checkSyntax(String strLine)
          Invokes the syntax checker proxy if available.
 void checkSyntaxOfRange(int iElementStart, int iElementEnd)
          Syntax checks the specified line
static byte[] getRPGSpecialCharBytes(String strSpecialChars)
          This API is a workaround for RPG 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.
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


public static final String Copyright
See Also:
Constant Field Values


protected ISeriesEditorRPGOPMParser _parser


protected String _strSpecialChars


protected String _strFilename


protected boolean _isAvailable


protected byte[] _specialCharByteArray
Constructor Detail


public ISeriesEditorRPGOPMSyntaxChecker(LpexView lpexView,
                                        ISeriesEditorRPGOPMParser parser)

Method Detail


public ISeriesEditorSyntaxError[] checkSyntax(int iElementStart,
                                              int iElementEnd)
Syntax checks the given Element number.

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


public ISeriesEditorSyntaxError[] checkSyntax(String strLine)
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.


public void checkSyntaxOfRange(int iElementStart,
                               int iElementEnd)
Syntax checks the specified line

Specified by:
checkSyntaxOfRange in interface IISeriesEditorSyntaxChecker
Specified by:
checkSyntaxOfRange in class ISeriesEditorSyntaxChecker
See Also:
com.ibm.etools.iseries.editor.ISeriesEditorSyntaxChecker#checkSyntaxOfRange(int, int)


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

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


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

Specified by:
isCancelable in class ISeriesEditorSyntaxChecker


public static byte[] getRPGSpecialCharBytes(String strSpecialChars)
This API is a workaround for RPG NL variant chars problem in syntax checker and verifier. Internal use only. Declare as public 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.

Rational Developer for Power Systems Software

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.