The 3000 system these programs are is no longer in production, so they are
not likely going to be changed.
I recall looking at those when they came out, but never bothered
implementing them in the program. Cobol is more fun anyway.
Bob Comeau
Sr. Systems Programmer Analyst
Crossley Carpet Mills Ltd.
(902)895-5491 ex 139
-----Original Message-----
From: HP-3000 Systems Discussion [mailto:[log in to unmask]]On
Behalf Of Robert Mills
Sent: February 14, 2005 10:04 AM
To: [log in to unmask]
Subject: Re: VPLUS and VSETERROR/VREADFIELDS/VFIELDEDITS
Bob,
You could replace your SUB-GET-TERMOPTIONS and SUB-PUT-TERMOPTIONS performs
with calls to BITMAPCNV. Does exactly the same thing but it also returns a
status indicating if the conversion was successful.
BITMAPCNV is documented in Appendix I of the VPLUS Reference Manual.
regards,
Robert W.Mills
Systems Development Manager
Windsong Services
(020) 8309 3604
HP-3000 Systems Discussion wrote:
> After detecting that function key has been pressed, you can force a
> read of the screen as if they had pressed enter and proceed.
> ...
> 111900 01 BITMAP-FIELDS.
> 111950*
> 112000*** A TWO WORD BITMAP IS USED SO THAT A TRUE LOGICAL
> 112050*** INTERPRETATION OF ALL 16 BITS OF THE WORD CAN BE
> 112100*** DETERMINED, OTHER WISE BIT ZERO BEING ON COULD
> 112150*** CAUSE PROBLEMS IN THE CONVERSION ROUTINES (NEGATIVE)
> 112200*
> 112250 05 BITMAP.
> 112300 10 BM-DOUBLE PIC S9(9) COMP.
> 112350 10 BM-SPLIT REDEFINES BM-DOUBLE.
> 112400 15 BM-IGNORE PIC S9(4) COMP.
> 112450 15 BM-WORD PIC XX.
> 112500 05 BYTEMAP.
> 112550 10 BM-BYTE OCCURS 16 TIMES INDEXED BY BMX PIC 9.
> 112600 88 BIT-OFF VALUE 0.
> 112650 88 BIT-ON VALUE 1.
> 112700
> ...
> 115150 01 TERMOPTIONS-BYTEMAP.
> 115200 05 TERMOPTIONS-RESERVED PIC X(9).
> 115250 05 TERMOPTIONS-9-10 PIC 99.
> 115300 88 DISABLE-TIMEOUT VALUE 00, 11.
> 115350 88 ENABLE-TIMEOUT VALUE 01.
> 115400 05 TERMOPTIONS-11-12 PIC 99.
> 115450 88 NORMAL-CLOSE VALUE 00.
> 115500 88 DONT-CLEAR-CLOSE VALUE 10.
> 115550 05 TERMOPTIONS-13-14 PIC 99.
> 115600 88 NORMAL-READ VALUE 00, 11.
> 115650 88 AUTO-READ VALUE 01.
> 115700 05 TERMOPTIONS-15 PIC 9.
> 115750 88 ENABLE-BELL VALUE 0.
> 115800 88 DISABLE-BELL VALUE 1.
> ...
>
> 676900 Z-900-DO-AUTOREAD.
> 676950*****
> 677000***** Read form WITHOUT user having pressed enter
> 677050*****
> 677100 SET VREAD-NOT-OK TO TRUE
> 677150 SET VPLUS-OK TO TRUE
> 677200 PERFORM SUB-GET-TERMOPTIONS
> 677250 SET AUTO-READ TO TRUE
> 677300 PERFORM SUB-PUT-TERMOPTIONS
> 677350 CALL INTRINSIC "VREADFIELDS" USING COMAREA.
> 677400 IF VPLUS-OK
> 677450 PERFORM SUB-GET-TERMOPTIONS
> 677500 SET NORMAL-READ TO TRUE
> 677550 PERFORM SUB-PUT-TERMOPTIONS
> 677600 PERFORM Z-900-PROCESS-ENTER-KEY
> 677650 ELSE
> 677700 SET ABORT TO TRUE
> 677750 MOVE
> 677800 "**** Paragraph: Z-900-AUTOREAD - Terminal Read"
> 677850 TO ERROR-LOCATION
> 677900 PERFORM Z-100-GET-ERROR-MESSAGE.
> ...
> 682950 SUB-GET-TERMOPTIONS.
> 683000 MOVE TERMOPTIONS-WORD TO BM-WORD
> 683050 PERFORM SUB-BIT-TO-BYTE
> 683100 MOVE BYTEMAP TO TERMOPTIONS-BYTEMAP.
> 683150
> 683200 SUB-PUT-TERMOPTIONS.
> 683250 MOVE TERMOPTIONS-BYTEMAP TO BYTEMAP
> 683300 PERFORM SUB-BYTE-TO-BIT
> 683350 MOVE BM-WORD TO TERMOPTIONS-WORD.
> ...
> 83950 SUB-BIT-TO-BYTE.
> 684000 MOVE ALL ZEROS TO BYTEMAP.
> 684050 PERFORM VARYING BMX FROM 16 BY -1 UNTIL BMX < 1
> 684100 DIVIDE BM-DOUBLE BY 2 GIVING BM-DOUBLE
> 684150 REMAINDER BM-BYTE(BMX)
> 684200 END-PERFORM.
> 684250
> 684300 SUB-BYTE-TO-BIT.
> 684350 MOVE ZERO TO BM-DOUBLE
> 684400 PERFORM VARYING BMX FROM 1 BY 1 UNTIL BMX > 16
> 684450 MULTIPLY 2 BY BM-DOUBLE
> 684500 ADD BM-BYTE(BMX) TO BM-DOUBLE
> 684550 END-PERFORM.
>
> There may be better ways to handle the bit/byte conversions now, but
> it works.
>
> Bob Comeau
> Sr. Systems Programmer Analyst
> Crossley Carpet Mills Ltd.
> (902)895-5491 ex 139
>
>
> -----Original Message-----
> From: HP-3000 Systems Discussion [mailto:[log in to unmask]]On
> Behalf Of Matthew Perdue
> Sent: February 11, 2005 6:54 PM
> To: [log in to unmask]
> Subject: Re: VPLUS and VSETERROR/VREADFIELDS/VFIELDEDITS
>
>
> Quoting Peter Smithson <[log in to unmask]>:
>
>> In article <[log in to unmask]>,
>> [log in to unmask] says...
>>
>>> The screen buffer is not read if a function key is pressed, only if
>>> enter is pressed. If the user pressed a function key, and you want
>>> to know the contents of the screen buffer, you have to force a read
>>> with VGETBUFFER.
>>
>> Thanks for the replies - I know there isn't much point in running the
>> VFIELDEDITS when no buffer is present (as they hit a function key).
>>
>> I'm trying to figure out how some customers code is working. In the
>> code sample I gave, you can see that there is no conditinal
>> execution of code. I think they do this is it's a generic library
>> of calls but I wrote a simple example program showing the behaviour.
>>
>> Without the VSETERROR and without setting numerrs, I get an error
>> from VREADFIELDS (due to the required fields) whether I hit a
>> function key or enter.
>>
>> With the VSETERROR and setting numerrs, I only get an error from
>> VREADFIELDS if enter is pressed.
>>
>> Anyone know why?
>>
>> Cheers
>>
>> Peter
>
> This is a code snippet of what I use:
>
> MOVE SPACES TO MBR-MSTR-SPACES.
> MOVE HOLD-MEMB-ID TO S-MM-MBR-KEY.
> MOVE "MEMBER_MAST" TO COM-NFNAME.
>
> CALL "VGETNEXTFORM" USING COMAREA.
> IF COM-STATUS NOT = 0
> MOVE 0 TO COM-STATUS
> CALL "VCLOSETERM" USING COMAREA
> ...etc....
>
> CALL "VPUTBUFFER" USING COMAREA MBR-MSTR-SCREEN
> MBR-MSTR-BUFFER.
> MOVE SPACES TO ERR-MSG.
> MOVE "Enter member number, press enter" TO ERR-MSG.
> MOVE 2 TO FIELD-NUM.
> CALL "VSETERROR" USING COMAREA FIELD-NUM ERR-MSG MSG-LEN.
> CALL "VSHOWFORM" USING COMAREA.
> *
> 110-PROCESS-MBR-MSTR-SCREEN.
>
> MOVE 0 TO COM-STATUS COM-NUMERRS.
> CALL "VREADFIELDS" USING COMAREA.
>
> IF ENTER-TIME-OUT GO TO 010-SETUP-MAIN-SCREEN.
>
> CALL "VGETBUFFER" USING COMAREA MBR-MSTR-SCREEN
> IF ENTER-KEY GO TO 120-PROCESS-FIELD-EDITS.
> IF F1 GO TO 010-SETUP-MAIN-SCREEN
> ELSE IF F2 GO TO 100A-MEMBER-ADDRESS
> ELSE IF F3 GO TO 100F-MEMBER-FINANCIAL
> ELSE IF F4 GO TO 100I-MEMBER-INQUIRIES
> ELSE IF F5 MOVE SPACES TO HOLD-MEMB-ID
> GO TO 100-MEMBER-MASTER
> ELSE IF F6 GO TO
> ELSE IF F7 GO TO
> ELSE IF F8 GO TO 010-SETUP-MAIN-SCREEN
> ELSE
> MOVE SPACES TO ERR-MSG
> MOVE "INVALID KEY SELECTED" TO ERR-MSG
> CALL "VPUTWINDOW" USING COMAREA ERR-MSG MSG-LEN
> CALL "VSHOWFORM" USING COMAREA
> GO TO 110-PROCESS-MBR-MSTR-SCREEN.
> *
> 120-PROCESS-FIELD-EDITS.
>
> CALL "VFIELDEDITS" USING COMAREA.
> IF COM-NUMERRS NOT = 0
> MOVE SPACES TO ERR-MSG
> CALL "VERRMSG" USING COMAREA ERR-MSG MSG-LEN R-LEN
> CALL "VPUTWINDOW" USING COMAREA ERR-MSG MSG-LEN
> CALL "VSHOWFORM" USING COMAREA
> GO TO 110-PROCESS-MBR-MSTR-SCREEN.
> *
> 130-PROCESS-DATA.
>
> CALL "VGETBUFFER" USING COMAREA MBR-MSTR-SCREEN
> MBR-MSTR-BUFFER.
>
> ...etc....
>
> * To join/leave the list, search archives, change list settings, *
> * etc., please visit http://raven.utc.edu/archives/hp3000-l.html *
>
> * To join/leave the list, search archives, change list settings, *
> * etc., please visit http://raven.utc.edu/archives/hp3000-l.html *
* To join/leave the list, search archives, change list settings, *
* etc., please visit http://raven.utc.edu/archives/hp3000-l.html *
* To join/leave the list, search archives, change list settings, *
* etc., please visit http://raven.utc.edu/archives/hp3000-l.html *
|