Weird logic problem in a menu screen.

Guy Werry guy.werry@hbms.ca
Wed, 30 Jan 2002 09:27:30 -0600


It's either "ask the list" or "throw a massive temper tantrum" time.
Environment: HP-Ux 10.2, Ph 7.33.D3.

I have a menu screen where I want to allow one user to run a sub-screen,
without the other users being aware that the choice is available to them.
I'm using the environment variable HPUSER to hold the user's logon name.

Here is the ENTIRE screen, from a compile listing:

		Q D E S I G N   (7.33.D3)
		Copyright 1997 COGNOS INCORPORATED
		Licensed PH-DEVELOPMENT for customer: 0011380001 HUDSON BAY
MINING & SMELTING 
		UNIX

		> SCREEN $execpath/pjr943kc MENU
		> ;
		> ;
***************************************************************
		> ; SCREEN-ID : PJR943KC
		> ; SOURCE-ID : PJR943KS
		> ; DATE      : MAY 91
		> ;
		> ; PURPOSE:  Employee TRAINING MENU
		> ;
		> ;
		> ; PROCESSING:
		> ;
		> ;
		> ; 1997 Feb 20, GLW, Pr4829.
		> ;     Added a menu selection so that we can access a
scheduler
		> ;     inquiry menu.
		> ;
		>
;****************************************************************
		> ;
		> 
		> DEF RCS-INFO  CHAR * 80 =     &
		>       "$Header: pjr943ks.qks,v 2.1 98/01/20 15:00:33
manffhdv Exp $"
		> 
		> DEFINE D-DATE DATE = SYSDATE
		> 
		> ; DEFINE SIGNONUSER CHAR *8 =
UPSHIFT(GETSYSTEMVAL("HPUSER"))
		> TEMP SIGNONUSER CHAR *8
		*W* The data name SIGNONUSER may conflict with the
machine-specific keyword 
		SIGNONUSER.
		> define authuser char *8 = "BMORRELL"
		> 
		> ;
		> HILITE MESSAGE AUDIBLE INVERSE BLINKING
		> ;
		> TITLE "Human Resources Information System" AT 1,29
		> ;
		> ALIGN (,,70)
		> FIELD D-DATE PREDISPLAY FORMAT YYYYMMMDD SEPARATOR " "
		> ;
		> TITLE "PJR943KC" AT 2,1
		> TITLE "5.0"      AT 3,4
		> HILITE TITLE INVERSE
		> TITLE "TRAINING MAIN MENU" AT 4,31
		> HILITE TITLE OFF
		> ;
		> DRAW THICK 3,20 TO 5,60
		> ;
		> SKIP TO 7
		> ;
		> ALIGN (19,22)
		> SUBSCREEN   $execpath/pjr944kc
&
		>             LABEL "PJR944  Training Inquiry Menu"
		> SUBSCREEN   $execpath/pjr916kc
&
		>             LABEL "PJR916  Training Reports Menu"
		> SKIP
		> TITLE "03 PSR897KC Scheduler Inquiry Menu"
&
		>       AT ,19
		> 
		> COMMAND "SHOWJOB JOB = @.FFHRIS"
&
		>       LABEL "        Who's On System Now?" CLEAR ALL
RESPONSE         &
		>       ID 04
		> 
		> procedure designer 03
		>    begin
		>       if not setsystemval("execpath","../../payrol/pub")
		>         then error &
		>          "Cannot set execpath system variable. Please
contact I.T."
		>       run command "quick 'auto=../qkgos/schdlrinq.qkg'"
refresh screen
		>       if not setsystemval("execpath","../pub")
		>         then error &
		>          "Cannot set execpath system variable. Please
contact I.T."
		>    end
		> ;
		> 
		> procedure entry
		> begin
		>       let signonuser = upshift(getsystemval("HPUSER"))
		>       if authuser = signonuser
		>         then run screen $execpath/pjr897kc
		> end
		> 
		> 
		> BUILD
		MODE:x ACTION:xxxxxxxxx     Human Resources Information
System       xxxxxxxxxxx
		PJR943KC
		   5.0             *****************************************
		                   *          TRAINING MAIN MENU           *
		                   *****************************************
		 
		                  01 PJR944  Training Inquiry Menu
		                  02 PJR916  Training Reports Menu
		                  03 PSR897KC Scheduler Inquiry Menu
		                  04         Who's On System Now?
		 
		  
		0 ERRORS  1 WARNINGS. Delete old screen
../pub/pjr943kc.qkc?y
		> EXIT

I figured it was pretty basic, sort of a no-brainer, eh!  Well, I've tried
two ways of doing this: a designer procedure and (currently) entry
procedure.  In both cases, the IF statement fails, even though I can prove
that the two data items that I'm testing are equal!  Below is a screen shot
of the actual debugger code, with the offending IF statement high-lighted.

				0074  procedure entry
				0075  begin
				0076    let signonuser =
upshift(getsystemval("HPUSER"))
				0077    if authuser = signonuser
				0078      then run screen $execpath/pjr897kc
				0079  end
				0080  
				0081  
				0082  PROCEDURE APPEND
				0083  DISABLE
				0084  
				0085  PROCEDURE PATH
				0086  NULL
				0087  PROCEDURE FIND
				0088  NULL
				Trap encountered at line: 79
				> d authuser
				AUTHUSER = "BMORRELL"
				> d signonuser
				SIGNONUSER = "BMORRELL"

Any help will be much appreciated!

G.L. (Guy) Werry 
Senior Systems Analyst
Hudson Bay Mining & Smelting
Ph:  204-687-2374
Fax: 204-687-2771
guy.werry@hbms.ca