TITLE ALF FOR LIBOL V12C SUBTTL CHECK STRING FOR ALPHABETICS ONLY /ACK SEARCH COPYRT SALL ;COPYRIGHT (C) DIGITAL EQUIPMENT CORPORATION 1974, 1985 ;ALL RIGHTS RESERVED. ; ;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED ;ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE. ;REVISION HISTORY: ;V10 ***** ; 13-DEC-74 /ACK CREATION. ; 5/12/75 /DBT ADD BIS CODE ;***** SEARCH LBLPRM ;DEFINE PARAMETERS. %%LBLP==:%%LBLP EBCMP.==:EBCMP. BIS==:BIS EXTERN EASTB. ;FORCE EASTBL TO BE LOADED. HISEG .COPYRIGHT ;Put COPYRIGHT statement in .REL file. COMMENT \ THIS ROUTINE CHECKS A STRING TO SEE IF IT CONTAINS ONLY ALPHABETIC CHARACTERS. CALL: MOVEI 16,PARAMETER ADDRESS PUSHJ 17,ALF.6/ALF.7/ALF.9 PARAMETERS: BITS 0-5 BYTE POINTER RESIDUE FOR INPUT FIELD. BIT 6 IGNORED (1 IF THE FIELD IS SIGNED.) BITS 7-17 SIZE OF THE INPUT FIELD. BITS 18-35 ADDRESS OF THE FIRST CHARACTER OF THE INPUT FIELD. RETURNS: CALL+1 IF THE STRING LENGTH IS ZERO OR CONTAINS A NON ALPHABETIC CHARACTER. CALL+2 IF THE STRING CONTAINS ONLY ALPHABETIC CHARACTERS. REGISTERS USED: CH, MASK, JAC, IPTR, CNT, SW \ ENTRY ALF.6 ;IF THE STRING IS SIXBIT. ENTRY ALF.7 ;IF THE STRING IS ASCII. IFN EBCMP.,< ENTRY ALF.9 ;IF THE STRING IS EBCDIC. > IFE BIS,< ;LOCAL AC DEFINITIONS: MASK==TAC4 EXTERN RET.1 ;RETURNS TO CALL+1 EXTERN RET.2 ;RETURNS TO CALL+2 EXTERN SET1. ;PICKS UP THE PARAMETERS. EXTERN TYPCD. ;TABLE OF CHARACTER TYPE CODES. EXTERN ALFMS. ;TABLE OF ALPHABETIC TYPE CODE MASKS. ALF.6: JSP CH, ALF ;ENTER HERE IF THE INPUT IS SIXBIT, ALF.7: JSP CH, ALF ; HERE IF IT IS ASCII AND IFN EBCMP.,< ALF.9: JSP CH, ALF ; HERE IF IT IS EBCDIC. > ALF: SUBI CH, ALF.6-5 ;FIND OUT WHAT THE INPUT LOOKS LIKE. MOVE MASK, ALFMS.-6(CH) ;SELECT THE APPROPRIATE MASK. JSP JAC, SET1. ;GO SET UP THE PARAMETERS. ;NOTE: IF THE STRING LENGTH IS ZERO ; WE RETURN TO CALL+1, NOT HERE. ALF1: ILDB CH, IPTR ;GET A CHAR. AND MASK, TYPCD.(CH) ;GET ITS ALPHABETIC FLAG. JUMPE MASK, RET.1 ;RETURN TO CALL+1 IF IT'S NOT ALPHABETIC. SOJG CNT, ALF1 ;LOOP IF THERE ARE MORE CHARS, JRST RET.2 ;OTHERWISE RETURN TO CALL+2 - ALL ALPHABETIC. > IFN BIS,< EXTERN RET.1 ;RETURNS TO CALL+1 EXTERN RET.2 ;RETURNS TO CALL+2 EXTERN BSET1. ;PICKS UP THE PARAMETERS. ALF.6: JSP BISCH, ALF ;ENTER HERE IF THE INPUT IS SIXBIT, ALF.7: JSP BISCH, ALF ; HERE IF IT IS ASCII AND IFN EBCMP.,< BLOCK 1 ALF.9: JSP BISCH, ALF ; HERE IF IT IS EBCDIC. > ALF: SUBI BISCH, ALF.6-5 ;FIND OUT WHAT THE INPUT LOOKS LIKE. JSP JAC, BSET1. ;GO SET UP THE PARAMETERS. ;NOTE: IF THE STRING LENGTH IS ZERO ; WE RETURN TO CALL+1, NOT HERE. ALF1: MOVE DSTCNT,SRCCNT ;MAKE SRC AND DST SIZES SAME SETZ DSTPT, ;NO OUTPUT HOWEVER TLO B.FLAG,BFLG.S ;TURN SIGNIFICANCE ON EXTEND B.FLAG,ALFE0-6(BISCH) ;GO JRST ERROR ;TROUBLE TLNN B.FLAG,BFLG.M ;M FLAG WILL BE SET FOR NON-ALPH AOS (PP) ;GOOD - NO ALPHAS POPJ PP, ;BAD ALFE0: MOVST ALPS.6## MOVST ALPS.7## 0 MOVST ALPS.9## ERROR: OUTSTR [ASCIZ '?LIBOL ALF.N ERROR '] POPJ PP, ;SOMETHING IS WRONG HERE > END ;ALF