Guardian Programmer's Guide

Table Of Contents
Using Nowait Input/Output
Guardian Programmer’s Guide 421922-014
4 - 17
Nowait I/O: An Example
!------------------------------------------------------------
! Procedure to prompt the user to log on. If logon is
! successful, the global variable LOGGED^ON is set to 1.
!------------------------------------------------------------
PROC LOGON;
BEGIN
LITERAL NAMESIZE = 20;
LITERAL PWSIZE = 10;
STRING .USER^NAME[0:NAMESIZE - 1];
INT NAMELEN;
STRING .PASSWORD[0:PWSIZE - 1];
INT PWLEN;
INT I;
! Space down five lines and announce logon:
FOR I := 1 TO 5 DO PRINT^BLANK;
PRINT^STR("Please log on");
! Loop until logon is successful:
DO
BEGIN
! Request user name:
PRINT^BLANK;
SBUFFER ':=' "User name: " -> @S^PTR;
CALL WRITEREADX(TERMNUM,SBUFFER,@S^PTR '-' @SBUFFER,
NAMESIZE);
IF <> THEN CALL FILE^ERRORS(TERMNUM);
CALL AWAITIOX(TERMNUM,
!buffer^address!,
NAMELEN);
IF <> THEN CALL FILE^ERRORS(TERMNUM);
USER^NAME ':=' SBUFFER FOR NAMELEN;
! Request user's password, disabling echo of the input:
CALL SETMODE(TERMNUM,20,0);
SBUFFER ':=' "Password: " -> @S^PTR;
CALL WRITEREADX(TERMNUM,SBUFFER,@S^PTR '-' @SBUFFER,
PWSIZE);
IF <> THEN CALL FILE^ERRORS(TERMNUM);
CALL AWAITIOX(TERMNUM,
!buffer^address!,
PWLEN);
IF <> THEN CALL FILE^ERRORS(TERMNUM);
CALL SETMODE(TERMNUM,20,1);
PASSWORD ':=' SBUFFER FOR PWLEN;