On 06/03/2010, at 6:10 AM, Richard Thomas wrote:
I can't thank you enough for your help. I'll let you know how I get  
along.
Perhaps this will help:
QPROCT	Space: x'19DA'
Header section: 0 to x'465'. Consists of 2-byte values.
The number of non-x'ffff' entries in the header equals the number of  
x'ffff' entries in the body therefore the number of non-x'ffff'  
entries in the header plus the number of non-x'ffff' entries in the  
body equals the total number of MI instructions in the table. I note  
that some non-x'ffff' values are different between releases prior to  
540 and 540 onwards. I do not yet know what these values mean nor why  
they are different.
Body section:
	CHAR(8)	op-code name
	CHAR(2)	op-code number
	CHAR(3)	flags
		CHAR(1)	optional instruction forms
		CHAR(2)	possibly resulting condition information
	BIN(2)	required parameters
	CHAR(2)	unknown but related to header information. Non-x'ffff' values  
appear to be an increasing sequence. Each x'ffff' value has a  
corresponding non-x'ffff' entry in the header but I haven't determined  
the relationship yet.
Byte 1 of the flags field appears to be:
	Bits 0-3:	Reserved
	Bit 4:		Only branch or indicator forms
	Bit 5:		Branch or Indicator form
	Bit 6:		Round form
	Bit 7:		Short form
Bytes 2 and 3 of the flags field are unknown. My guess is they specify  
resulting conditions but there is as yet no obvious pattern and I  
don't know why bytes 2 and 3 are the same values for every instruction  
(e.g. x'04D2D2', x'049292', x'0C5050') except for SIGEXCP (x'045000')
Unblocked MI instructions occupy the first 230 entries. Blocked  
instructions follow. On 540 and above blocked instructions have been  
removed (table ends at entry 230) and any corresponding header slots  
are set to x'ffff'.
QPRODT	Index: x'0ECB'
	BIN(2)	op-code number: This is the index key.
	BIN(2)	required parameters
	CHAR(6) DIM(15)	Parameter detail
Information in the parameter detail array is varying length. That is a  
given parameter may use any number of entries. Parameter groups are  
separated by a x'000000000000' entry. Each array entry is a set of  
bits with the following meanings:
Byte 1
	Bit 0 = Variable
	Bit 1 = Pointer
	Bit 2 = Branch Point
	Bit 3 = Internal Entry Point
	Bit 4 = Instruction Definition List
	Bit 5 = Operand List
	Bit 6 = Exception Description
	Bit 7 = Constant
Byte 2
	Bit 0 = Null operand
	Bit 1 = Unsigned immediate value
	Bit 2 = Signed immediate value
	Bit 3 = Array
	Bit 4 = Scalar
	Bit 6 = Binary
	Bit 7 = Floating-point
Byte 3
	Bit 0 = Packed Decimal
	Bit 1 = Zoned Decimal
	Bit 2 = Character
	Bit 3 = Other numeric?
	Bit 4 = Reserved?
	Bit 5 = Numeric
	Bit 7 = Machine space pointer
Byte 4
	Bit 0 = Signed
	Bit 1 = Unsigned
	Bits 2-7 = Reserved
Bytes 5 & 6 (2-byte signed binary)
	Length:	Positive 1,2,4,8 for some binary and character types
		Negative (possibly two's complement) for specific-length character  
scalar values
There's something niggling at the back of my head about negative  
lengths but I can't resolve it and can't find any documentation to  
remind me or answer the itch.
Byte 3, bit 3 is a different form of numeric from byte 3, bit 5. Not  
sure of the actual difference but it's only used on CVTEFN, DIVREM,  
and REM.
So there you have it for whatever it's worth. Corrections and  
additions gratefully received.
Here are some examples:
                           Show Operation Code Table
                                                              System:  
GRYPHON
 Object . . . . . . :  QPROCT              Object type . . . . :   
*PROCT
   Library  . . . . :    QSYS              Internal type . . . :  19DA
 Type options, press Enter.
   5=Display operand information
            -Instruction--          Optional
 Opt Seq    Name      Code  Flags    Forms   Conditions  Parms   
Unknown       B
  _     41  CPYBTL    101C  000000                          4     
FFFF         N
  _     42  CPYECLAP  1053  000000                          3     
FFFF         N
  _     43  CPYHEXNN  1092  000000                          2     
FFFF         N
  _     44  CPYHEXNZ  1096  000000                          2     
FFFF         N
  _     45  CPYHEXZN  109A  000000                          2     
FFFF         N
  _     46  CPYHEXZZ  109E  000000                          2     
FFFF         N
  _     47  CPYNV     1042  06D2D2  B|I,R                   2     
FFFF         N
  _     48  DIV       104F  07D2D2  B|I,S,R                 3     
0026         N
  _     49  DIVREM    1074  07D2D2  B|I,S,R                 4     
FFFF         N
  _     50  ECSCAN    10D4  049292  B|I                     4     
FFFF         N
                                                                        More 
...
 F3=Exit   F5=Refresh   F12=Cancel   F13=Repeat
 F16=Sort by Sequence   F17=Sort by Name   F18=Sort by Code    
F19=Sort by Flags                  
                      Show Operand Description Table Entry
 Op-Code . . . . . . . :  CPYBTA   Copy Bits Arithmetic
 Hex . . . . . . . . . :  102C     Required parameters . . . . :      4
 Operand 1 . . :  800804000000  NUMERIC VARIABLE SCALAR
                  800820000000  CHARACTER VARIABLE SCALAR
                  400000000000  POINTER
 Operand 2 . . :  800804000000  NUMERIC VARIABLE SCALAR
                  800820000000  CHARACTER VARIABLE SCALAR
                  010004000000  CONSTANT NUMERIC
                  010020000000  CONSTANT CHARACTER
                  400000000000  POINTER
 Operand 3 . . :  004000000000  UNSIGNED IMMEDIATE
                  002000000000  SIGNED IMMEDIATE
 Operand 4 . . :  004000000000  UNSIGNED IMMEDIATE
                  002000000000  SIGNED IMMEDIATE
 Press Enter to continue.
 F3=Exit    
F12=Cancel                                                   
                  
Regards,
Simon Coulter.
--------------------------------------------------------------------
   FlyByNight Software         OS/400, i5/OS Technical Specialists
   
http://www.flybynight.com.au/
   Phone: +61 2 6657 8251   Mobile: +61 0411 091 400        /"\
   Fax:   +61 2 6657 8251                                   \ /
                                                             X
                 ASCII Ribbon campaign against HTML E-Mail  / \
--------------------------------------------------------------------
 
As an Amazon Associate we earn from qualifying purchases.