UNIVERSAL FLGDF FOR RPGLIB V1. SUBTTL EBCDIC/ASCII/SIXBIT CONVERSION FLAGS. ;COPYRIGHT 1975, DIGITAL EQUIPMENT CORP., MAYNARD MASS. ;RPGII MODIFICATIONS COPYRIGHT 1976, BOB CURRIER ;REVISION HISTORY: ;V10 ***** ; 6-JUL-75 /ACK CREATION. ;***** .DIRECTIVE .NOBIN SEARCH RPGPRM ;DEFINE ASSEMBLY PARAMETERS. %%LBLP==:%%LBLP DEBUG==:DEBUG BIS==:BIS SEARCH CHREQV ;DEFINE THE CHARACTER SET EQUIVALENCES. SEARCH NUMEQV ;DEFINE THE NUMERIC EQUIVALENCES. SALL COMMENT \ THIS MODULE CONTAINS MACROS WHICH WILL DEFINE FLAGS WHICH WILL BE USED IN VARIOUS CONVERSION TABLES. \ DEFINE DDEFLT (NUM)< DEFINE DEFLT < .XCREF %%T2==0 REPEAT NUM+1,< %DFLT1 \%%T2 %%T2==%%T2+1> .CREF>> SUBTTL ALPHABETIC CHARACTER FLAGS. COMMENT \ SYMBOL FORMAT: AL WHERE: LETTER IDENTIFIES THE CHARACCTER SET. NUMBER IDENTIFIES THE PARTICULAR CHARACTER. THE VALUE OF THE SYMBOL IS 1 IF THE CHARACTER IS ALPHABETIC AND IS ZERO IF IT IS NOT. \ DEFINE SET (L)< .XCREF %%T1==0 IFIDN ,<%%T1==77> IFIDN ,<%%T1==177> IFIDN ,<%%T1==377> IFE %%T1,< PRINTX ?BAD CALL TO MACRO "SET". PASS2 END> DDEFLT \%%T1 DEFINE %DFLT1 (N)> DEFINE %ALPH1 (N) .CREF> DEFINE ALPHA (C1, C2)< .XCREF %%T1==C2 IFB ,<%%T1==C1> %%T2==C1 REPEAT %%T1-C1+1,< %ALPH1 \%%T2 %%T2==%%T2+1> .CREF> ;ASCII: SET A ALPHA " " ALPHA "A","Z" ALPHA "a","z" DEFLT ;SIXBIT: SET S ALPHA ' ' ALPHA 'A','Z' DEFLT ;EBCDIC: SET E ALPHA 100 ; ALPHA 201,211 ;LOWER CASE A-I. ALPHA 221,231 ;LOWER CASE J-R. ALPHA 242,251 ;LOWER CASE S-Z. ALPHA 301,311 ;UPPER CASE A-I. ALPHA 321,331 ;UPPER CASE J-4. ALPHA 342,351 ;UPPER CASE S-Z. DEFLT SUBTTL END OF LINE CHARACTER FLAGS. COMMENT \ SYMBOL FORMAT: EL WHERE: LETTER IDENTIFIES THE CHARACTER SET. NUMBER IDENTIFIES THE PARTICULAR CHARACTER. THE VALUE OF THE SYMBOL IS 1 IF THE CHARACTER IS AN END OF LINE CHARACTER AND 0 IF IT IS NOT. \ DEFINE SET (L)< .XCREF %%T1==0 IFIDN ,<%%T1==177> IFIDN ,<%%T1==377> IFE %%T1,< PRINTX ?BAD CALL TO MACRO "SET". PASS2 END> DDEFLT \%%T1 DEFINE %DFLT1 (N)> DEFINE %EOL1 (N) .CREF> DEFINE EOL (C1, C2)< .XCREF IFB ,<%EOL1 \C1> IFNB ,< %%T1==C1 REPEAT C2-C1+1,< %EOL1 \%%T1 %%T1==%%T1+1>> .CREF> ;ASCII: SET A EOL 12 ; EOL 13 ; EOL 14 ; EOL 15 ; EOL 20,24 ;CARRAGE CONTROL CHARS. EOL 32 ; (FOR TTY'S) DEFLT ;EBCDIC: SET E EOL 45 ; EOL 25 ; DEFLT SUBTTL TOKENS - USED TO DETERMINE IF A STRING IS NUMERIC. COMMENT \ SYMBOL FORMAT: TK WHERE: LETTER IDENTIFIES THE CHARACTER SET. NUMBER IDENTIFIES THE PARTICULAR CHARACTER. THE VALUE OF THE SYMBOL IS THE TOKEN INTO WHICH THE CHARACTER IS CONVERTED. THESE ARE: 0 NULL 1 TAB 2 BLANK 3 DIGIT 4 OVERPUNCHED DIGIT 5 GRAPHIC SIGN 6 OTHER \ DEFINE SET (L)< .XCREF %%T1==0 IFIDN ,<%%T1==77> IFIDN ,<%%T1==177> IFIDN ,<%%T1==377> IFE %%T1,< PRINTX ?BAD CALL TO MACRO "SET". PASS2 END> DDEFLT \%%T1 DEFINE %DFLT1 (N)> DEFINE %TOKE1 (N, V) .CREF> DEFINE TOKEN (C, CV, V)< .XCREF IFB ,<%TOKE1 \C,\CV> IFNB ,< %%T1==C REPEAT CV-C+1,< %TOKE1 \%%T1,\V %%T1==%%T1+1>> .CREF> ;ASCII: SET A TOKEN 0,0 ; TOKEN " ",1 ; TOKEN " ",2 ; TOKEN "0","9",3 ;DIGITS TOKEN "]",4 ;VARIOUS FORMS OF "-0". TOKEN "!",4 TOKEN ":",4 TOKEN "}",4 TOKEN "[",4 ;VARIOUS FORMS OF "+0". TOKEN "?",4 TOKEN "{",4 TOKEN "A","R",4 ;OTHER OVERPUNCHED DIGITS. TOKEN "a","r",4 TOKEN "+",5 ;GRAPHIC SIGNS. TOKEN "-",5 DEFLT ;DEFAULT EVERYTHING ELSE TO 6. ;SIXBIT: ;CONVERT THE SIXBIT CHAR TO ASCII AND USE THE ASCII TOKENS, TO KEEP ; THINGS CONSISTANT. DEFINE A0 (N) DEFINE A1 (N1, N2) .XCREF %%T1==0 REPEAT 100,< A0 \%%T1 %%T1==%%T1+1> .CREF ;EBCDIC: SET E TOKEN 0,0 ; TOKEN 5,1 ; TOKEN 100,2 ; TOKEN 360,371,3 ;DIGITS. TOKEN 240,251,4 ;VARIOUS OVERPUNCHED DIGITS. TOKEN 260,271,4 TOKEN 300,311,4 TOKEN 320,331,4 TOKEN 340,351,4 TOKEN 116,5 ;GRAPHIC SIGNS. TOKEN 140,5 DEFLT ;DEFAULT EVERYTHING ELSE TO 6. ;FLAGS PICKED UP WITH THE NUMBERS BY THE NUMERIC CONVERSION ROUTINES. LDGCH.==1000 SPCCH.==400 IBNCH.==200 VALCH.==17 ;VALUE MASK. SUBTTL BIS TABLES IFE BIS,< END > ;SYMBOL BUILDING MACROS SYM%==0 DEFINE BTBMAC(SRC,DST) ;DEFINE BUILD MACROS < DEFINE ALPSYM(CH) ;ALPHA CONVERSION SYMBOL DEFINE NUMSYM(CH) ;NUMERIC CONVERSION SYMBOL ;VALUE MACROS DEFINE LEADNG ;LEADING CHAR DEFINE SPECAL ;SPECIAL DEFINE NEGOVP ;NEGATIVE OVERPUNCH DEFINE NUMVAL ;VALUE DEFINE TOKEN%(CH) ;VALUES TK.NUL==0 ;NUL TK.TAB==1 ;TAB TK.BLK==2 ;BLANK TK.DIG==3 ;DIGIT TK.OVP==4 ;OVERPUNCH DIGIT TK.SGN==5 ;GRAPHIC SIGN TK.OTH==6 ;OTHER DEFINE ALPHAB(CH) ;1 IF ALPHABETIC DEFINE IFTRUE ;TRUE IS NON-ZERO DEFINE IFALSE ;FALSE IS ZERO DEFINE GPHSGN ;GRAPHIC SIGN? > DEFINE BKTAB ; BLANK OR TAB < VAL==0 IFE TOKEN%(\%CHAR)-TK.BLK, IFE TOKEN%(\%CHAR)-TK.TAB, > DEFINE NULL ;NULL CHARACTER < VAL==0 IFE TOKEN%(\%CHAR)-TK.NUL, > DEFINE NUMERIC ;IS IT NUMERIC?? IFE TOKEN% (\%CHAR)-TK.OVP, > DEFINE ZERO ;IS IT A FORM OF ZERO?? ; <^-> > ;; NOTE THAT THIS IS MORE THAN THOSE CHARACTERS DESIGNATED ;; AS HAVING A ZERO VALUE. IT WILL ALSO PICK UP THOSE THAT JUST ;; HAPPEN TO GET ZERO AS VALUE. HOWEVER THIS IS GOOD ENOUGH FOR ;; OUR PURPOSES ; TRANSITION TABLE ACTION SETUPS DEFINE MSET ;SET M FLAG DEFINE MCLR ;CLEAR M FLAG DEFINE ABORT ;ABORT DEFINE SIGSET ;SET SIGNIFICANCE DEFINE ABTSIG ;ABORT IF SIGNIFICANCE ; SIZE OF TABLES DEFINE TBLSIZ < IFIDN , IFIDN , IFIDN , > > ;END OF BTBMAC MACRO END ;FLGDF.MAC