Operating System - OpenVMS
1748015 Members
4912 Online
108757 Solutions
New Discussion

Re: Screen Management (SMG$)

 
SOLVED
Go to solution
dschwarz
Frequent Advisor

Re: Screen Management (SMG$)

There are some alternatives to using SMG$*MENU* and we will use one.
Paul Beaudoin
Regular Advisor

Re: Screen Management (SMG$)

Gents;

Far be it for me to argue with the depth of experince displayed here, but, what the hell :-) (watch the wrapping)

This is the 'standard' call I used to build the SMG CREATE MENU call:

; Menu
M_DCS: .WORD 14 ; size of element
.BYTE DSC$K_DTYPE_T
.BYTE DSC$K_CLASS_A
MADDR: .LONG 0 ; Pointer to item list
.WORD 0 ; DIGITS, SCALE
.BYTE DSC$K_DTYPE_T ; AFLAGS
.BYTE DSC$K_CLASS_S ; DIMCT
; .LONG ^X01E00000 ;DIMCT,AFLAGS,DIGITS,SCALE
DMSIZE: .LONG 0 ; Size of array
.LONG 20
.LONG 1 ;
.LONG 20
.LONG 1 ;

And here is a snippet calculating the values: (R11 is counting the items)
MULL #128,R11
MOVW #128,M_DCS ; Item size
MOVL MENADDR,MADDR
MOVL R11,DMSIZE

Translation: The total size of the menu choices is passed in DMSIZE, a .long and appears to be the architectural limit. The program this is chopped out of has a hardcoded value of 2000 (vax) pages allocated to this and filled before the call. It worked with (almost) 1M characters. This would have been in V6.2 days probably.

Not trying to be pedantic or even 'my call is bigger than yours' but if you are looking to solve the problem, it does not look like it is in SMG to me.
Happy to be educated though ....

Regards

Paul