MIW:Advanced Functions
Contents
The Script Editor
The Script Editor lets you write and execute scripts in Javascript.
With the Script Editor, you have access to the following resources of MiWorkplace.
-
document
— editor content -
selection
— editor selection (selected text range of the editor instance) -
ast
— AST - abstract syntax tree of the editor content (a data model of the source)
var procedures = ast.listProcedures(); for each (var procedure in procedures) { print(procedure.name); }
Editor Content
The editor content is available via the document
variable. It is an instance of the Java class org.eclipse.jface.text.Document
.
It provides many methods (RPG term: procedures).
- get() — Get the whole editor content
- get(start, length) — Get a part of the editor code
- getLineLength(line) — Get the length of the line
- getLineOffset(line) — Returns the offset of the line
- getLineOfOffset(offset) — Returns the line number which the passed offset is part of
- getNumberOfLines() — Returns the number of lines of the document
- replace(position, length, text) — Replaces the position with passed text
- set(text) — Replaces the content of the whole document
If you want to insert code, use the replace method and use 0 for the length.
Selection
The selection
variable represents the text the user selected in the editor. The selection is a simple Point class which has two fields: x and y.
- x — Start position of the selection
- y — Length of the current editor selection
AST - Abstract Syntax Tree (a model of the source)
Depending on what type of source code the editor instance has loaded ast
represents different Java classes.
CL
- listFiles() — returns a list of File objects
- listLabels() — returns a list of labels (Token)
- listSubroutines() — returns a list of Subroutine objects
- listVariables() — returns a list of global variables declared in this CL program
- listParameters() — returns a list of parameters
File
Represents a file declared in a CL with the keyword DCLF
.
- getFile() — file name
- getLibrary() — library name (default:
*LIBL
) - getRecordFormat() — the used record format (default:
*ALL
) - getAllowNull() — value of parameter ALWNULL
- getAllowGraphic() — value of parameter ALWGRAPHIC
- getAllowVariableLength() — value of parameter ALWVARLEN
- getDeclareBinaryFieldsToken() — value of parameter DCLBINFLD
- getStatement() — returns Statement
Subroutine
- getName() — returns the name of the subroutine
- getStart() — returns the first token of the subroutine
- getEnd() — returns the last token of the subroutine
- list() — returns all Statement objects which make up this subroutine
Variable
- getName() — returns the name of the variable
- getType() — returns the type (Character, Integer, UnsignedInteger, Boolean, Decimal, Pointer)
- getLength() — returns the declared length of the variable
- getDecimalPositions() — returns the declared decimal positions of the variable
- getStatement() — returns Statement
Parameter
- getName() — returns the name of the parameter (withouth the leading & sign)
Statement
A statement consists of one or more tokens. A statement can be layed out on multiple lines.
- list() — list of tokens
- size() — number tokens in this statement
Token
- offset — start position of this token in this line (zero-based)
- line — line number (zero-based)
- value — token value
Fixed Form RPG
- getProcedures() — returns a list of Procedure objects
- getSubroutines() — returns a list of Subroutine objects
Procedure
- getName() — returns the name of the procedure
- getStartLine() — returns the starting line of the procedure
- isExported() mdash; returns true if the procedure is exported (keyword export)
Subroutine
- getName() — returns the name of the subroutine
- getStartLine() — returns the starting line of the subroutine
Free Form RPG
- listConstants() — returns a list of Constant objects
- listFiles() — returns a list of File objects
- listIncludes() — returns a list of Include objects
- listPrototypes() — returns a list of Prototype objects
- listProcedures() — returns a list of Procedure objects
- listSubroutines() — returns a list of Subroutine objects
- listVariables() — returns a list of global variables as Variable objects
Constant
- name — the name of the constant
- value — the value of the constant (Strings are returned enclosed in ')
- statement — Statement of this constant
File
- isExternallyDescribed() — true if externally described else false
- isQualified() — true if the file is to be used with qualified naming and data structures for IO (keyword qualified)
- isStaticFile() — true if the file is static (keyword static)
- isTemplate() — true if the file is only a template (keyword template)
- getFilename() — returns the filename
- getStatement() — returns the Statement object
- getType() — returns the type of the file (Disk, Printer, Workstation)
Include
- getFile() — returns the copy book (may include quotes)
- getFileUnquoted() — returns the copy book (without quotes)
- getStatement() — returns the Statement object
Prototype
- getExternalProcedure() — returns the declared external procedure name
- getExternalProgram() — returns the declared external program name
- getName() — returns the name of the prototype
- getParameters() — returns a list of Parameter objects
- getReturnValue() — returns a Variable or DataStructure
- getStatements() — returns a list of Statement objects
- isReturnParameter() — true if the prototype is declared with the keyword rtnparm
Parameter
A Parameter can either be a Variable or a DataStructure.
- isPassedByRef() — true if parameter is defined with const
- isPassedByValue() — true if parameter is defined with value
- getOptions() — returns a list of options
Procedure
- getName() — returns the name of the procedure
- getProcedureInterface() — returns the ProcedureInterface
- isExported() — returns true if the procedure is exported (keyword export)
- listConstants() — returns a list of Constant objects
- listFiles() — returns a list of File objects
- listIncludes() — returns a list of Include objects
- listPrototypes() — returns a list of Prototype objects
- listSubroutines() — returns a list of Subroutine objects
- listVariables() — returns a list of global variables as Variable objects
ProcedureInterface
- isReturnParameter() — true if the prototype is declared with the keyword rtnparm
- getParameters() — returns a list of Parameter object
- getStatements() — returns a list of Statement objects
- getReturnValue() — returns a Variable or DataStructure
Subroutine
- name() — returns the name of the subroutine
- list() — returns a list of Statement objects
Variable
- getArraySize() — returns the array size (defined with the keyword dim)
- getBased() — returns the name of the based pointer
- getCcsid() — returns the declared ccsid
- getCompileTimeArray — returns true if the variable is declared as a compile time array
- getDecimalPositions() — returns the decimal positions
- getExported() — returns true if the variable is declared as exported
- getExternalName() — returns the external name if the variable is exported or imported
- getImported() — returns true if the variable is declared as imported
- getLength() — returns the length of the variable
- getLengthAdjustment() — returns the length adjustment
- getLike() — returns the field name which is used as a template for this variable
- getName() — returns the variable name
- getStatement() — returns the Statement object
- getType() — returns the type of the variable (Character, Integer, UnsignedInteger, Boolean, Zoned, Packed, Pointer, Time, Timestamp, Date, Graph, UCS2, Varchar, BinaryDecimal, Float, Object)
- isInitialized() — returns true if the variable is declared with an initial value (keyword inz)
DataStructure
- getArraySize() — returns the array size (defined with the keyword dim)
- getBased() — returns the name of the based pointer
- getExported() — returns true if the data structure is declared as exported
- getExternalName() — returns the external name if the data structure is exported or imported
- getImported() — returns true if the variable is declared as imported
- getLength() — returns the length of the data structure
- getLikeRecord() — returns the record name which is used as a template for this data structure
- getName() — returns the data structure name
- getStatements()) — returns a list of Statements objects
- getSubfields() — returns a list of objects, either Variable or DataStructure
- isInitialized() — returns true if the data structure is declared with an initial value (keyword inz)
- isQualified() — true if the data structure is to be used with qualified naming for accessing subfields (keyword qualified)
- isTemplate() — true if the data structure is only a template (keyword template)
Statement
- getFirstLine() — returns the staring line number of this statement
- getFirstToken() — returns the first token of this line
- list() — returns a list of Token objects
- size() — returns the number of tokens in this statement
- startsWith(string) — checks if the statements starts with the given string (case insensitive)
Token
- line — line number
- lineOffset — offset of the token in this line
- offset — offset of the token in the whole program code
- value — token value
DDS
- listRecordFormats() — returns a list of record formats
RecordFormat
- line — returns the line number of the record format (zero-based)
- name — returns the name of the record format
Console
Besides the Script Editor view there is also the Console view which displays the output of the script done with the print
function.
print(document.get());
Debugger
MiWorkplace includes the Open Source debugger from the JTOpen program. It is a wonderfully intuitive debugger and you can debug server jobs right from the GUI.
Start DEbug
Use the Start debug
button in the context menu of the connection in the Remote Explorer, and the debugging session will be started.
Resources on the web
There are some good resources on the web about the IBM i System Debugger. Most notably from IBM itself at their developerworks section.
Other resources are
- IBM i Debugger components
- Get started with the RPG debugging alternative
- iSeries System Debugger Gets a Facelift
TODO