Class mz390
java.lang.Object
mz390
mz390 is the macro processor component of z390 which can be called from
z390 GUI interface or from command line to read mlc macro source and
any referenced macros and copybooks to generate expanded BAL source file.
-
Field Summary
FieldsModifier and TypeFieldDescription(package private) Stringvariable(package private) Stringvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) booleanvariable(package private) booleanvariable(package private) booleanvariable(package private) intvariable(package private) intvariable(package private) LinkedList<String> variable(package private) booleanvariable(package private) intvariable(package private) booleanvariable(package private) booleanvariable(package private) intvariable(package private) booleanvariable(package private) Stringvariable(package private) booleanvariable(package private) booleanvariable(package private) booleanvariable(package private) booleanvariable(package private) charvariable(package private) az390variable(package private) Stringvariable(package private) booleanvariable(package private) Filevariable(package private) BufferedWritervariable(package private) Stringvariable(package private) Stringvariable(package private) Stringvariable(package private) booleanvariable(package private) Stringvariable(package private) Stringvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) booleanvariable(package private) Patternvariable(package private) booleanvariable(package private) booleanvariable(package private) booleanvariable(package private) intvariable(package private) Datevariable(package private) GregorianCalendarvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) Stringvariable(package private) intvariable(package private) Stringvariable(package private) intvariable(package private) Stringvariable(package private) intvariable(package private) File[]variable(package private) BufferedReader[]variable(package private) intvariable(package private) Patternvariable(package private) intvariable(package private) intvariable(package private) booleanvariable(package private) Matchervariable(package private) Patternvariable(package private) booleanvariable(package private) int[]variable(package private) booleanvariable(package private) booleanvariable(package private) booleanvariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) charvariable(package private) boolean[]variable(package private) booleanvariable(package private) intvariable(package private) Matchervariable(package private) bytevariable(package private) charvariable(package private) intvariable(package private) Stringvariable(package private) booleanvariable(package private) booleanvariable(package private) bytevariable(package private) booleanvariable(package private) Stringvariable(package private) intvariable(package private) intvariable(package private) booleanvariable(package private) bytevariable(package private) Patternvariable(package private) bytevariable(package private) charvariable(package private) Stringvariable(package private) booleanvariable(package private) bytevariable(package private) intvariable(package private) bytevariable(package private) Stringvariable(package private) intvariable(package private) charvariable(package private) String[]variable(package private) byte[]variable(package private) int[]variable(package private) byte[]variable(package private) String[]variable(package private) byte[]variable(package private) byte[]variable(package private) int[]variable(package private) byte[]variable(package private) charvariable(package private) intvariable(package private) bytevariable(package private) charvariable(package private) charvariable(package private) charvariable(package private) Stringvariable(package private) intvariable(package private) Stringvariable(package private) bytevariable(package private) intvariable(package private) booleanvariable(package private) booleanvariable(package private) booleanvariable(package private) booleanvariable(package private) intvariable(package private) intvariable(package private) int[]variable(package private) int[]variable(package private) String[]variable(package private) int[]variable(package private) byte[]variable(package private) int[]variable(package private) byte[]variable(package private) String[]variable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) Stringvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) Patternvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) longvariable(package private) intvariable(package private) Matchervariable(package private) Stringvariable(package private) Patternvariable(package private) intvariable(package private) Stringvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) int[]variable(package private) int[]variable(package private) int[]variable(package private) String[]variable(package private) int[]variable(package private) Stringvariable(package private) int[]variable(package private) int[]variable(package private) String[]variable(package private) int[]variable(package private) byte[]variable(package private) int[]variable(package private) byte[]variable(package private) String[]variable(package private) Stringvariable(package private) intvariable(package private) Stringvariable(package private) intvariable(package private) intvariable(package private) Stringvariable(package private) intvariable(package private) Stringvariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) Stringvariable(package private) bytevariable(package private) intvariable(package private) booleanvariable(package private) bytevariable(package private) booleanvariable(package private) booleanvariable(package private) booleanvariable(package private) booleanvariable(package private) booleanvariable(package private) int[]variable(package private) String[]variable(package private) String[]variable(package private) boolean[]variable(package private) int[]variable(package private) int[]variable(package private) int[]variable(package private) int[]variable(package private) int[]variable(package private) int[]variable(package private) int[]variable(package private) intvariable(package private) int[]variable(package private) String[]variable(package private) String[]variable(package private) int[]variable(package private) int[]variable(package private) int[]variable(package private) int[]variable(package private) int[]variable(package private) File[]variable(package private) BufferedReader[]variable(package private) int[]variable(package private) int[]variable(package private) int[]variable(package private) String[]variable(package private) int[]variable(package private) int[]variable(package private) int[]variable(package private) String[]variable(package private) int[]variable(package private) char[]variable(package private) int[]variable(package private) int[]variable(package private) int[]variable(package private) int[]variable(package private) String[]variable(package private) int[]variable(package private) Stringvariable(package private) intvariable(package private) Stringvariable(package private) intvariable(package private) booleanvariable(package private) String[]variable(package private) intvariable(package private) int[]variable(package private) int[]variable(package private) int[]variable(package private) int[]variable(package private) Stringvariable(package private) intvariable(package private) intvariable(package private) Stringvariable(package private) booleanvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) Stringvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) booleanvariable(package private) intvariable(package private) Stringvariable(package private) intvariable(package private) intvariable(package private) booleanvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) Stringvariable(package private) Stringvariable(package private) booleanvariable(package private) booleanvariable(package private) Stringvariable(package private) Stringvariable(package private) intvariable(package private) booleanvariable(package private) intvariable(package private) int[]variable(package private) intvariable(package private) intvariable(package private) int[]variable(package private) byte[]variable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) String[]variable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) Stringvariable(package private) booleanvariable(package private) intvariable(package private) Stringvariable(package private) booleanvariable(package private) Stringvariable(package private) boolean[]variable(package private) int[]variable(package private) String[]variable(package private) Stringvariable(package private) int[]variable(package private) booleanvariable(package private) Stringvariable(package private) byte[]variable(package private) byte[]variable(package private) File[]variable(package private) BufferedWriter[]variable(package private) intvariable(package private) Matchervariable(package private) Patternvariable(package private) byte[]variable(package private) int[]variable(package private) byte[]variable(package private) intvariable(package private) intvariable(package private) int[]variable(package private) int[]variable(package private) int[]variable(package private) intvariable(package private) Stringvariable(package private) Matchervariable(package private) Stringvariable(package private) Stringvariable(package private) Patternvariable(package private) intvariable(package private) Stringvariable(package private) intvariable(package private) bytevariable(package private) intvariable(package private) Stringvariable(package private) Stringvariable(package private) Stringvariable(package private) SimpleDateFormatvariable(package private) SimpleDateFormatvariable(package private) SimpleDateFormatvariable(package private) SimpleDateFormatvariable(package private) SimpleDateFormatvariable(package private) SimpleDateFormatvariable(package private) SimpleDateFormatvariable(package private) Stringvariable(package private) intvariable(package private) intvariable(package private) booleanvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) intvariable(package private) intvariable(package private) Stringvariable(package private) Stringvariable(package private) Stringvariable(package private) Patternvariable(package private) booleanvariable(package private) booleanvariable(package private) intvariable(package private) bytevariable(package private) Stringvariable(package private) intvariable(package private) intvariable(package private) bytevariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) bytevariable(package private) intvariable(package private) Stringvariable(package private) intvariable(package private) booleanvariable(package private) bytevariable(package private) intvariable(package private) Matchervariable(package private) Patternvariable(package private) Stringvariable(package private) Filevariable(package private) Stringvariable(package private) Stringvariable(package private) Stringvariable(package private) booleanvariable(package private) Filevariable(package private) longvariable(package private) longvariable(package private) longvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) longvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) Stringvariable(package private) booleanvariable(package private) tz390variable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) Matchervariable(package private) Stringvariable(package private) intvariable(package private) bytevariable(package private) Patternvariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) booleanvariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) booleanvariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) JTextAreavariable(package private) int[]variable(package private) intvariable(package private) String[]variable(package private) String[]variable(package private) intvariable(package private) intvariable(package private) intvariable(package private) boolean[]variable(package private) intvariable(package private) intvariable(package private) Stringvariable(package private) intvariable(package private) intvariable(package private) intvariable(package private) String[]variable(package private) intvariable(package private) intvariable(package private) intvariable(package private) boolean[]variable(package private) String[]variable(package private) short[]variable(package private) int[]variable(package private) int[]variable(package private) int[]variable(package private) int[]variable(package private) boolean[]variable(package private) byte[]variable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) bytevariable(package private) String[]variable -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate voidabort_error(int error, String msg) issue error msg to log with prefix and inc error totalprivate voidissue log_error and abort pseudo code mode due to pc errorprivate voidadd record to front or back of ainsert queue for copy insert at front in seq.private voidadd_gbl_set(String new_name, byte new_type, int new_size, boolean set_array) add gbl set variableprivate voidadd_gbl_sys(String sys_name, byte sys_type) add global system variablesprivate voidadd_lcl_key_index(int user_index) add lcl user_index entry based on lcl_key_text, lcl_key_hash, and lcl_key_index_last set by prior find_lcl_key_indexprivate intadd_lcl_set(String new_name, byte new_type, int new_size, boolean set_array) add lcl set variable not found by find_setprivate voidadd_lcl_sys(String sys_name, byte sys_type) add local set variableprivate voidadd macro file entry and set mac_name_index else abortprivate voidadd_mac_label(int mac_index, String mac_label, int lab_line) add macro label and check for duplicates during macro loadingprivate voidadd_zstrmac_key(String opcode, byte index) add hash indexed keys for ZSTRMAC opcodesprivate voidadjust_expand_inc(int var_loc) increase expansion increment to reduce overhead of repeated expansions.private voidalloc_set(byte alloc_set_type, int alloc_set_loc) allocate set scalar,array, or created set variables on first occurence.
Notes: Duplicates ignored and expand used to handle any subscript beyond first alloc.private StringbyteToBinaryString(byte x) Convert binary byte to length 8 binary string // #509private intcalc_dimension(String text, int start) return numeric array dimension > 0 else issue error and return 1private booleanparse set/aif/variable expression and return true if ok and set set exp_var_index to result Notes: If parse_set_mode then exit without error true/false indicating if set variable exists or not If var_replacement_mode, exit after retrieving first variable and before proceeding to next operator, and ignore var not found Always turn off parse_set_mode at exit Generate pseudo code for repeat executionsprivate intcalc_seta_exp(String text, int text_index) evaluate seta expressionprivate bytecalc_setb_exp(String text, int text_index) evaluate setb expressionprivate Stringcalc_setc_exp(String text, int text_index) evaluate setc expressionprivate voidcall_az390_pass_bal_line(String text_line) pass text_line to az390 and update the az390 copy of mz390_errorsprivate voidcall_mac()add macro to call stack If listcall option, add comment to bal process proto-type and set parms init mac_line_index to first macro statement Set macro label ordinary symbol type to 'M' if 'U'private voidscan for macro statement following final MEND ignoring commentsprivate voidcheck_setc_quotes(int tot_setc_args) if NOALLOW verify function has quoted string as first argument.private voidcheck for opcodes that update system variablesprivate voidissue error for any ACALL to undefined AENTRY routine.private voidcheck_undefined_labs(int mac_index) issue errors for any undefined macro labels.private voidclose_dat_file(int index) close specific dat fileprivate voidclose bal, pch, err, trmprivate voidclose_pch_file(int index) close specific pch fileprivate voidinit regular expression patterns and issue error if failureprivate voidcreate_mnote(int level, String text) create mnote on BAL and ERRprivate voidexec_aif()execute 1 or more AIF/AIFB tests and branch if true.private voidexecute macro operation (set,aif, ago, etc.) Note case index values must match mac_op_name array values.private voidexec_pc()move this mac line to most recently used entry and then execute pseudo code starting at pc_loc until pc_end entry foundprivate voidconvert int to binary string with leading zeros to make length 32private voidconvert int to character string of length 4 #509private voidconvert int to decimal string preceded by a plus or minus sign #509private voidconvert int to hex string of length 8 #509private voidadd top of stack value to prev.private voidexec computed ago branch using ago_seta_index ptr to gbla ago array: +0 = ptr to gblc label array if TRACEP else 0 +1 = maximum limit of ago index +2 = ago line index array for macro labels ago_index = current indexprivate voidperform logical and operation on stk varsprivate voidconvert binary string to intprivate voidconvert binary string to char stringprivate voidconvert binary string to decimal string preceded by plus or minus character #509private voidconvert binary string to hex stringprivate voidconvert 0-4 character string to intprivate voidconvert char string to binary stringprivate voidconvert char string to decimal string prefixed by plus or minus sign #509private voidconvert char string to hex stringprivate voidcompare equal (shared exp and pseudo code)private voidcompare greater than or equal (shared exp and pseudo code)private voidcompare greater than (shared exp and pseudo code)private voidcompare less than or equal (shared exp and pseudo code)private voidcompare less than (shared exp and pseudo code)private voidcompare not equal (shared exp and pseudo code)private voidconcatenate two variables on stackprivate voidconvert decimal string to intprivate voidconvert decimal string to binary string of length 32private voidconvert decimal string to char stringprivate voidconvert decimal string to hex stringprivate voidreturn dc length of string after reducing double quotes and ampersandsprivate voidreturn string with reduced quotes and ampersandsprivate voidremove start and ending quote if anyprivate voiddivide top of stack value into prev.private voiddouble quotes within stringprivate voidduplicate string on top of stack by value of top-1 countprivate voidreturn seta index of first character in str2 found in str1 on top of stackprivate voidput index of first occurance of second string within the first string on top of stackprivate voidreturn 1 if 1-32 binary digits string else 0; error if 0 digitsprivate voidif string 1-10 decimal digits <= 2147483647 return 1 else 0; error if 0 digitsprivate voidreturn 1 if string 1-8 hex digits else 0; error if 0 digitsprivate voidreturn 1 if symbol defined else 0private voidreplace string on stack with lower caseprivate voidmultiply top of stack value to prev.private voidperform logical not operation on stk varprivate voidperform logical or operation on stk varsprivate voidreplace top of stack with A'stack indicating if symbol defined in lookahead (shared by exp and pseudo code)private voidrepalce top of stack with D'sym = 1/0 indicating if defined as ordinary symbol yetprivate voidreturn I'sym integer valueprivate voidK'sym returns string lengthprivate voidL'sym returns symbol lengthprivate voidreplace top of stack with N'stack (shared by exp and pc)private voidreturn type of operator for O'sum A = assembler control operator (CSECT, EQU ETC) E = extended mnemonic (BH, BL, BER, ETC.) O = machine opcode M = macro defined S = macro found in sysmac dir U = unknownprivate voidreturn exponent attrivute of ordinary symbolprivate voidT'var/sym returns symbol typeprivate voidpush ordinary symbol abs value on stack else issue errorprivate voidpush var(set_sub) value on stack
Notes: Shared by exp and pcprivate voidreturn int value of assembler attribute for symbol defined via EQU 4th parmprivate voidreturn int value of symbol program attribute defined via EQU 5th parmprivate voidconvert int to signed decimal stringprivate voidshift left arithmeticprivate voidshift left logicalprivate voidshift right arithmeticprivate voidshift right logicalprivate voidexec_pc_store(byte op) exec store for storv, storvs, storvn, inc, and decprivate voidsub top of stack value from prev.private voidreplace setc value and sublist index on stack with caculated sublist.
Notes: Shared by exp and pcprivate voidreplace setc,arg1,arg2 on stack with subsubstring setcprivate voidperform unary compliment on stack valueprivate voidreplace string on stack with upper caseprivate voidconvert hex string to intprivate voidconvert hex string to binary stringprivate voidconvert hex string to char stringprivate voidconvert hex string to decimal string preceded by plus or minus signprivate voidperform logical xor operation on stk varsprivate voidwait for az390 to end and display total errors for both close files and exit to system or callerprivate voidexp_ago()branch to specified macro label or branch on index using list of labels Notes: For simple branch, pc_start is set to negative index of new line and no pc code required. For indexed branch, pc_op_ago opcode is generated with pc_seta pointing to GBLA array with the following: First entry is start of GBLC macro label array if TRACEP on else -1 if NOTRACEP.private intexp_ago_branch(int lab_index) return new_mac_line_index and set label_name for next ago target label.private voidappend var on top of stack to string varprivate voidcalled with var ptr and subscript on stack if subscripted set var replace stack var set ptr with subscripted set value if subscripted parm var update or replace stack var parm ptr with sublist parm value skip trailing .private voidperform compare EQ,GE,GT,LE,LT, or NEprivate voidconcatenate var to string on stackprivate charreturn next char in expression else terminatorprivate voidperform next exp action based on precedence of exp_next_op and exp_prev_op
Notes: If substring set prev_substring else reset after operation.private voidperform prefix operator replacing value on stack with result valueprivate voidpop current op on stackprivate voidput op on stackprivate voidconvert sdt in setc_value to seta_value and push on stack
Notes: Ordinary symbols are pushed as strings for use by prefix operators T', L' "*" pushes max_substring_lenprivate voidexp_push_string(String value) push string on stack as setcprivate voidpush var variable on stack if &var followed by ( then put var pointer on value stack and put ) subscript op on op stack
else push unscripted var value on value stack and skip trailing .private voidget next expression operator and push preceding variables on stack.private voidset op from exp_next_opprivate voidset exp_prev_op from stack or set to exp_start_op (same as exp_term_op) also set exp_prev_class and exp_prev_firstprivate voidset next token and op to exp_term_opprivate voidstart or end string or substring defining setc value for exp_stack
Note: if exp_prev_substring_op set then don't put null string on stackprivate voidreplace string, e1, e2 values with substringprivate voidexp_term()terminate expression returning value on stack if no errors
Notes: Don't return value if parse_mode Turn off pc_gen_expprivate voidexecute unary operator U+ or U-private intexpand_set(int expand_name_index, byte expand_type, byte expand_loc, int expand_sub) expand set arrayprivate booleanfind_gbl_set(String var_name, int var_sub) find gbl set variable else false also set var_name_index = -1 if not found set following globals if found: var_loc = var_lcl_loc or var_gbl_loc var_type = var_seta_type|var_setb_type|var_setc_type var_name_index = for lcl/gbl seta, setb, setc array set_sub = subscript seta_value|setb_value|setc_value seta_index|setb_index|setc_indexprivate intfind_kwd_parm(String kwd_name) find keywork parm and return index else -1private intfind_lcl_key_index(String user_key) return user_key_index for lcl user_key else -1 and set following for possible add_key_index: lcl_key_text = user_key lcl_key_hash = hash code for key lcl_key_index_last = last search entry lcl key types are: K: - key word macro parm B: - local macro label P: - postional macro parm L: - local set variable See tz390 with global find_key_index types FGMORSXprivate booleanfind_lcl_set(String var_name, int var_sub) find lcl variable or label else false also set var_name_index = -1 if not found set following globals if found: var_loc = var_lcl_loc or var_gbl_loc var_type = var_seta_type|var_setb_type|var_setc_type var_name_index = for lcl/gbl seta, setb, setc array set_sub = subscript seta_value|setb_value|setc_value seta_index|setb_index|setc_indexprivate intfind_mac_entry(String macro_name) return mac_name index if found else -1 Note load_mac adds entry with -2 index to prevent mult search for macros not found. If MFC option on, then instructions and assembler control statements will not be expanded as macros. Any non-conditional macro operator can be expanded via an inline macro that can be defined via COPY statement.private intfind_opcode_type(String opcode) set mac_opcode_index and return opcode type: -1 - not found in opcode table 0 - comment (no opcode) 1-100 - machine type 100-200 - assembler type 200+ - macro operation Notes: tz390 opcode table used to find opcode type. Return 0 for commentprivate booleanfind lcl or gbl set variable else false and set var_name_index = -1 if not found.private booleanfind parm or set variable and return true if found.private voidgen pushc or pusha if pending gen concat after pushc if pending
Notes: push emply setc if pendingprivate voidfree_pc_list(int head, int tail) free pc list starting at head and ending at tail
Notes: User must reset any other pointers to this list from pc_next or pc_startprivate voidgen_exp_pc(byte op) gen pc code for exp if pc_gen_expprivate voidgen_pc(byte op) gen pushv or pushvsprivate voidreturn mac_line with source line from AINSERT queue which may have continuationsprivate Stringread next mlc source line or next record from file specified in DDNAME=, DSNAME=, or pgmname.dat DDNAME= is extention to HLL assembler where external variable defines file to read for AREAD. DSNAME= is extention to HLL assembler where macro variable defines file to read for AREAD. Notes: Only DDNAME or DSNAME can be coded empty lines (CR,LF) returned as single space " " end of file returns 0 length string "" Options NOPRINT and NOSTMT ignoredprivate voidget set values from stack and pc_seta or pc_setc based on pc_parm_type.private Stringget_ddname_file_name(String ddname) verify ddname is defined as environment variable pointing to valid file and return full path else abortprivate voidSet seta/setb/setc_value from gbl set based on var_type, var_loc, var_name_index, and set_sub Set val_type = var_seta/setb/setc_typeprivate intget_int_from_string(String setc_text, int base) return integer from string using specified base Notes: return numeric value of string base 2, 10 or 16 If base 10, ignore trailing non digitsprivate intget_label_comma_index(String label_source) find and return index to comma after macro label else return -1private intget_label_index(String label_source) find macro label and return line index-1 else abortprivate voidSet seta/setb/setc_value from lcl set value using: var_type var_name_index set_sub and set val_type = val_seta/setb/setc_type Calc seta_index|setb_index|setc_index.private Stringreturn next source line from mac_file or AINSERT queue for use by AREADprivate voidget_pc(byte op) add new pc_op to list of pseudo codes for current mac_bal_line Set pc_loc to new pc_op entry Set pc_loc_prev to prev pc_loc else 0 Set pcl_start[mac_bal_line] to first Set pc_end[mac_bal_line] to last Set pc_next[pc_loc-1] to chain start to end First try to get next entry from pc_free list If none on free list, remove least recently used entry from pc_lru and add to pc_free list while and return first free entryprivate voidget_pc_created_var(int offset) get created var name from stack and update var fields in pseudo codeprivate booleanget_pc_loc_list(byte[] pc_op_list) load pc_loc_listprivate voidset pc seta or setc parms based on pc_var_type() and abort if errorprivate voidget_pc_store_sub(byte op) set store_sub and store_subscript based on op.
Note: If pc_op_storvs, then get store_sub from top of stack after store value has been removedprivate Stringget_pc_trace_val(byte type, int parm) return set &type_value &PARM ? = 1, 2 or 3 for valueprivate booleanSet var variables from pseudo code entry and update if required for new macro instance var_type val_type var_loc var_name_index (update for new mac) Return true if ok else false if not found
Notes: Update via find_set if new macro and local varprivate voidGet var value in seta/setb/setc_value using var_type, var_loc, var_name_index and set_sub Set val_type = var_seta/setb/setc_typeprivate voidget_set_target(byte alloc_set_type) set set store info form bal_label
Notes: Sets store_pc_op to storv, storvs, stord, or stords.private intget_seta_stack_value(int offset) return seta value of stk + offset without removingprivate voidget seta_value1 and 2 from top of stack and remove from stackprivate intget_seta_string_value(String text) return int value of string using symbol table value if found else numberic value else 0.private byteget_setb_stack_value(int offset) return setb value of stk + offset without removingprivate voidset setb_value1 and 2 from top of stackprivate Stringreturn setc string from top of stack and remove itprivate voidset setc_value1 and 2 from top of stack without removingprivate Stringget_sublist(String list, int sublist_index) parse list and return sublist requested or empty list incr sublist_count for each , at level 1private intget_sublist_count(String list) return number of parms in sublistprivate intget_sym_len(String symbol) return length for ordinary symbol if found else return 1private voidget_text_hex(String text) return up to 2-8 hex chars for 1-4 charprivate bytereturn val_type based on var_typeprivate booleanif not over max inc tot_exp_stk_var and init stk name index -1 else abort and return falseprivate voidinit large arrays with optional overides for sizeprivate voidparse proto-type to set pos and key parm initial valuesprivate voidadd global system variablesprivate voidinit_key_parm(String kwd_parm_name, String kwd_parm_value) add key work parm name and default valueprivate voidinit local system macro variablesprivate voidinit for mz390 calls to EQU/DS/DC processing routines during lookaheadprivate voidinit_mz390(String[] args, JTextArea log_text) initialize log routing set options open MLC and BAL buffered I/O filesprivate voidallocate pseudo code arrays
Notes: pc_start used to opt ago, gbl?, etc. Others not alloc if nopc option.private voidinit_pos_parm(String pos_parm_name) init positional parmprivate voidinsert &(acall_name)(parm#) SETC 'parm' for each parm in acall name(p1,p2,,pn)private voidinsert_acall_set(String line) insert acall parm created setc variables into MLCprivate voidinsert AINSERT logical record in front of current source line at mac_line indexprivate booleanis32BitBinaryInteger(String s, int base) Validate that a string represents a valid 32-bit binary integerprivate booleanCheck if string is all binary digitsprivate booleanCheck if string is 1-32 binary digitsprivate booleanCheck if string is 1-10 decimal digits having maximum value 2147483647 (Integer.MAX_VALUE)private booleanCheck if string is all decimal digitsprivate booleanisHexChar(char c) Check if character is a hexadecimal digitprivate booleanCheck if string is all hexadecimal digitsprivate booleanCheck if string is 1-8 hexadecimal digitsprivate booleanDetermine whether string is equal to the decimal digits representing one more than Integer.MAX_VALUE (2147483647+1)private booleanCheck if a string is of the form "B'1-32 binary digits'"private booleanCheck if a string is of the form "X'1-8 hexadecimal digits'"private booleanCheck if string 1-10 decimal digits, with possible leading sign, having value in range [Integer.MIN_VALUE = -2147483648, 2147483647 = Integer.MAX_VALUE]private booleanisUnaryMinusAtOffset(int offset) Determine whether exp_stk_op entry at top (most recently added) + offset is unary minusprivate voidget next mac_line from file else set mac_line nullprivate voidget next mac line from ainsert, file, or inline oncatenating continuation lines and parse mac line runcate continued lines at first ", " ead nested copy filesprivate voidget next source line to load or insert from nexted copy filesprivate voidload_mac()load macro from file or inline and set load_mac_name_index else abort with error load type 0 = MLC file no MACRO, no proto-type, end on END parse EXEC statement with space delimited parms and create exec macro parms load type 1 = MAC file MACRO, MEND, and verify proto-type name = file name load type 2 = inline macro MACRO, MEND, and proto-type defines macro name Return -2 if file not found Concatentate any continuations indicated by non-blank in position 72.private voidload it if found add macro entry or dummy entryprivate voidcheck ago and aif references during loadingprivate voidparse space delimited parms for exec sql cics or dli and replace with comma delimited parms for EXEC macro processing.
Notes: Use the proto_pattern to handle all valid macro assembler parm expressions including quoted strings with spaces.private voidDuring MLC or macro loading: Define macro labels .xxx If MLC lookahead, define ordinary symbol attribute and length if available using az390 DS, DC, and EQU processing services.private voidopen file for MLC or macro file else abort with errorprivate voidprocess proto-type during loading of MLC or macroprivate voidissue error msg to log with prefix and inc error total
Notes: If exp_replacement mode error ignore and return setc_value = null except for 208 SYSLIST substitution errorstatic voidmain is entry when executed from command line Create instance of mz390 class and pass parms to mz390 like z390 does.private intmz390_find_sym(String symbol) find ordinary symbol and return index else -1
Notes: return -1 if not opt_asm Force az390 to finish last bal and lock az390 until next bal while mz390 accesses symbol tableprivate voidSet trace_file_name Open BAL file if option BALprivate voidopen_load_file(String new_mac_name) open file for loading mac/copy fileprivate voidopen copy file specified in mac_parms Notes: Expand during MLC and macro loads Insert using AINSERT during execution after var substitution on name Issue error on copy file not found if not loading MLC/MACprivate voidopt_gen_pc_comp(byte op) convert pusha or pushc with self defining term into op with sdt else flush and gen op with 2 stack valuesprivate voidopt_gen_pc_concat(byte op) optimize concatenation of push? by checking if prev op was pushc and combining to single push? where possible.private voidset pending pusha after flushing any pending pc opcodesprivate voidset pending pushc after flushing any pending pc opcodesprivate voidopt_gen_pc_seta(byte op) convert pusha to op with seta sdt arg.private voidopt_gen_pc_setc(byte op) convert pushc to op with setc sdt arg.private voidopt_pcl()optimize pc code list prior to first execution and reset pc_req_opt: PUSHV,ADD 1,STORV = INC PUSHV,SUB 1,STORV = DECprivate voidSubstitute any macro variables found Set bal_label, bal_op, bal_parmsprivate voidparse mac line into label, op, parms open copybook file if found if cics insert prolog and epilogprivate booleanparse_set_var(String text, int text_index) parse scalar, subscripted, or created set variable with or without subscript using expression parser in parse_set_var_mode to set: exp_parse_set_name exp_parse_set_name_index exp_parse_set_type (seta/setb/setc) exp_parse_set_loc (lcl/gbl) exp_parse_set_sub exp_parse_set_created - true/false exp_parse_set_subscript - true/false and return true if it exists or false if not.
Notes: If var found but exp_parse_set_name is null, then issue error for parms Used by alloc set with alloc_set_mode to get name and sub for allocation Used by store to dynamically alloc undefined name as lclprivate voidinsert record in in queueprivate voidexecute mlc as open code macro expanding any macros found and outputing all model statements to BAL file after substitution of any parms and macro variables.private voidprocess_mnote(int level, String msg) put mnote message on BAL and ERR filesvoidprocess_mz390(String[] args, JTextArea log_text) expand macro MLC source file to BAL source file Note this may be called directly from z390 GUI or from main when mz370 run from windows command line.private voidpunch record on PCH and list on PRN.private voidpush scalar var on stack (shared by exp and pseudo code)private voidpush_sym()push current exp_token symbol on stack as setc for use by prefix operators T', L' else get sym_val else 0.private voidput_bal_line(String text_line) strip .mac labels if ASM and not inline macro code set symbol attr if mfc optional reformatting optional pass to az390 optional write to BALprivate voidput_continued_text(BufferedWriter file_buff, String text) write text to buffered file with continuations if > 71 characters.
Notes: Used by put_bal_line and Used by put_pch_line if extended FORMAT option specified.private voiddisplay mz390 version, timestamp, and copyright if running standaloneprivate voidif LISTCALL gen listcall comment on BAL before load or call RPI 746 Notes: If LISTCALL and MCALL, all calls are listed on PRNprivate voidWrite message to z390_log_text or console if running standaloneprivate voidput_pch_line(String pch_parms) write PUNCH 'text' to pch file If ,DDNAME= follows 'text' write to specified file instead of default filename.pch If ,DSNAME= follows 'text' write to specified file instead of default filename.pch If FORMAT specified as extended option on PUNCH, the output will format continuations like MLCprivate voidadd seta_value to stackprivate voidadd setb_value to stackprivate voidadd setc_value to stackprivate voidput_stat_line(String msg) routine statistics line to BAL or STATS(file)private voidDisplay mz390 statistics on STA file if option STATS If asm pass file names and merge file errors from mz390 and lookahead phase of az390 for use in file xref at end of PRN put_stats called from mz390 to sync with mz390 put_stats on STA and to include total mz and az errors on TRM Notes: Use tz390.put_stat_line to route line to end of BAL or stat(file) optionprivate Stringreformat text_line from tz390.split at 10 and operands at 16 if possibleprivate Stringreplace_quoted_text_vars(String text, boolean reduce) replace variables in MNOTE or PUNCH 'text' after verifying single quote text okprivate Stringreplace_vars(String text, boolean reduce, boolean check_label) Replace all variables in text and set var_replacement if changed if reduce then replace && with & and '' with ' If check_label then verify label field valid Notes: Per RPI 241 ignore undefined &vars and let az390 report error if not in comment Per RPI 502 remove undefined var which may cause null parm error in az390 Replace null single parm with comma if comments followprivate voidreuse_pc(int index) reuse pseudo code list at mac line indexprivate voidset_aread_punch_options(String parms, String file_dir, String file_type) set ap_file_index and ap_file_name from the following AREAD or PUNCH parms: DDNAME= environment variable to get file name DSNAME= explicit file name string DSN= epxlicit file name string (alias) ID=n file index 0-9 (0 is default) and set ap_file_io if file I/O requested Set AREAD option flags for NOPRINT, NOSTMT, CLOCKB, CLOCKD Set PUNCH option FORMATprivate voidset positional and key word parm values from macro call statement
Note mult commas force null pos parmsprivate voidset_compare(boolean compare_result) add true or false (setb value) to stackprivate voidset default ICTL for macro/copyprivate voidset_ictl()set ICTL start, end, cont columnsprivate voidset mac_line_index to next insert for AINSERT or dynamic COPY else abortprivate booleanset_key_parm(String key, String key_parm) set keyword parmprivate Stringset_length_80(String text) set AREAD and PUNCH text lengths to 80 for HLASM compatibility if ASM and NOALLOWprivate voidif ASM, set symbol type and length during MLC macro loading in lookahead mode
Notes: Called during macro load to define all ordinary symbols in open code allowing forward reference to type and length if available during macro execution.private voidfind/add file name and set cur_mac_file_numprivate voidset mlc_eof and notify az390 to wrapup if runningprivate voidset_pos_parm(String pos_parm) init positional parm and increment cur_pos_parm set byprivate voidset_sym_macro_attr(String sym_lab) set macro call label ordinary symbol type to 'M' if currently undefinedprivate voidset_sys_dsn_mem_vol(String file_name) set sys_dsn, sys__mem, and sys_vol from file nameprivate intcompare setc_value1 and setc_value2 in EBCDIC and return -1, 0, or 1 for low, equal, high
Notes: If length not equal, the shorter length operand is treated as lowerprivate intshiftLeftArithmetic(int x, int n) Implement HLASM LangRef SLA built-in function
Notes: Only the low 6 bits of n are used.private intshiftLeftArithmeticSignMask(int n) Create mask containing n+1 one bits in the leftmost position // #509private voidskip next tokenprivate voidsplit bal_line into bal_label, bal_op, and bal_parmsprivate voidsave mac_line during input for use by log_error update &SYSSTMTprivate voidstore_seta_value(byte op) store seta_value or inc/dec at store loc (shared by exp and pc)private voidstore setb_value at store loc (shared by exp and pc)private voidstore setc string at store loc (shared by exp and pc)private booleanstring_numeric(String text) return true if string or (string) numericprivate voidskip line in trace if not in suppressed copy codeprivate voidtrace_pc()trace pseudo code entry gen or execprivate voidupdate_mac_key_index(int index, String name) add or update macro key indexprivate voidupdate mru with current mac_line_indexprivate booleanzsm_acs_chk_val(int val) limit check AWHEN value and return false if not 0-255.private booleanprocess AWHEN index value parms and set current block # in value block array.private booleanfind ACALL name or add new name with ACALL_ prefix and set zsm_acall_index else false and set &name parms else nullprivate booleanset zsm_aif_exp to (...) else return falseprivate voidGenerate ZSTRMAC structured macro code lines with same line number as original statement in zsm_lines and set zsm_line_tot
-
Field Details
-
max_exp_stk
int max_exp_stkvariable -
max_substring_len
int max_substring_lenvariable -
max_ap_files
int max_ap_filesvariable -
max_lcl_key_root
int max_lcl_key_rootvariable -
max_mac_dec_digits
int max_mac_dec_digitsvariable -
max_mac_bin_digits
int max_mac_bin_digitsvariable -
max_mac_hex_digits
int max_mac_hex_digitsvariable -
max_pos_int_plus_one
String max_pos_int_plus_onevariable -
tz390
tz390 tz390variable -
az390
az390 az390variable -
msg_id
String msg_idvariable -
trace_id
String trace_idvariable -
mac_branch
boolean mac_branchvariable -
mz390_rc
int mz390_rcvariable -
mz390_errors
int mz390_errorsvariable -
mz390_recursive_abort
boolean mz390_recursive_abortvariable -
mac_abort
boolean mac_abortvariable -
batch_asm_error
boolean batch_asm_errorvariable -
cur_date
Date cur_datevariable -
cur_date_cal
GregorianCalendar cur_date_calvariable -
tod_start
long tod_startvariable -
tod_end
long tod_endvariable -
tot_msec
long tot_msecvariable -
ins_rate
long ins_ratevariable -
log_to_bal
boolean log_to_balvariable -
tot_bal_line
int tot_bal_linevariable -
bal_eof
boolean bal_eofvariable -
tot_mnote_errors
int tot_mnote_errorsvariable -
tot_mnote_warning
int tot_mnote_warningvariable -
hwm_mnote_level
int hwm_mnote_levelvariable -
bal_text
String bal_textvariable -
bal_text_index0
int bal_text_index0variable -
bal_text_index1
int bal_text_index1variable -
bal_text_index2
int bal_text_index2variable -
tot_macros
int tot_macrosvariable -
tot_mac_ins
int tot_mac_insvariable -
tot_mac_load
int tot_mac_loadvariable -
tot_mac_call
int tot_mac_callvariable -
tot_mac_copy
int tot_mac_copyvariable -
mlc_line_end
int mlc_line_endvariable -
bal_file
File bal_filevariable -
temp_file
File temp_filevariable -
bal_file_buff
BufferedWriter bal_file_buffvariable -
aread_op
boolean aread_opvariable -
tot_aread_io
int tot_aread_iovariable -
tot_punch_io
int tot_punch_iovariable -
ap_file_index
int ap_file_indexvariable -
ap_file_name
String ap_file_namevariable -
ap_format
boolean ap_formatvariable -
ap_noprint
boolean ap_noprintvariable -
ap_nostmt
boolean ap_nostmtvariable -
ap_clockb
boolean ap_clockbvariable -
ap_clockd
boolean ap_clockdvariable -
ap_file_io
boolean ap_file_iovariable -
dat_file_index
int dat_file_indexvariable -
pch_file_index
int pch_file_indexvariable -
dat_file
File[] dat_filevariable -
dat_file_buff
BufferedReader[] dat_file_buffvariable -
pch_file
File[] pch_filevariable -
pch_file_buff
BufferedWriter[] pch_file_buffvariable -
bal_line
String bal_linevariable -
bal_label
String bal_labelvariable -
bal_op
String bal_opvariable -
bal_comments
String bal_commentsvariable -
save_bal_op
String save_bal_opvariable -
save_opsyn_index
int save_opsyn_indexvariable -
ago_index
int ago_indexvariable -
ago_line_index
int ago_line_indexvariable -
ago_lab_index
int ago_lab_indexvariable -
ago_gbla_index
int ago_gbla_indexvariable -
ago_gblc_index
int ago_gblc_indexvariable -
aif_op
boolean aif_opvariable -
bal_op_ok
boolean bal_op_okvariable -
bal_parms
String bal_parmsvariable -
mlc_eof
boolean mlc_eofvariable -
end_found
boolean end_foundvariable -
actr_limit
int actr_limitvariable -
actr_count
int actr_countvariable -
sdf_sysclock
SimpleDateFormat sdf_sysclockvariable -
sdf_sysdatc
SimpleDateFormat sdf_sysdatcvariable -
sdf_sysdate
SimpleDateFormat sdf_sysdatevariable -
sdf_sysdate_bs2000
SimpleDateFormat sdf_sysdate_bs2000variable -
sdf_systime
SimpleDateFormat sdf_systimevariable -
sdf_systime_bs2000
SimpleDateFormat sdf_systime_bs2000variable -
sdf_systime_clockd
SimpleDateFormat sdf_systime_clockdvariable -
log_tod
boolean log_todvariable -
z390_log_text
JTextArea z390_log_textvariable -
cur_ainsert
int cur_ainsertvariable -
tot_ainsert
int tot_ainsertvariable -
last_ainsert
int last_ainsertvariable -
ainsert_queue
LinkedList<String> ainsert_queuevariable -
last_seq
String last_seqvariable -
cur_seq
String cur_seqvariable -
tod_time_limit
long tod_time_limitvariable -
next_time_ins
int next_time_insvariable -
next_time_check
int next_time_checkvariable -
cur_mac_file_path
String cur_mac_file_pathvariable -
cur_mac_file
int cur_mac_filevariable -
dynamic_mac_file
int dynamic_mac_filevariable -
dynamic_copy_file
int dynamic_copy_filevariable -
ainsert_copy
boolean ainsert_copyvariable -
ainsert_source
boolean ainsert_sourcevariable -
ainsert_copy_level
int ainsert_copy_levelvariable -
ainsert_copy_index
int ainsert_copy_indexvariable -
ainsert_back
boolean ainsert_backvariable -
mac_file
File[] mac_filevariable -
mac_file_buff
BufferedReader[] mac_file_buffvariable -
mac_file_cur_file_num
int[] mac_file_cur_file_numvariable -
mac_file_cur_line_num
int[] mac_file_cur_line_numvariable -
mac_file_errors
int[] mac_file_errorsvariable -
mac_ictl_start
int[] mac_ictl_startvariable -
mac_ictl_end
int[] mac_ictl_endvariable -
mac_ictl_cont
int[] mac_ictl_contvariable -
cur_mac_line_num
int cur_mac_line_numvariable -
cur_mac_file_num
int cur_mac_file_numvariable -
tot_get_mac
int tot_get_macvariable -
mac_mend_eof
boolean mac_mend_eofvariable -
mac_line
String mac_linevariable -
mac_label
String mac_labelvariable -
mac_op
String mac_opvariable -
mac_opcode_index
int mac_opcode_indexvariable -
mac_parms
String mac_parmsvariable -
proto_label
String proto_labelvariable -
proto_pos_parm_tot
int proto_pos_parm_totvariable -
proto_kwd_parm_tot
int proto_kwd_parm_totvariable -
proto_op
String proto_opvariable -
proto_parms
String proto_parmsvariable -
parm_name
String parm_namevariable -
parm_value
String parm_valuevariable -
cics_first_dsa_dsect
boolean cics_first_dsa_dsectvariable -
cics_first_csect
boolean cics_first_csectvariable -
cics_first_end
boolean cics_first_endvariable -
zsm_line_index
int zsm_line_indexvariable -
zsm_line_tot
int zsm_line_totvariable -
max_zsm_lines
int max_zsm_linesvariable -
zsm_gen_line
String[] zsm_gen_linevariable -
zsm_lvl
int zsm_lvlvariable -
max_zsm_lvl
int max_zsm_lvlvariable -
zsm_lvl_type
byte[] zsm_lvl_typevariable -
zsm_type_aelse
byte zsm_type_aelsevariable -
zsm_type_aelseif
byte zsm_type_aelseifvariable -
zsm_type_aend
byte zsm_type_aendvariable -
zsm_type_aentry
byte zsm_type_aentryvariable -
zsm_type_aexit
byte zsm_type_aexitvariable -
zsm_type_aif
byte zsm_type_aifvariable -
zsm_type_acall
byte zsm_type_acallvariable -
zsm_type_acase
byte zsm_type_acasevariable -
zsm_type_awhen
byte zsm_type_awhenvariable -
zsm_type_auntil
byte zsm_type_auntilvariable -
zsm_type_awhile
byte zsm_type_awhilevariable -
zsm_type_acallprm
byte zsm_type_acallprmvariable -
zsm_type_pfx
String[] zsm_type_pfxvariable -
zsm_lvl_tcnt
int[] zsm_lvl_tcntvariable -
zsm_lvl_aelse
boolean[] zsm_lvl_aelsevariable -
zsm_aif_tot
int zsm_aif_totvariable -
zsm_acall_tot
int zsm_acall_totvariable -
zsm_aentry_tot
int zsm_aentry_totvariable -
zsm_acase_tot
int zsm_acase_totvariable -
zsm_awhile_tot
int zsm_awhile_totvariable -
zsm_auntil_tot
int zsm_auntil_totvariable -
zsm_acallprm_tot
int zsm_acallprm_totvariable -
zsm_lvl_bcnt
int[] zsm_lvl_bcntvariable -
zsm_lvl_tend
boolean[] zsm_lvl_tendvariable -
zsm_lvl_ase_ago
String[] zsm_lvl_ase_agovariable -
zsm_lvl_ase_fst
int[] zsm_lvl_ase_fstvariable -
zsm_lvl_ase_lst
int[] zsm_lvl_ase_lstvariable -
zsm_lvl_ase_blk
short[] zsm_lvl_ase_blkvariable -
zsm_aif_exp
String zsm_aif_expvariable -
zsm_acall_index
int zsm_acall_indexvariable -
zsm_aentry_name_tot
int zsm_aentry_name_totvariable -
max_zsm_aentry_name
int max_zsm_aentry_namevariable -
zsm_acall_name
String[] zsm_acall_namevariable -
zsm_acall_parm
String[] zsm_acall_parmvariable -
acall_name
String acall_namevariable -
acall_parm
String acall_parmvariable -
zsm_acall_cnt
int[] zsm_acall_cntvariable -
zsm_aentry_def
boolean[] zsm_aentry_defvariable -
cur_mac_name
String cur_mac_namevariable -
mac_name_index
int mac_name_indexvariable -
mac_last_find_index
int mac_last_find_indexvariable -
tot_ins
int tot_insvariable -
tot_mac_name
int tot_mac_namevariable -
load_macro_mend_level
int load_macro_mend_levelvariable -
macro_op_found
boolean macro_op_foundvariable -
loading_mac
boolean loading_macvariable -
load_proto_type
boolean load_proto_typevariable -
load_mac_inline_end
int load_mac_inline_endvariable -
find_mac_name_index
int find_mac_name_indexvariable -
load_mac_name_index
int load_mac_name_indexvariable -
load_type
byte load_typevariable -
load_mlc_file
byte load_mlc_filevariable -
load_mac_file
byte load_mac_filevariable -
load_mac_inline
byte load_mac_inlinevariable -
load_mac_exec
byte load_mac_execvariable -
load_proto_index
int load_proto_indexvariable -
load_macro_name
String load_macro_namevariable -
load_file_name
String load_file_namevariable -
mac_name
String[] mac_namevariable -
mac_name_line_start
int[] mac_name_line_startvariable -
mac_name_line_end
int[] mac_name_line_endvariable -
mac_name_lab_start
int[] mac_name_lab_startvariable -
mac_name_lab_end
int[] mac_name_lab_endvariable -
old_mac_line_index
int old_mac_line_indexvariable -
new_mac_line_index
int new_mac_line_indexvariable -
mac_line_index
int mac_line_indexvariable -
bal_xref_index
int bal_xref_indexvariable -
tot_mac_line
int tot_mac_linevariable -
mac_file_line
String[] mac_file_linevariable -
mac_file_line_num
int[] mac_file_line_numvariable -
mac_file_num
int[] mac_file_numvariable -
mac_file_next_line
int[] mac_file_next_linevariable -
mac_file_prev_line
int[] mac_file_prev_linevariable -
tot_mac_file_name
int tot_mac_file_namevariable -
mac_file_path
String[] mac_file_pathvariable -
mac_file_type
char[] mac_file_typevariable -
skip_store
boolean skip_storevariable -
tot_mac_lab
int tot_mac_labvariable -
mac_lab_name
String[] mac_lab_namevariable -
mac_lab_index
int[] mac_lab_indexvariable -
mac_lab_num
int[] mac_lab_numvariable -
tot_expand
int tot_expandvariable -
expand_inc
int expand_incvariable -
mac_call_level
int mac_call_levelvariable -
mac_call_name_index
int[] mac_call_name_indexvariable -
mac_call_return
int[] mac_call_returnvariable -
mac_call_sysm_sev
int[] mac_call_sysm_sevvariable -
mac_call_actr
int[] mac_call_actrvariable -
mac_call_sysndx
int[] mac_call_sysndxvariable -
mac_call_pos_start
int[] mac_call_pos_startvariable -
mac_call_pos_tot
int[] mac_call_pos_totvariable -
mac_call_kwd_start
int[] mac_call_kwd_startvariable -
mac_call_lcl_name_start
int[] mac_call_lcl_name_startvariable -
mac_call_lcl_seta_start
int[] mac_call_lcl_seta_startvariable -
mac_call_lcl_setb_start
int[] mac_call_lcl_setb_startvariable -
mac_call_lcl_setc_start
int[] mac_call_lcl_setc_startvariable -
mac_call_lcl_key_start
int[] mac_call_lcl_key_startvariable -
mac_call_lcl_key_root
int[] mac_call_lcl_key_rootvariable -
var_pattern
Pattern var_patternvariable -
var_match
Matcher var_matchvariable -
proto_pattern
Pattern proto_patternvariable -
proto_match
Matcher proto_matchvariable -
exp_pattern
Pattern exp_patternvariable -
exp_match
Matcher exp_matchvariable -
pch_pattern
Pattern pch_patternvariable -
pch_match
Matcher pch_matchvariable -
label_pattern
Pattern label_patternvariable -
label_match
Matcher label_matchvariable -
label_name
String label_namevariable -
symbol_pattern
Pattern symbol_patternvariable -
symbol_match
Matcher symbol_matchvariable -
exec_pattern
Pattern exec_patternvariable -
exec_match
Matcher exec_matchvariable -
signedDecimalPattern
Pattern signedDecimalPatternvariable -
binDigitsPattern
Pattern binDigitsPatternvariable -
decDigitsPattern
Pattern decDigitsPatternvariable -
hexDigitsPattern
Pattern hexDigitsPatternvariable -
label_comma_index
int label_comma_indexvariable -
sublist_count
int sublist_countvariable -
tot_pos_parm
int tot_pos_parmvariable -
cur_pos_parm
int cur_pos_parmvariable -
tot_kwd_parm
int tot_kwd_parmvariable -
hwm_pos_parm
int hwm_pos_parmvariable -
hwm_kwd_parm
int hwm_kwd_parmvariable -
mac_call_pos_name
String[] mac_call_pos_namevariable -
mac_call_pos_parm
String[] mac_call_pos_parmvariable -
mac_call_kwd_name
String[] mac_call_kwd_namevariable -
mac_call_kwd_parm
String[] mac_call_kwd_parmvariable -
mac_call_kwd_set
boolean[] mac_call_kwd_setvariable -
val_seta_type
byte val_seta_typevariable -
val_setb_type
byte val_setb_typevariable -
val_setc_type
byte val_setc_typevariable -
var_lcl_loc
byte var_lcl_locvariable -
var_gbl_loc
byte var_gbl_locvariable -
var_pos_loc
byte var_pos_locvariable -
var_kw_loc
byte var_kw_locvariable -
var_syslist_loc
byte var_syslist_locvariable -
var_sysalist_loc
byte var_sysalist_locvariable -
var_seta_type
byte var_seta_typevariable -
var_setb_type
byte var_setb_typevariable -
var_setc_type
byte var_setc_typevariable -
var_parm_type
byte var_parm_typevariable -
var_subscript_type
byte var_subscript_typevariable -
var_sublist_type
byte var_sublist_typevariable -
var_pc_seta_stack_type
byte var_pc_seta_stack_typevariable -
var_pc_seta_sdt_type
byte var_pc_seta_sdt_typevariable -
var_pc_setb_stack_type
byte var_pc_setb_stack_typevariable -
var_pc_setb_sdt_type
byte var_pc_setb_sdt_typevariable -
var_pc_setc_stack_type
byte var_pc_setc_stack_typevariable -
var_pc_setc_sdt_type
byte var_pc_setc_sdt_typevariable -
tot_lcl_name
int tot_lcl_namevariable -
tot_lcl_seta
int tot_lcl_setavariable -
tot_lcl_setb
int tot_lcl_setbvariable -
tot_lcl_setc
int tot_lcl_setcvariable -
hwm_lcl_name
int hwm_lcl_namevariable -
hwm_lcl_seta
int hwm_lcl_setavariable -
hwm_lcl_setb
int hwm_lcl_setbvariable -
hwm_lcl_setc
int hwm_lcl_setcvariable -
sysinit_done
boolean sysinit_donevariable -
lcl_sysndx
int lcl_sysndxvariable -
lcl_sysect
String lcl_sysectvariable -
lcl_sysloc
String lcl_syslocvariable -
lcl_sysstyp
String lcl_sysstypvariable -
lcl_sysect_setc_index
int lcl_sysect_setc_indexvariable -
lcl_sysloc_setc_index
int lcl_sysloc_setc_indexvariable -
lcl_sysstyp_setc_index
int lcl_sysstyp_setc_indexvariable -
lcl_set_name
String[] lcl_set_namevariable -
lcl_set_type
byte[] lcl_set_typevariable -
lcl_set_start
int[] lcl_set_startvariable -
lcl_set_high
int[] lcl_set_highvariable -
lcl_set_end
int[] lcl_set_endvariable -
lcl_seta
int[] lcl_setavariable -
lcl_setb
byte[] lcl_setbvariable -
lcl_setc
String[] lcl_setcvariable -
var_subscript_calc
boolean var_subscript_calcvariable -
var_set_array
boolean var_set_arrayvariable -
var_name
String var_namevariable -
var_name_index
int var_name_indexvariable -
var_loc
byte var_locvariable -
var_type
byte var_typevariable -
set_size
int set_sizevariable -
seta_index
int seta_indexvariable -
setb_index
int setb_indexvariable -
setc_index
int setc_indexvariable -
store_name
String store_namevariable -
store_name_index
int store_name_indexvariable -
store_inc
int store_incvariable -
store_loc
byte store_locvariable -
store_type
byte store_typevariable -
store_seta_value
int store_seta_valuevariable -
store_setb_value
byte store_setb_valuevariable -
store_setc_value
String store_setc_valuevariable -
store_pc_op
byte store_pc_opvariable -
exec_pc_op
boolean exec_pc_opvariable -
tracem_pc_op
boolean tracem_pc_opvariable -
store_subscript
boolean store_subscriptvariable -
store_created
boolean store_createdvariable -
store_sub
int store_subvariable -
store_seta_index
int store_seta_indexvariable -
store_setb_index
int store_setb_indexvariable -
store_setc_index
int store_setc_indexvariable -
store_pc_start
int store_pc_startvariable -
store_pc_last
int store_pc_lastvariable -
set_name
String set_namevariable -
set_sub
int set_subvariable -
set_subscript
boolean set_subscriptvariable -
seta_value
int seta_valuevariable -
setb_value
byte setb_valuevariable -
setc_value
String setc_valuevariable -
save_setc_value
String save_setc_valuevariable -
save_setc_value1
String save_setc_value1variable -
save_setc_value2
String save_setc_value2variable -
save_pc_parm_type
byte save_pc_parm_typevariable -
save_seta_value
int save_seta_valuevariable -
setc_len
int setc_lenvariable -
gbl_sysclock_index
int gbl_sysclock_indexvariable -
gbl_sysmac_index
int gbl_sysmac_indexvariable -
gbl_sysmac
String gbl_sysmacvariable -
gbl_syslib_index
int gbl_syslib_indexvariable -
gbl_sysm_hsev_index
int gbl_sysm_hsev_indexvariable -
cur_sysm_hsev
int cur_sysm_hsevvariable -
gbl_sysm_sev_index
int gbl_sysm_sev_indexvariable -
gbl_sysstmt_index
int gbl_sysstmt_indexvariable -
gbl_systrace_index
int gbl_systrace_indexvariable -
sys_file
File sys_filevariable -
sys_job
String sys_jobvariable -
sys_dsn
String sys_dsnvariable -
sys_mem
String sys_memvariable -
sys_vol
String sys_volvariable -
gbl_syszvsam
int gbl_syszvsamvariable -
tot_gbl_name
int tot_gbl_namevariable -
tot_gbl_seta
int tot_gbl_setavariable -
tot_gbl_setb
int tot_gbl_setbvariable -
tot_gbl_setc
int tot_gbl_setcvariable -
gbl_set_name
String[] gbl_set_namevariable -
gbl_set_type
byte[] gbl_set_typevariable -
gbl_set_start
int[] gbl_set_startvariable -
gbl_set_high
int[] gbl_set_highvariable -
gbl_set_end
int[] gbl_set_endvariable -
gbl_seta
int[] gbl_setavariable -
gbl_setb
byte[] gbl_setbvariable -
gbl_setc
String[] gbl_setcvariable -
mac_op_type
int mac_op_typevariable -
max_lcl_key_tab
int max_lcl_key_tabvariable -
tot_lcl_key_tab
int tot_lcl_key_tabvariable -
cur_lcl_key_root
int cur_lcl_key_rootvariable -
lcl_key_text
String lcl_key_textvariable -
lcl_key_index
int lcl_key_indexvariable -
lcl_key_index_last
int lcl_key_index_lastvariable -
lcl_key_hash
int lcl_key_hashvariable -
lcl_key_tab_key
String[] lcl_key_tab_keyvariable -
lcl_key_tab_hash
int[] lcl_key_tab_hashvariable -
lcl_key_tab_index
int[] lcl_key_tab_indexvariable -
lcl_key_tab_low
int[] lcl_key_tab_lowvariable -
lcl_key_tab_high
int[] lcl_key_tab_highvariable -
asc_space_char
char asc_space_charvariable -
exp_text
String exp_textvariable -
exp_text_len
int exp_text_lenvariable -
exp_level
int exp_levelvariable -
exp_created_var
boolean[] exp_created_varvariable -
exp_end
boolean exp_endvariable -
exp_ok
boolean exp_okvariable -
exp_term_op
char exp_term_opvariable -
exp_start_op
char exp_start_opvariable -
exp_string_op
char exp_string_opvariable -
exp_string_var
int exp_string_varvariable -
exp_create_set_op
char exp_create_set_opvariable -
exp_var_replacement_mode
boolean exp_var_replacement_modevariable -
exp_var_replacement_change
boolean exp_var_replacement_changevariable -
exp_alloc_set_mode
boolean exp_alloc_set_modevariable -
exp_parse_set_mode
boolean exp_parse_set_modevariable -
exp_alloc_set_created
boolean exp_alloc_set_createdvariable -
alloc_size
int alloc_sizevariable -
min_alloc_size
int min_alloc_sizevariable -
exp_parse_set_type
byte exp_parse_set_typevariable -
exp_parse_set_loc
byte exp_parse_set_locvariable -
exp_parse_set_name
String exp_parse_set_namevariable -
exp_parse_set_subscript
boolean exp_parse_set_subscriptvariable -
exp_parse_set_created
boolean exp_parse_set_createdvariable -
exp_parse_set_sub
int exp_parse_set_subvariable -
exp_parse_set_name_index
int exp_parse_set_name_indexvariable -
exp_sublst_op
byte exp_sublst_opvariable -
exp_substring_op
char exp_substring_opvariable -
exp_subscript_op
char exp_subscript_opvariable -
exp_start_index
int exp_start_indexvariable -
exp_next_index
int exp_next_indexvariable -
exp_type
byte exp_typevariable -
exp_seta
int exp_setavariable -
exp_setb
byte exp_setbvariable -
exp_setc
String exp_setcvariable -
exp_set_compare
byte exp_set_comparevariable -
seta_value1
int seta_value1variable -
seta_value2
int seta_value2variable -
setb_value1
byte setb_value1variable -
setb_value2
byte setb_value2variable -
setc_value1
String setc_value1variable -
setc_value2
String setc_value2variable -
val_type
byte val_typevariable -
val_type1
byte val_type1variable -
val_type2
byte val_type2variable -
exp_token
String exp_tokenvariable -
exp_prev_op
String exp_prev_opvariable -
exp_prev_substring
boolean exp_prev_substringvariable -
exp_prev_first
char exp_prev_firstvariable -
exp_prev_class
byte exp_prev_classvariable -
exp_next_first
char exp_next_firstvariable -
exp_next_class
byte exp_next_classvariable -
exp_var_index
int exp_var_indexvariable -
exp_var_pushed
boolean exp_var_pushedvariable -
exp_var_last
boolean exp_var_lastvariable -
tot_exp_stk_var
int tot_exp_stk_varvariable -
tot_exp_stk_op
int tot_exp_stk_opvariable -
exp_stk_val_type
byte[] exp_stk_val_typevariable -
exp_stk_seta
int[] exp_stk_setavariable -
exp_stk_setb
byte[] exp_stk_setbvariable -
exp_stk_setc
String[] exp_stk_setcvariable -
exp_stk_var_type
byte[] exp_stk_var_typevariable -
exp_stk_var_loc
byte[] exp_stk_var_locvariable -
exp_stk_var_name_index
int[] exp_stk_var_name_indexvariable -
exp_next_op
String exp_next_opvariable -
exp_check_prev_op
boolean exp_check_prev_opvariable -
exp_stk_op
String[] exp_stk_opvariable -
exp_stk_op_class
byte[] exp_stk_op_classvariable -
exp_class_add_sub
byte exp_class_add_subvariable -
exp_class_mpy_div
byte exp_class_mpy_divvariable -
exp_class_open
byte exp_class_openvariable -
exp_class_cls_sub
byte exp_class_cls_subvariable -
exp_class_str_op
byte exp_class_str_opvariable -
exp_class_term
byte exp_class_termvariable -
exp_class_comp
byte exp_class_compvariable -
exp_class_str_sub1
byte exp_class_str_sub1variable -
exp_class_str_sub2
byte exp_class_str_sub2variable -
exp_class_oper
byte exp_class_opervariable -
exp_class_not
byte exp_class_notvariable -
exp_class_and
byte exp_class_andvariable -
exp_class_or
byte exp_class_orvariable -
exp_class_xor
byte exp_class_xorvariable -
exp_class_create_set
byte exp_class_create_setvariable -
tot_classes
int tot_classesvariable -
exp_action
int[] exp_actionvariable -
pcl_mru
int pcl_mruvariable -
pcl_mru_next
int[] pcl_mru_nextvariable -
pcl_mru_prev
int[] pcl_mru_prevvariable -
pcl_lru
int pcl_lruvariable -
pcl_start
int[] pcl_startvariable -
pcl_end
int[] pcl_endvariable -
tot_pc_gen
int tot_pc_genvariable -
tot_pc_exec
int tot_pc_execvariable -
tot_pc_gen_opt
int tot_pc_gen_optvariable -
tot_pc_exec_opt
int tot_pc_exec_optvariable -
tot_pcl_exec
int tot_pcl_execvariable -
tot_pcl_gen
int tot_pcl_genvariable -
tot_pcl_reuse
int tot_pcl_reusevariable -
pc_loc
int pc_locvariable -
pc_loc_prev
int pc_loc_prevvariable -
pc_loc_next
int pc_loc_nextvariable -
pc_free
int pc_freevariable -
pc_parm_type
byte pc_parm_typevariable -
pc_op
byte[] pc_opvariable -
pc_var_type
byte[] pc_var_typevariable -
pc_var_loc
byte[] pc_var_locvariable -
pc_sysndx
int[] pc_sysndxvariable -
pc_seta
int[] pc_setavariable -
pc_setc
String[] pc_setcvariable -
pc_next
int[] pc_nextvariable -
pc_req_opt
boolean[] pc_req_optvariable -
pc_aborted
boolean pc_abortedvariable -
pc_gen_exp
boolean pc_gen_expvariable -
pc_pushc_pending
boolean pc_pushc_pendingvariable -
pc_concat_pending
boolean pc_concat_pendingvariable -
pc_push_var_op
byte pc_push_var_opvariable -
pc_push_var_setc_value
String pc_push_var_setc_valuevariable -
pc_sublst_value1
String pc_sublst_value1variable -
pc_concat_setc_value1
String pc_concat_setc_value1variable -
pc_concat_setc_value
String pc_concat_setc_valuevariable -
pc_pushc_setc_value
String pc_pushc_setc_valuevariable -
pc_pusha_pending
boolean pc_pusha_pendingvariable -
pc_pusha_seta_value
int pc_pusha_seta_valuevariable -
pc_pusha_setc_value
String pc_pusha_setc_valuevariable -
pc_op_ago
byte pc_op_agovariable -
pc_op_aif
byte pc_op_aifvariable -
pc_op_pushv
byte pc_op_pushvvariable -
pc_op_pushvs
byte pc_op_pushvsvariable -
pc_op_pusha
byte pc_op_pushavariable -
pc_op_pushc
byte pc_op_pushcvariable -
pc_op_concat
byte pc_op_concatvariable -
pc_op_storv
byte pc_op_storvvariable -
pc_op_storvs
byte pc_op_storvsvariable -
pc_op_storvn
byte pc_op_storvnvariable -
pc_op_add
byte pc_op_addvariable -
pc_op_sub
byte pc_op_subvariable -
pc_op_mpy
byte pc_op_mpyvariable -
pc_op_div
byte pc_op_divvariable -
pc_op_compeq
byte pc_op_compeqvariable -
pc_op_compge
byte pc_op_compgevariable -
pc_op_compgt
byte pc_op_compgtvariable -
pc_op_comple
byte pc_op_complevariable -
pc_op_complt
byte pc_op_compltvariable -
pc_op_compne
byte pc_op_compnevariable -
pc_op_ucomp
byte pc_op_ucompvariable -
pc_op_dup
byte pc_op_dupvariable -
pc_op_sublst
byte pc_op_sublstvariable -
pc_op_substr
byte pc_op_substrvariable -
pc_op_inc
byte pc_op_incvariable -
pc_op_dec
byte pc_op_decvariable -
pc_op_pushd
byte pc_op_pushdvariable -
pc_op_pushds
byte pc_op_pushdsvariable -
pc_op_stord
byte pc_op_stordvariable -
pc_op_stords
byte pc_op_stordsvariable -
pc_op_pfx_a
byte pc_op_pfx_avariable -
pc_op_pfx_d
byte pc_op_pfx_dvariable -
pc_op_pfx_i
byte pc_op_pfx_ivariable -
pc_op_pfx_k
byte pc_op_pfx_kvariable -
pc_op_pfx_l
byte pc_op_pfx_lvariable -
pc_op_pfx_n
byte pc_op_pfx_nvariable -
pc_op_pfx_o
byte pc_op_pfx_ovariable -
pc_op_pfx_s
byte pc_op_pfx_svariable -
pc_op_pfx_t
byte pc_op_pfx_tvariable -
pc_op_pushs
byte pc_op_pushsvariable -
pc_op_stori
byte pc_op_storivariable -
pc_op_a2b
byte pc_op_a2bvariable -
pc_op_a2c
byte pc_op_a2cvariable -
pc_op_a2d
byte pc_op_a2dvariable -
pc_op_a2x
byte pc_op_a2xvariable -
pc_op_and
byte pc_op_andvariable -
pc_op_b2a
byte pc_op_b2avariable -
pc_op_b2c
byte pc_op_b2cvariable -
pc_op_b2d
byte pc_op_b2dvariable -
pc_op_b2x
byte pc_op_b2xvariable -
pc_op_c2a
byte pc_op_c2avariable -
pc_op_c2b
byte pc_op_c2bvariable -
pc_op_c2d
byte pc_op_c2dvariable -
pc_op_c2x
byte pc_op_c2xvariable -
pc_op_d2a
byte pc_op_d2avariable -
pc_op_d2b
byte pc_op_d2bvariable -
pc_op_d2c
byte pc_op_d2cvariable -
pc_op_d2x
byte pc_op_d2xvariable -
pc_op_dclen
byte pc_op_dclenvariable -
pc_op_dcval
byte pc_op_dcvalvariable -
pc_op_dequote
byte pc_op_dequotevariable -
pc_op_double
byte pc_op_doublevariable -
pc_op_find
byte pc_op_findvariable -
pc_op_index
byte pc_op_indexvariable -
pc_op_isbin
byte pc_op_isbinvariable -
pc_op_isdec
byte pc_op_isdecvariable -
pc_op_ishex
byte pc_op_ishexvariable -
pc_op_issym
byte pc_op_issymvariable -
pc_op_lower
byte pc_op_lowervariable -
pc_op_not
byte pc_op_notvariable -
pc_op_or
byte pc_op_orvariable -
pc_op_upper
byte pc_op_uppervariable -
pc_op_signed
byte pc_op_signedvariable -
pc_op_sla
byte pc_op_slavariable -
pc_op_sll
byte pc_op_sllvariable -
pc_op_sra
byte pc_op_sravariable -
pc_op_srl
byte pc_op_srlvariable -
pc_op_sattra
byte pc_op_sattravariable -
pc_op_sattrp
byte pc_op_sattrpvariable -
pc_op_x2a
byte pc_op_x2avariable -
pc_op_x2b
byte pc_op_x2bvariable -
pc_op_x2c
byte pc_op_x2cvariable -
pc_op_x2d
byte pc_op_x2dvariable -
pc_op_xor
byte pc_op_xorvariable -
pc_op_gbl
byte pc_op_gblvariable -
pc_op_desc
String[] pc_op_descvariable -
pc_loc_list
int[] pc_loc_listvariable -
pcl_inc_list
byte[] pcl_inc_listvariable -
pcl_dec_list
byte[] pcl_dec_listvariable -
pc_trace_gen
boolean pc_trace_genvariable -
pc_trace_sub
String pc_trace_subvariable
-
-
Constructor Details
-
mz390
public mz390()Dummy constructor - no initialization needed
-
-
Method Details
-
main
main is entry when executed from command line Create instance of mz390 class and pass parms to mz390 like z390 does.- Parameters:
args- argument string - same as z390
-
process_mz390
expand macro MLC source file to BAL source file Note this may be called directly from z390 GUI or from main when mz370 run from windows command line. if called from main, the log_text object will be null and local put_log function will route to console instead of the z390 log window.- Parameters:
args- argument stringlog_text- GUI-related object where log messages are sent
-
init_mz390
- initialize log routing
- set options
- open MLC and BAL buffered I/O files
- Parameters:
args- argument stringlog_text- GUI-related object where log messages are sent
-
add_zstrmac_key
add hash indexed keys for ZSTRMAC opcodes- Parameters:
opcode- ZSTRMAC opcodeindex- associated index value
-
compile_patterns
private void compile_patterns()init regular expression patterns and issue error if failure -
open_files
private void open_files()- Set trace_file_name
- Open BAL file if option BAL
-
process_mac
private void process_mac()execute mlc as open code macro expanding any macros found and outputing all model statements to BAL file after substitution of any parms and macro variables. -
set_mlc_eof
private void set_mlc_eof()set mlc_eof and notify az390 to wrapup if running -
load_mac_file
private void load_mac_file()- load it if found
- add macro entry or dummy entry
-
load_mac
private void load_mac()load macro from file or inline and set load_mac_name_index else abort with error- load type 0 = MLC file
- no MACRO, no proto-type, end on END
- parse EXEC statement with space delimited
- parms and create exec macro parms
- load type 1 = MAC file
- MACRO, MEND, and verify proto-type name = file name
- load type 2 = inline macro
- MACRO, MEND, and proto-type defines macro name
- Return -2 if file not found
- Concatentate any continuations indicated by non-blank in position 72. Each continuation must start at position 16.
- Ignore .* macro comments
- Define any macro labels .xxx and check references.
- if continue char in 72, delimit at first ", " after 16.
- initial program MLC loads as 0 mac name entry
- Load inline macros without processing labels etc. and includes are not expanded until inline load
- Insert MLC copy profile copybook if option PROFILE(copybook) specified.
- Expand the following structured macro code extensions if ZSTRMAC:
- AIF, AELSE, AELSEIF, AEND
- ACALL, ACALLPRM, AENTRY, AEXIT. AEND
- AWHILE, AUNTIL, AEXIT, AEND
- ACASE, AWHEN, AELSE, AEXIT, AEND
- Note ACALL generates ACALLPRM call to reset parms for AENTRY
- At end of MLC load, turn off lookahead mode for ordinary symbols.
- load type 0 = MLC file
-
check_undefined_aentry
private void check_undefined_aentry()issue error for any ACALL to undefined AENTRY routine. -
check_past_mend
private void check_past_mend()scan for macro statement following final MEND ignoring comments -
set_ictl
private void set_ictl()set ICTL start, end, cont columns -
load_open_macro_file
private void load_open_macro_file()open file for MLC or macro file else abort with error -
set_default_ictl
private void set_default_ictl()set default ICTL for macro/copy -
load_proto_type
private void load_proto_type()process proto-type during loading of MLC or macro -
load_macro_exec
private void load_macro_exec()parse space delimited parms for exec sql cics or dli and replace with comma delimited parms for EXEC macro processing.
Notes:- Use the proto_pattern to handle all valid macro assembler parm expressions including quoted strings with spaces.
-
load_macro_ago_aif_refs
private void load_macro_ago_aif_refs()check ago and aif references during loading -
load_macro_label_sym
private void load_macro_label_sym()During MLC or macro loading:- Define macro labels .xxx
- If MLC lookahead, define ordinary symbol attribute and length if available using az390 DS, DC, and EQU processing services. Note call_az390 surpresses sending any BAL trace comments during lookahead.
- remove .* macro comments
-
set_lookahead_sym_attr_len
private void set_lookahead_sym_attr_len()if ASM, set symbol type and length during MLC macro loading in lookahead mode
Notes:- Called during macro load to define all ordinary symbols in open code allowing forward reference to type and length if available during macro execution. The sym_attr and sym_len are stored in AZ390 symbol table with sym_def = -1 indicating lookahead mode definition. Duplicates are ignored as there may be altermate macro paths.
- During macro execution, AZ390 recalcs all symbols for use during remained for macro expansion.
- sym_attr = 'U' and sym_len = 1 default at first create.
- sym_def = -1 for lookahead and 0 for forward ref during macro expansion. AZ390 source line references start at 1 as of RPI 415.
- Note during macro execution, macro call label field symbol will be changed to sym_attr 'M' if undefined or type 'U' and will remain with sym_def = -1 to allow redefine as ordinary symbol via BAL expansion.
-
init_lookahead_az390
private void init_lookahead_az390()init for mz390 calls to EQU/DS/DC processing routines during lookahead -
add_mac
add macro file entry and set mac_name_index else abort- Parameters:
macro_name- macro name
-
update_mac_key_index
add or update macro key index- Parameters:
index- macro indexname- macro name
-
set_mac_file_num
private void set_mac_file_num()find/add file name and set cur_mac_file_num -
add_mac_label
add macro label and check for duplicates during macro loading- Parameters:
mac_index- index of macromac_label- labellab_line- line number
-
check_undefined_labs
private void check_undefined_labs(int mac_index) issue errors for any undefined macro labels.- Parameters:
mac_index- iundex of macro
-
load_get_mac_line
private void load_get_mac_line()get next mac line from ainsert, file, or inline- oncatenating continuation lines and parse mac line
- runcate continued lines at first ", "
- ead nested copy files
-
load_get_zstrmac_file_line
private void load_get_zstrmac_file_line()get next source line to load or insert from nexted copy files -
load_get_mac_file_line
private void load_get_mac_file_line()get next mac_line from file else set mac_line null -
store_mac_line
private void store_mac_line()- save mac_line during input for use by log_error
- update &SYSSTMT
-
zsm_gen_lines
private void zsm_gen_lines()Generate ZSTRMAC structured macro code lines with same line number as original statement in zsm_lines and set zsm_line_tot -
zsm_acs_set_blk
private boolean zsm_acs_set_blk()process AWHEN index value parms and set current block # in value block array. The valid values are 0-255, C'?', X'??', or range (v1,v2) separated by commas- Returns:
- boolean value
-
zsm_acs_chk_val
private boolean zsm_acs_chk_val(int val) limit check AWHEN value and return false if not 0-255. Also set low and high value- Parameters:
val- value to check- Returns:
- true if value in range 0-255; false otherwise
-
zsm_find_aif_exp
private boolean zsm_find_aif_exp()set zsm_aif_exp to (...) else return false- Returns:
- true or false
-
zsm_find_acall_name
private boolean zsm_find_acall_name()find ACALL name or add new name with ACALL_ prefix and set zsm_acall_index else false and set &name parms else null- Returns:
- boolean indicating success
-
insert_acall_parms
private void insert_acall_parms()insert &(acall_name)(parm#) SETC 'parm' for each parm in acall name(p1,p2,,pn) -
insert_acall_set
insert acall parm created setc variables into MLC- Parameters:
line- - ???
-
parse_mac_line
private void parse_mac_line()- parse mac line into label, op, parms
- open copybook file if found
- if cics insert prolog and epilog
-
open_mac_copy_file
private void open_mac_copy_file()open copy file specified in mac_parms Notes:- Expand during MLC and macro loads
- Insert using AINSERT during execution after var substitution on name
- Issue error on copy file not found if not loading MLC/MAC
-
open_load_file
open file for loading mac/copy file- Parameters:
new_mac_name- name of the macro or copy file to be loaded
-
put_bal_line
- strip .mac labels if ASM and not inline macro code
- set symbol attr if mfc
- optional reformatting
- optional pass to az390
- optional write to BAL
- Parameters:
text_line- input source line
-
call_az390_pass_bal_line
pass text_line to az390 and update the az390 copy of mz390_errors- Parameters:
text_line- surce line to be handed over to az390 for assembly
-
reformat_bal
reformat text_line from tz390.split at 10 and operands at 16 if possible- Returns:
- reformatted source text
-
parse_bal_line
private void parse_bal_line()- Substitute any macro variables found
- Set bal_label, bal_op, bal_parms
-
split_bal_line
private void split_bal_line()split bal_line into bal_label, bal_op, and bal_parms -
replace_vars
- Replace all variables in text and set var_replacement if changed
- if reduce then replace && with & and '' with '
- If check_label then verify label field valid
- Per RPI 241 ignore undefined &vars and let az390 report error if not in comment
- Per RPI 502 remove undefined var which may cause null parm error in az390
- Replace null single parm with comma if comments follow
- Parameters:
text- source textreduce- indicates whether or not to reduce double ampersands and quotescheck_label- indicates whether or not to validate the label field- Returns:
- result after substitution and - optional - reduction
-
find_var
find parm or set variable and return true if found. Also set the following:- var_type = seta|setb|setc|parm (1-4)
- var_loc = lcl|gbl|pos|kw|syslist
- setc_value = parm value if not syslist
- var_name_index = index to name found else -1
- var_name = variable name
- caller must handle subscript or sublist in exp or bal parm processing
- First search parms and then set variables
- Convert to upper case
- Parameters:
name- variable name- Returns:
- true if found, false otherwise
-
get_sublist_count
return number of parms in sublist- Parameters:
list- sublist to inspect- Returns:
- nr of parameters counted
-
get_sublist
- parse list and return sublist requested or empty list
- incr sublist_count for each , at level 1
- Parameters:
list- list to extract fromsublist_index- starting point (?)- Returns:
- string value of extracted sublist
-
find_opcode_type
set mac_opcode_index and return opcode type:- -1 - not found in opcode table
- 0 - comment (no opcode)
- 1-100 - machine type
- 100-200 - assembler type
- 200+ - macro operation
- tz390 opcode table used to find opcode type.
- Return 0 for comment
- Parameters:
opcode- opcode string value (i.e. mnemonic)- Returns:
- index value of the mnemonic definition in tz390 tables.
-
exp_ago
private void exp_ago()branch to specified macro label or branch on index using list of labels Notes:- For simple branch, pc_start is set to negative index of new line and no pc code required.
- For indexed branch, pc_op_ago opcode
is generated with pc_seta pointing to
GBLA array with the following:
- First entry is start of GBLC macro label array if TRACEP on else -1 if NOTRACEP. Note value of zero indicates error during construction.
- Maximum index value from 1 to n
- mac_line_index for each label.
- Key index to AGO GBLA array is stored using "A:mac_line_index to retrieve array if AGO is reused.
-
trace_break
private void trace_break()skip line in trace if not in suppressed copy code -
exp_ago_branch
private int exp_ago_branch(int lab_index) return new_mac_line_index and set label_name for next ago target label.- Parameters:
lab_index- ???- Returns:
- index value of label
-
exec_aif
private void exec_aif()execute 1 or more AIF/AIFB tests and branch if true. -
exec_mac_op
private void exec_mac_op()execute macro operation (set,aif, ago, etc.) Note case index values must match mac_op_name array values. -
alloc_set
private void alloc_set(byte alloc_set_type, int alloc_set_loc) allocate set scalar,array, or created set variables on first occurence.
Notes:- Duplicates ignored and expand used to handle any subscript beyond first alloc.
- Parameters:
alloc_set_type- var_seta_type | var_setb_type | var_setc_typealloc_set_loc- lcl_set | gbl_set
-
calc_seta_exp
evaluate seta expression- Parameters:
text- textual value of expression from source codetext_index- ???- Returns:
- integer value from evaluating the seta expression
-
calc_setb_exp
evaluate setb expression- Parameters:
text- textual value of expression from source codetext_index- ???- Returns:
- boolean value from evaluating the setb expression
-
calc_setc_exp
evaluate setc expression- Parameters:
text- textual value of expression from source codetext_index- ???- Returns:
- string value from evaluating the setc expression
-
get_set_target
private void get_set_target(byte alloc_set_type) set set store info form bal_label
Notes:- Sets store_pc_op to storv, storvs, stord, or stords. Then seta, setb, setc changes it to storvn for multiple values.
- Parameters:
alloc_set_type- type indicator (?)
-
store_seta_value
private void store_seta_value(byte op) store seta_value or inc/dec at store loc (shared by exp and pc)- Parameters:
op- internal operation code
-
store_setb_value
private void store_setb_value()store setb_value at store loc (shared by exp and pc) -
store_setc_value
private void store_setc_value()store setc string at store loc (shared by exp and pc) -
get_aread_string
read next mlc source line or next record from file specified in DDNAME=, DSNAME=, or pgmname.dat- DDNAME= is extention to HLL assembler where external variable defines file to read for AREAD.
- DSNAME= is extention to HLL assembler where macro variable defines file to read for AREAD.
- Only DDNAME or DSNAME can be coded
- empty lines (CR,LF) returned as single space " "
- end of file returns 0 length string ""
- Options NOPRINT and NOSTMT ignored
- Returns:
- string read by AREAD operation
-
get_next_source_line
return next source line from mac_file or AINSERT queue for use by AREAD- Returns:
- string with next source line
-
set_length_80
set AREAD and PUNCH text lengths to 80 for HLASM compatibility if ASM and NOALLOW- Parameters:
text- record data to be padded- Returns:
- string with data padded to 80 characters
-
set_aread_punch_options
- set ap_file_index and ap_file_name from the following AREAD or PUNCH parms:
- DDNAME= environment variable to get file name
- DSNAME= explicit file name string
- DSN= epxlicit file name string (alias)
- ID=n file index 0-9 (0 is default) and set ap_file_io if file I/O requested
- Set AREAD option flags for NOPRINT, NOSTMT, CLOCKB, CLOCKD
- Set PUNCH option FORMAT
- Parameters:
parms- parameter stringfile_dir- directory or pathfile_type- file type (extension)
- set ap_file_index and ap_file_name from the following AREAD or PUNCH parms:
-
get_ddname_file_name
verify ddname is defined as environment variable pointing to valid file and return full path else abort- Parameters:
ddname- ddname- Returns:
- file location (path, name, extension)
-
put_pch_line
write PUNCH 'text' to pch file- If ,DDNAME= follows 'text' write to specified file instead of default filename.pch
- If ,DSNAME= follows 'text' write to specified file instead of default filename.pch
- If FORMAT specified as extended option on PUNCH, the output will format continuations like MLC
- Parameters:
pch_parms- applicable parameters
-
calc_exp
parse set/aif/variable expression and return true if ok and set set exp_var_index to result Notes:- If parse_set_mode then exit without error true/false indicating if set variable exists or not
- If var_replacement_mode, exit after retrieving first variable and before proceeding to next operator, and ignore var not found
- Always turn off parse_set_mode at exit
- Generate pseudo code for repeat executions
- Parameters:
text- source string for expression to evaluatetext_index- ???- Returns:
- true if success, false otherwise
-
exp_set_prev_op
private void exp_set_prev_op()set exp_prev_op from stack or set to exp_start_op (same as exp_term_op) also set exp_prev_class and exp_prev_first -
exp_set_next_op
private void exp_set_next_op()get next expression operator and push preceding variables on stack. Also set the following:- exp_token
- exp_next_first
- exp_next_op (uppercase)
- exp_next_class
- push zero for unary +- based on previous setting of exp_var_last
- push ordinary symbols starting with A-Z$@#_ as SDT string assuming there preceding T' type oper
-
exp_set_term_op
private void exp_set_term_op()set next token and op to exp_term_op -
exp_set_next_token
private void exp_set_next_token()set op from exp_next_op -
exp_perform_op
private void exp_perform_op()perform next exp action based on precedence of exp_next_op and exp_prev_op
Notes:- If substring set prev_substring else reset after operation. Used by exp_substring.
-
exp_perform_prefix_op
private void exp_perform_prefix_op()perform prefix operator replacing value on stack with result value -
exp_unary_op
private void exp_unary_op()execute unary operator U+ or U- -
exec_pc_add
private void exec_pc_add()add top of stack value to prev. value and pop the top stack value off -
exec_pc_sub
private void exec_pc_sub()sub top of stack value from prev. value and pop the top stack value off -
exec_pc_mpy
private void exec_pc_mpy()multiply top of stack value to prev. value and pop the top stack value off -
exec_pc_div
private void exec_pc_div()divide top of stack value into prev. value and pop the top stack value off -
exec_pc_concat
private void exec_pc_concat()concatenate two variables on stack -
exec_pc_dup
private void exec_pc_dup()duplicate string on top of stack by value of top-1 count -
exec_pc_index
private void exec_pc_index()put index of first occurance of second string within the first string on top of stack -
exec_pc_find
private void exec_pc_find()return seta index of first character in str2 found in str1 on top of stack -
exp_compare
private void exp_compare()perform compare EQ,GE,GT,LE,LT, or NE -
setc_compare
private int setc_compare()compare setc_value1 and setc_value2 in EBCDIC and return -1, 0, or 1 for low, equal, high
Notes:- If length not equal, the shorter length operand is treated as lower
- Returns:
- -1, 0, or 1 for low, equal, high
-
exec_pc_not
private void exec_pc_not()perform logical not operation on stk var -
exec_pc_and
private void exec_pc_and()perform logical and operation on stk vars -
exec_pc_or
private void exec_pc_or()perform logical or operation on stk vars -
exec_pc_xor
private void exec_pc_xor()perform logical xor operation on stk vars -
exp_string_quote
private void exp_string_quote()start or end string or substring defining setc value for exp_stack
Note:- if exp_prev_substring_op set then don't put null string on stack
-
exp_substring
private void exp_substring()replace string, e1, e2 values with substring -
exp_calc_var_sub
private void exp_calc_var_sub()called with var ptr and subscript on stack- if subscripted set var replace stack var set ptr with subscripted set value
- if subscripted parm var update or replace stack var parm ptr with sublist parm value
- skip trailing . if any
-
exp_append_string
private void exp_append_string()append var on top of stack to string var -
exp_next_char
private char exp_next_char()return next char in expression else terminator- Returns:
- next character - tilde (~) serves as terminator
-
skip_next_token
private void skip_next_token()skip next token -
set_compare
private void set_compare(boolean compare_result) add true or false (setb value) to stack- Parameters:
compare_result- value to be stacked
-
inc_tot_exp_stk_var
private boolean inc_tot_exp_stk_var()if not over max inc tot_exp_stk_var and init stk name index -1 else abort and return false- Returns:
- true if successful, false otherwise
-
get_compare_values
private void get_compare_values()get set values from stack and pc_seta or pc_setc based on pc_parm_type. Set val_type1 as follows:- If either is setb, make setb
- If either is seta, make seta
- else setc
-
get_seta_stack_values
private void get_seta_stack_values()get seta_value1 and 2 from top of stack and remove from stack -
get_seta_stack_value
private int get_seta_stack_value(int offset) return seta value of stk + offset without removing- Parameters:
offset- offset value- Returns:
- increment top of stack
-
get_seta_string_value
return int value of string using symbol table value if found else numberic value else 0.- Parameters:
text- input text value- Returns:
- numeric value of input text
-
get_setb_stack_value
private byte get_setb_stack_value(int offset) return setb value of stk + offset without removing- Parameters:
offset- offset value- Returns:
- byte value of 0 or 1
-
put_seta_stack_var
private void put_seta_stack_var()add seta_value to stack -
put_setb_stack_var
private void put_setb_stack_var()add setb_value to stack -
put_setc_stack_var
private void put_setc_stack_var()add setc_value to stack -
get_setb_stack_values
private void get_setb_stack_values()set setb_value1 and 2 from top of stack -
get_setc_stack_values
private void get_setc_stack_values()set setc_value1 and 2 from top of stack without removing -
get_setc_stack_value
return setc string from top of stack and remove it- Returns:
- string from top of stack
-
exp_push_op
private void exp_push_op()put op on stack -
exp_pop_op
private void exp_pop_op()pop current op on stack -
exp_term
private void exp_term()terminate expression returning value on stack if no errors
Notes:- Don't return value if parse_mode
- Turn off pc_gen_exp
-
isQuotedBinInteger
Check if a string is of the form "B'1-32 binary digits'"- Parameters:
s- the string to check- Returns:
trueif the string (1) begins with "B'" (2) ends with "'" (3) has 1-32 binary digits between the quotesfalseotherwise
-
isQuotedHexInteger
Check if a string is of the form "X'1-8 hexadecimal digits'"- Parameters:
s- the string to check- Returns:
trueif the string (1) begins with "X'" (2) ends with "'" (3) has 1-8 hexadecimal digits between the quotesfalseotherwise
-
is32BitBinaryInteger
Validate that a string represents a valid 32-bit binary integer- Parameters:
s- string to validatebase- number base of the digits in the string; 10, 16 or 2- Returns:
- true if valid 32-bit binary integer, false otherwise
-
isMaxPosIntPlusOne
Determine whether string is equal to the decimal digits representing one more than Integer.MAX_VALUE (2147483647+1)- Parameters:
s- string to check- Returns:
trueif string is "2147483648",falseotherwise
-
isUnaryMinusAtOffset
private boolean isUnaryMinusAtOffset(int offset) Determine whether exp_stk_op entry at top (most recently added) + offset is unary minus- Parameters:
offset- offset from top; less than or equal to zero- Returns:
trueif unary minus at top + offsetfalseif not or top + offset out of stack range
-
get_int_from_string
return integer from string using specified base Notes:- return numeric value of string base 2, 10 or 16
- If base 10, ignore trailing non digits
- Parameters:
setc_text- text input stringbase- base number for conversion (radix)- Returns:
- integer result value
-
exp_push_var
private void exp_push_var()push var variable on stack if &var followed by ( then put var pointer on value stack and put ) subscript op on op stack
else push unscripted var value on value stack and skip trailing . if any
Notes:- If exp_parse_set_mode, set exp_parse_set_name and exit.
- If var value is setc, check for symbol value
-
exp_push_sdt
private void exp_push_sdt()convert sdt in setc_value to seta_value and push on stack
Notes:- Ordinary symbols are pushed as strings for use by prefix operators T', L'
- "*" pushes max_substring_len
-
push_sym
private void push_sym()push current exp_token symbol on stack as setc for use by prefix operators T', L' else get sym_val else 0. -
mz390_find_sym
find ordinary symbol and return index else -1
Notes:- return -1 if not opt_asm
- Force az390 to finish last bal and lock az390 until next bal while mz390 accesses symbol table
- Parameters:
symbol- name of symbol to search- Returns:
- index value or -1 if not found
-
set_sym_macro_attr
set macro call label ordinary symbol type to 'M' if currently undefined- Parameters:
sym_lab- symbol to add
-
get_sym_len
return length for ordinary symbol if found else return 1- Parameters:
symbol- symbol to locate- Returns:
- length of symbol
-
exp_push_string
push string on stack as setc- Parameters:
value- value to push
-
add_lcl_set
add lcl set variable not found by find_set- Parameters:
new_name- name of SETx variablenew_type- variable typenew_size- sizeset_array- ???- Returns:
- index of the variable, or -1 on error
-
add_gbl_set
add gbl set variable- Parameters:
new_name- name of SETx variablenew_type- variable typenew_size- sizeset_array- ???
-
parse_set_var
parse scalar, subscripted, or created set variable with or without subscript using expression parser in parse_set_var_mode to set:- exp_parse_set_name
- exp_parse_set_name_index
- exp_parse_set_type (seta/setb/setc)
- exp_parse_set_loc (lcl/gbl)
- exp_parse_set_sub
- exp_parse_set_created - true/false
- exp_parse_set_subscript - true/false
Notes:- If var found but exp_parse_set_name is null, then issue error for parms
- Used by alloc set with alloc_set_mode to get name and sub for allocation
- Used by store to dynamically alloc undefined name as lcl
- Parameters:
text- source to parsetext_index- ???- Returns:
- true if successfil, false otherwise
-
find_set
find lcl or gbl set variable else false and set var_name_index = -1 if not found. set following globals if found- var_loc = var_lcl_loc or var_gbl_loc
- var_type = var_seta_type|var_setb_type|var_setc_type
- var_name_index = for lcl/gbl seta, setb, setc array
- set_sub = set variable subscript
- seta_value|setb_value|setc_value
- seta_index|setb_index|setc_index
- var_set_array set true if subscripted RPI 836
- Saves create set name for possible scalar allocation for set
- Global set only found if declared locally or &SYS
- Both lcl and gbl key index finds ready for add if not found returned
- Parameters:
var_name- variable namevar_sub- variable subscript (?)- Returns:
- true if found - false otherwise
-
find_lcl_set
find lcl variable or label else false also set var_name_index = -1 if not found set following globals if found:- var_loc = var_lcl_loc or var_gbl_loc
- var_type = var_seta_type|var_setb_type|var_setc_type
- var_name_index = for lcl/gbl seta, setb, setc array
- set_sub = subscript
- seta_value|setb_value|setc_value
- seta_index|setb_index|setc_index
- Parameters:
var_name- variable namevar_sub- variable subscript (?)- Returns:
- true if found - false otherwise
-
find_gbl_set
find gbl set variable else false also set var_name_index = -1 if not found set following globals if found:- var_loc = var_lcl_loc or var_gbl_loc
- var_type = var_seta_type|var_setb_type|var_setc_type
- var_name_index = for lcl/gbl seta, setb, setc array
- set_sub = subscript
- seta_value|setb_value|setc_value
- seta_index|setb_index|setc_index
- Parameters:
var_name- variable namevar_sub- variable subscript (?)- Returns:
- true if found - false otherwise
-
get_lcl_set_value
private void get_lcl_set_value()Set seta/setb/setc_value from lcl set value using:- var_type
- var_name_index
- set_sub
- Calc seta_index|setb_index|setc_index. If subscript out of range and alloc mode use previous ending subscript (i.e. first allocation sets size)
- Calc seta_value|setb_value|setc_value
- Requires var_name_index and set_sub
-
expand_set
private int expand_set(int expand_name_index, byte expand_type, byte expand_loc, int expand_sub) expand set array- Parameters:
expand_name_index- index of set variabel arrayexpand_type- variable typeexpand_loc- ???expand_sub- ???- Returns:
- -1 on error; otherwise ???
-
adjust_expand_inc
private void adjust_expand_inc(int var_loc) increase expansion increment to reduce overhead of repeated expansions. This is a trade-off with running out of memory- Parameters:
var_loc- ???
-
get_gbl_set_value
private void get_gbl_set_value()- Set seta/setb/setc_value from gbl set based on var_type, var_loc, var_name_index, and set_sub
- Set val_type = var_seta/setb/setc_type
-
get_label_index
find macro label and return line index-1 else abort- Parameters:
label_source- source from which to extract label- Returns:
- if found index value-1; otherwise -1
-
get_label_comma_index
find and return index to comma after macro label else return -1- Parameters:
label_source- source to scan- Returns:
- index of first comma after label; otherwise -1
-
find_mac_entry
return mac_name index if found else -1- Note load_mac adds entry with -2 index to prevent mult search for macros not found.
- If MFC option on, then instructions and assembler control statements will not be expanded as macros.
- Any non-conditional macro operator can be expanded via an inline macro that can be defined via COPY statement.
- Parameters:
macro_name- name of macro- Returns:
- if found macro index, otherwise -1
-
call_mac
private void call_mac()- add macro to call stack
- If listcall option, add comment to bal
- process proto-type and set parms
- init mac_line_index to first macro statement
- Set macro label ordinary symbol type to 'M' if 'U'
-
put_listcall
private void put_listcall()if LISTCALL- gen listcall comment on BAL
- before load or call RPI 746
- If LISTCALL and MCALL, all calls are listed on PRN
-
init_pc_arrays
private void init_pc_arrays()allocate pseudo code arrays
Notes:- pc_start used to opt ago, gbl?, etc.
- Others not alloc if nopc option.
-
init_arrays
private void init_arrays()init large arrays with optional overides for size -
init_gbl_sys
private void init_gbl_sys()add global system variables -
set_sys_dsn_mem_vol
set sys_dsn, sys__mem, and sys_vol from file name- Parameters:
file_name- full file name
-
add_gbl_sys
add global system variables- Parameters:
sys_name- variable namesys_type- variable type
-
init_lcl_sys
private void init_lcl_sys()init local system macro variables -
add_lcl_sys
add local set variable- Parameters:
sys_name- variable namesys_type- variable type
-
check_sysops
private void check_sysops()check for opcodes that update system variables -
init_call_parms
private void init_call_parms()parse proto-type to set pos and key parm initial values -
set_call_parm_values
private void set_call_parm_values()set positional and key word parm values from macro call statement
Note mult commas force null pos parms -
init_pos_parm
init positional parm- Parameters:
pos_parm_name- name for positional parameter
-
init_key_parm
add key work parm name and default value- Parameters:
kwd_parm_name- keyword parameter namekwd_parm_value- keyword parameter value
-
set_pos_parm
init positional parm and increment cur_pos_parm set by- Parameters:
pos_parm- positional parameter
-
set_key_parm
set keyword parm- Parameters:
key- ???key_parm- ???- Returns:
- true if successful; false otherwise
-
find_kwd_parm
find keywork parm and return index else -1- Parameters:
kwd_name- name of keyword parameter- Returns:
- index of keyword parameter, or -1 if not found
-
exit_mz390
private void exit_mz390()wait for az390 to end and display total errors for both close files and exit to system or caller -
put_stats
private void put_stats()- Display mz390 statistics on STA file if option STATS
- If asm pass file names and merge file errors from mz390 and lookahead phase of az390 for use in file xref at end of PRN
- put_stats called from mz390 to sync with mz390 put_stats on STA and to include total mz and az errors on TRM
- Use tz390.put_stat_line to route line to end of BAL or stat(file) option
-
put_stat_line
routine statistics line to BAL or STATS(file)- Parameters:
msg- statistics line of text
-
close_files
private void close_files()close bal, pch, err, trm -
close_dat_file
private void close_dat_file(int index) close specific dat file- Parameters:
index- index of file to be closed
-
close_pch_file
private void close_pch_file(int index) close specific pch file- Parameters:
index- index of file to be closed
-
create_mnote
create mnote on BAL and ERR- Parameters:
level- mnote leveltext- text of mnote
-
process_mnote
put mnote message on BAL and ERR files- Parameters:
level- mnote levelmsg- mnote text
-
process_punch
private void process_punch()punch record on PCH and list on PRN. If ASM and NOALLOW pad to 80 bytes. -
replace_quoted_text_vars
replace variables in MNOTE or PUNCH 'text' after verifying single quote text ok- Parameters:
text- text to handlereduce- indicator whether or not to reduce double ampersands and apostrophes- Returns:
- result string
-
log_error
issue error msg to log with prefix and inc error total
Notes:- If exp_replacement mode error ignore and return setc_value = null except for 208 SYSLIST substitution error
- Parameters:
error- error numbermsg- error message text
-
abort_error
issue error msg to log with prefix and inc error total- Parameters:
error- error numbermsg- error message text
-
put_copyright
private void put_copyright()display mz390 version, timestamp, and copyright if running standalone -
put_log
Write message to z390_log_text or console if running standalone- Parameters:
msg- message text
-
find_lcl_key_index
return user_key_index for lcl user_key else -1 and set following for possible add_key_index:- lcl_key_text = user_key
- lcl_key_hash = hash code for key
- lcl_key_index_last = last search entry
- K: - key word macro parm
- B: - local macro label
- P: - postional macro parm
- L: - local set variable
- Parameters:
user_key- key to find- Returns:
- user key index or -1 if not found
-
add_lcl_key_index
private void add_lcl_key_index(int user_index) add lcl user_index entry based on lcl_key_text, lcl_key_hash, and lcl_key_index_last set by prior find_lcl_key_index- Parameters:
user_index- ???
-
gen_exp_pc
private void gen_exp_pc(byte op) gen pc code for exp if pc_gen_exp- Parameters:
op- internal opcode (?)
-
gen_pc
private void gen_pc(byte op) gen pushv or pushvs- Parameters:
op- internal opcode (?)
-
exec_pc
private void exec_pc()move this mac line to most recently used entry and then execute pseudo code starting at pc_loc until pc_end entry found -
get_pc
private void get_pc(byte op) add new pc_op to list of pseudo codes for current mac_bal_line- Set pc_loc to new pc_op entry
- Set pc_loc_prev to prev pc_loc else 0
- Set pcl_start[mac_bal_line] to first
- Set pc_end[mac_bal_line] to last
- Set pc_next[pc_loc-1] to chain start to end
- First try to get next entry from pc_free list
- If none on free list, remove least recently used entry from pc_lru and add to pc_free list while and return first free entry
- Parameters:
op- pseudo code operation to add
-
update_mru
private void update_mru()update mru with current mac_line_index -
reuse_pc
private void reuse_pc(int index) reuse pseudo code list at mac line index- Parameters:
index- mac line index
-
trace_pc
private void trace_pc()trace pseudo code entry gen or exec -
abort_pc
issue log_error and abort pseudo code mode due to pc error- Parameters:
msg- error message text
-
exp_concat_var
private void exp_concat_var()concatenate var to string on stack -
push_pc_var
private void push_pc_var()push scalar var on stack (shared by exp and pseudo code) -
get_pc_var_value
private void get_pc_var_value()- Get var value in seta/setb/setc_value using var_type, var_loc, var_name_index and set_sub
- Set val_type = var_seta/setb/setc_type
-
exec_pc_compeq
private void exec_pc_compeq()compare equal (shared exp and pseudo code) -
exec_pc_compge
private void exec_pc_compge()compare greater than or equal (shared exp and pseudo code) -
exec_pc_compgt
private void exec_pc_compgt()compare greater than (shared exp and pseudo code) -
exec_pc_comple
private void exec_pc_comple()compare less than or equal (shared exp and pseudo code) -
exec_pc_complt
private void exec_pc_complt()compare less than (shared exp and pseudo code) -
exec_pc_compne
private void exec_pc_compne()compare not equal (shared exp and pseudo code) -
exec_pc_pushvs
private void exec_pc_pushvs()push var(set_sub) value on stack
Notes:- Shared by exp and pc
-
exec_pc_sublst
private void exec_pc_sublst()replace setc value and sublist index on stack with caculated sublist.
Notes:- Shared by exp and pc
-
exec_pc_substr
private void exec_pc_substr()replace setc,arg1,arg2 on stack with subsubstring setc -
get_pc_trace_val
return set &type_value &PARM ? = 1, 2 or 3 for value- Parameters:
type- type code: 1=SETA, 2=SETB, 3=SETCparm- type code: 1=SETA, 2=SETB, 3=SETC- Returns:
- result value as a string
-
get_pc_var
private boolean get_pc_var()Set var variables from pseudo code entry and update if required for new macro instance- var_type
- val_type
- var_loc
- var_name_index (update for new mac)
Notes:- Update via find_set if new macro and local var
- Returns:
- true if successful, false ottherwise
-
opt_gen_pc_comp
private void opt_gen_pc_comp(byte op) convert pusha or pushc with self defining term into op with sdt else flush and gen op with 2 stack values- Parameters:
op- pseudo code opcode
-
opt_gen_pc_seta
private void opt_gen_pc_seta(byte op) convert pusha to op with seta sdt arg. else flush and gen op with 2 stack values- Parameters:
op- pseudo code opcode
-
opt_gen_pc_setc
private void opt_gen_pc_setc(byte op) convert pushc to op with setc sdt arg. else flush and gen op with 2 stack values- Parameters:
op- pseudo code opcode
-
opt_gen_pc_pushc
private void opt_gen_pc_pushc()set pending pushc after flushing any pending pc opcodes -
opt_gen_pc_pusha
private void opt_gen_pc_pusha()set pending pusha after flushing any pending pc opcodes -
opt_gen_pc_concat
private void opt_gen_pc_concat(byte op) optimize concatenation of push? by checking if prev op was pushc and combining to single push? where possible.- Parameters:
op- pseudo code opcode
-
flush_pc_pending
private void flush_pc_pending()gen pushc or pusha if pending gen concat after pushc if pending
Notes:- push emply setc if pending
-
opt_pcl
private void opt_pcl()optimize pc code list prior to first execution and reset pc_req_opt:- PUSHV,ADD 1,STORV = INC
- PUSHV,SUB 1,STORV = DEC
-
exec_pc_store
private void exec_pc_store(byte op) exec store for storv, storvs, storvn, inc, and dec- Parameters:
op- pseudo code opcode
-
get_pc_store_sub
private void get_pc_store_sub(byte op) set store_sub and store_subscript based on op.
Note:- If pc_op_storvs, then get store_sub from top of stack after store value has been removed
- Parameters:
op- pseudo code opcode
-
get_pc_loc_list
private boolean get_pc_loc_list(byte[] pc_op_list) load pc_loc_list- Parameters:
pc_op_list- array pseudo code opcodes- Returns:
- true if successful, false otherwise
-
free_pc_list
private void free_pc_list(int head, int tail) free pc list starting at head and ending at tail
Notes:- User must reset any other pointers to this list from pc_next or pc_start
- Parameters:
head- head pointertail- tail tail pointer
-
exec_pc_pfx_a
private void exec_pc_pfx_a()replace top of stack with A'stack indicating if symbol defined in lookahead (shared by exp and pseudo code) -
exec_pc_pfx_d
private void exec_pc_pfx_d()repalce top of stack with D'sym = 1/0 indicating if defined as ordinary symbol yet -
exec_pc_pfx_i
private void exec_pc_pfx_i()return I'sym integer value -
exec_pc_pfx_k
private void exec_pc_pfx_k()K'sym returns string length -
exec_pc_pfx_l
private void exec_pc_pfx_l()L'sym returns symbol length -
exec_pc_pfx_n
private void exec_pc_pfx_n()replace top of stack with N'stack (shared by exp and pc) -
exec_pc_pfx_o
private void exec_pc_pfx_o()return type of operator for O'sum- A = assembler control operator (CSECT, EQU ETC)
- E = extended mnemonic (BH, BL, BER, ETC.)
- O = machine opcode
- M = macro defined
- S = macro found in sysmac dir
- U = unknown
-
exec_pc_pfx_s
private void exec_pc_pfx_s()return exponent attrivute of ordinary symbol -
exec_pc_pfx_t
private void exec_pc_pfx_t()T'var/sym returns symbol type -
string_numeric
return true if string or (string) numeric- Parameters:
text- string to check- Returns:
- true if input evaluates as a number, false otherwise
-
exec_pc_upper
private void exec_pc_upper()replace string on stack with upper case -
exec_pc_lower
private void exec_pc_lower()replace string on stack with lower case -
exec_pc_ago
private void exec_pc_ago()exec computed ago branch using- ago_seta_index ptr to gbla ago array:
- +0 = ptr to gblc label array if TRACEP else 0
- +1 = maximum limit of ago index
- +2 = ago line index array for macro labels
- ago_index = current index
- ago_seta_index ptr to gbla ago array:
-
exec_pc_ucomp
private void exec_pc_ucomp()perform unary compliment on stack value -
exec_pc_a2b
private void exec_pc_a2b()convert int to binary string with leading zeros to make length 32 -
exec_pc_a2c
private void exec_pc_a2c()convert int to character string of length 4 #509 -
exec_pc_a2d
private void exec_pc_a2d()convert int to decimal string preceded by a plus or minus sign #509 -
exec_pc_a2x
private void exec_pc_a2x()convert int to hex string of length 8 #509 -
exec_pc_b2a
private void exec_pc_b2a()convert binary string to int -
exec_pc_b2c
private void exec_pc_b2c()convert binary string to char string -
exec_pc_b2d
private void exec_pc_b2d()convert binary string to decimal string preceded by plus or minus character #509 -
exec_pc_b2x
private void exec_pc_b2x()convert binary string to hex string -
exec_pc_c2a
private void exec_pc_c2a()convert 0-4 character string to int -
exec_pc_c2b
private void exec_pc_c2b()convert char string to binary string -
byteToBinaryString
Convert binary byte to length 8 binary string // #509- Parameters:
x- byte value to convert- Returns:
- value converted to length 8 binary string
-
exec_pc_c2d
private void exec_pc_c2d()convert char string to decimal string prefixed by plus or minus sign #509 -
exec_pc_c2x
private void exec_pc_c2x()convert char string to hex string -
get_text_hex
return up to 2-8 hex chars for 1-4 char- Parameters:
text- input text string
-
exec_pc_d2a
private void exec_pc_d2a()convert decimal string to int -
exec_pc_d2b
private void exec_pc_d2b()convert decimal string to binary string of length 32 -
exec_pc_d2c
private void exec_pc_d2c()convert decimal string to char string -
exec_pc_d2x
private void exec_pc_d2x()convert decimal string to hex string -
exec_pc_dclen
private void exec_pc_dclen()return dc length of string after reducing double quotes and ampersands -
exec_pc_dcval
private void exec_pc_dcval()return string with reduced quotes and ampersands -
exec_pc_dequote
private void exec_pc_dequote()remove start and ending quote if any -
exec_pc_double
private void exec_pc_double()double quotes within string -
exec_pc_isbin
private void exec_pc_isbin()return 1 if 1-32 binary digits string else 0; error if 0 digits -
isBinDigits
Check if string is all binary digits- Parameters:
s- string to check- Returns:
trueif all binary digitsfalseotherwise
-
isBinInt
Check if string is 1-32 binary digits- Parameters:
s- string to check- Returns:
trueif 1-32 binary digitsfalseotherwise
-
isdec
Check if string is 1-10 decimal digits having maximum value 2147483647 (Integer.MAX_VALUE)- Parameters:
s- string to check- Returns:
trueif 1-10 decimal digits and value <= 2147483647falseotherwise
-
isSignedDecimalInteger
Check if string 1-10 decimal digits, with possible leading sign, having value in range [Integer.MIN_VALUE = -2147483648, 2147483647 = Integer.MAX_VALUE]- Parameters:
s- String to check- Returns:
trueif validfalseotherwise
-
isDecDigits
Check if string is all decimal digits- Parameters:
s- string to check- Returns:
trueif all decimal digitsfalseotherwise
-
isHexDigits
Check if string is all hexadecimal digits- Parameters:
s- string to check- Returns:
trueif all hexadecimal digitsfalseotherwise
-
isHexInt
Check if string is 1-8 hexadecimal digits- Parameters:
s- string to check- Returns:
trueif 1-8 hexadecimal digitsfalseotherwise
-
isHexChar
private boolean isHexChar(char c) Check if character is a hexadecimal digit- Parameters:
c- character to check- Returns:
trueif c is a hexadecimal digitfalseotherwise
-
exec_pc_isdec
private void exec_pc_isdec()if string 1-10 decimal digits <= 2147483647 return 1 else 0; error if 0 digits -
exec_pc_ishex
private void exec_pc_ishex()return 1 if string 1-8 hex digits else 0; error if 0 digits -
exec_pc_issym
private void exec_pc_issym()return 1 if symbol defined else 0 -
exec_pc_signed
private void exec_pc_signed()convert int to signed decimal string -
exec_pc_sla
private void exec_pc_sla()shift left arithmetic -
shiftLeftArithmetic
private int shiftLeftArithmetic(int x, int n) Implement HLASM LangRef SLA built-in function
Notes:- Only the low 6 bits of n are used. For example, n = -1 = X'FFFFFFFF' is changed to X'0000003F' = 63 and n = X'80000000' (Integer.MIN_VALUE) is changed to 0.
- Arithmetic overflow error logged if a bit that is not the original sign bit is shifted into the sign position.
- Parameters:
x- the number to shiftn- the number of bits to shift- Returns:
- x shifted left n bits if no error; else 0
-
shiftLeftArithmeticSignMask
private int shiftLeftArithmeticSignMask(int n) Create mask containing n+1 one bits in the leftmost position // #509- Parameters:
n- number of one bits (not including sign bit); 1--31- Returns:
- an integer containing n+1 one bits in leftmost position and zero in the remaining bit positions
-
exec_pc_sll
private void exec_pc_sll()shift left logical -
exec_pc_sra
private void exec_pc_sra()shift right arithmetic -
exec_pc_srl
private void exec_pc_srl()shift right logical -
exec_pc_sattra
private void exec_pc_sattra()return int value of assembler attribute for symbol defined via EQU 4th parm -
exec_pc_sattrp
private void exec_pc_sattrp()return int value of symbol program attribute defined via EQU 5th parm -
exec_pc_x2a
private void exec_pc_x2a()convert hex string to int -
exec_pc_x2b
private void exec_pc_x2b()convert hex string to binary string -
exec_pc_x2c
private void exec_pc_x2c()convert hex string to char string -
exec_pc_x2d
private void exec_pc_x2d()convert hex string to decimal string preceded by plus or minus sign -
get_pc_created_var
private void get_pc_created_var(int offset) get created var name from stack and update var fields in pseudo code- Parameters:
offset- ???
-
get_pc_parms
private void get_pc_parms()set pc seta or setc parms based on pc_var_type() and abort if error -
exec_pc_pushs
private void exec_pc_pushs()push ordinary symbol abs value on stack else issue error -
get_val_type
private byte get_val_type()return val_type based on var_type- Returns:
- value type code
-
put_continued_text
write text to buffered file with continuations if > 71 characters.
Notes:- Used by put_bal_line and
- Used by put_pch_line if extended FORMAT option specified.
- Parameters:
file_buff- buffered writer objecttext- text to add to buffer
-
process_ainsert
private void process_ainsert()insert record in in queue -
add_ainsert_queue_rec
add record to front or back of ainsert queue for copy insert at front in seq.- Parameters:
rec- source record to add
-
insert_source_line
private void insert_source_line()insert AINSERT logical record in front of current source line at mac_line index -
get_ainsert_source_line
private void get_ainsert_source_line()return mac_line with source line from AINSERT queue which may have continuations -
set_insert_mac_line_index
private void set_insert_mac_line_index()set mac_line_index to next insert for AINSERT or dynamic COPY else abort -
check_setc_quotes
private void check_setc_quotes(int tot_setc_args) if NOALLOW verify function has quoted string as first argument.- Parameters:
tot_setc_args- arguments
-
calc_dimension
return numeric array dimension > 0 else issue error and return 1- Parameters:
text- input stringstart- start offset within string- Returns:
- numeric value of successive digits interpreted as a single decimal number
-