SeeView Manual
SeeView Statements and Script Symbols
HP NonStop SeeView Manual—526355-004
9-79
PA R M
•
The second example follows:
?MENU Panelmenu
?PROC Panel(#field1, #p1, #field2, #p2, ..)
{-----------------------------------------}
{ This proc dynamically builds an input panel in cache
{ based on fields 1, 2, .. passed to it.
{
{ Once the panel is built, then it is displayed, and
{ a "modal" function key wait for input occurs.
{ User input is then returned via parms #p1, #p2, ..
{
{ #field1, #field2, .. defines panel data and [ ] input area.
{ #p1, #p2, #p3, .. return user data entered into the panel.
{ Note that #field.. and #p.. parms are dynamically declared.
{-------------------------------------------------------------}
VAR i:= 0
, fldcnt := 7 { number of fields to dynamically declare
, passcnt:= fldcnt { number of fields actually passed
, width { width of menu
,#s { scratch string variable
,#parms { contains "#p1, #p2, #p3, .."
;
FOR fldcnt DO BEGIN { declare PARM #field1, #p1 ..
EXECUTE "PARM #field" & (i:=i+1) & " OUT";
EXECUTE "PARM #p" & (i) & " OUT";
#parms:=#parms & "#p" & (i) & ",";
EXECUTE "#s:= #field" & (i);
IF #s<>"" THEN BEGIN { #s is value in #field-i
PUSH #s & "<==?" ONTO Panelmenu;
IF #SIZE #s>width THEN width := #SIZE #s;
END ELSE { parm #field-i not passed
IF passcnt=fldcnt THEN
passcnt := i-1; { number of parms passed
END;
BESIDE; { display input panel
WINDOW Panelmenu MENU
GLASS HEAD "Enter data (F16-escape)"
CACHE INDEX -passcnt
SIZE width+4,passcnt+2
UNLOCK;
FLUSH; { accept user input
EXECUTE "ACCEPT FKEY " & #parms[1:#size#parms-1];
?PROC GetPerson
{--------------}
{ Define and accept data from panel:
{
{ Name [ ]
{ Addr [ ]
{ Phone [ ]
{
{-------------------------------------------}
VAR #name
, #addr
, #ph
;
CALL Panel("Name [ ]", #name,
"Addr [ ]", #addr,
"Phone [ ]", #ph);