KEXT TITLE 'NIH TSO KERMIT - EXTERNAL ROUTINES AND TABLES' * * THE FOLLOWING MACROS ARE USED TO BUILD THE TRANSLATE TABLES * * 3 TABLES ARE BUILT: * * ASCII TO EBCDIC TRANSLATION TABLE * EBCDIC TO ASCII TRANSLATION TABLE * EBCDIC TO ASCII INVALID CODES TRANSLATE AND TEST TABLE * * THE MACROS ARE * * TTABLES - DEFINES TABLE NAMES AND DEFAULT VALUES * TTCH - DEFINES ASCII/EBCDIC AND EBCDIC/ASCII TRANSLATION * TRCHAE - DEFINES ASCII/EBCDIC TRANSLATION ONLY * TRCHEA - DEFINES EBCDIC/ASCII TRANSLATION ONLY * * IN THE TRTABLES MACRO THE OPERANDS ARE * * NAME OF ASCII TO EBCDIC TRANSLATE TABLE * DEFAULT EBCDIC CODE FOR ASCII TO EBCDIC TRANSLATION * NAME OF EBCDIC TO ASCII TRANSLATE TABLE * DEFAULT ASCII CODE FOR EBCDIC TO ASCII TRANSLATION * NAME OF THE INVALID CHARACTER TABLE FOR EBCDIC TO ASCII * * IN THE TTCH MACROS THE EBCDIC CODE IS GIVEN FIRST, THEN THE ASCII. * THE THIRD OPERAND IS AN OPTIONAL COUNT FOR A SEQUENCE OF CONSECUTIVE * CHARACTERS. * EJECT MACRO TTABLES &AE,&AEDEF,&EA,&EADEF,&TEA GBLC &TTAE,&TTEA,&TTTEA .* &TTAE SETC '&AE' &TTEA SETC '&EA' &TTTEA SETC '&TEA' .* &TTAE DC 256AL1(&AEDEF) &TTEA DC 256AL1(&EADEF) &TTTEA DC 256AL1(4) MEND * MACRO TTCH &EBCDIC,&ASCII,&COUNT GBLC &TTAE,&TTEA,&TTTEA LCLA &X .* .LOOP ANOP ORG &TTAE+&ASCII+&X DC AL1(&EBCDIC+&X) ORG &TTAE+&ASCII+&X+128 DC AL1(&EBCDIC+&X) ORG &TTEA+&EBCDIC+&X DC AL1(&ASCII+&X) ORG &TTTEA+&EBCDIC+&X DC AL1(0) &X SETA &X+1 AIF ('&COUNT' EQ '').END AIF (&X LT &COUNT).LOOP .END MEND * MACRO TTCHAE &EBCDIC,&ASCII,&COUNT GBLC &TTAE,&TTEA,&TTTEA LCLA &X .* .LOOP ANOP ORG &TTAE+&ASCII+&X DC AL1(&EBCDIC+&X) ORG &TTAE+&ASCII+&X+128 DC AL1(&EBCDIC+&X) &X SETA &X+1 AIF ('&COUNT' EQ '').END AIF (&X LT &COUNT).LOOP .END MEND * MACRO TTCHEA &EBCDIC,&ASCII,&COUNT GBLC &TTAE,&TTEA,&TTTEA LCLA &X .* .LOOP ANOP ORG &TTEA+&EBCDIC+&X DC AL1(&ASCII+&X) ORG &TTTEA+&EBCDIC+&X DC AL1(0) &X SETA &X+1 AIF ('&COUNT' EQ '').END AIF (&X LT &COUNT).LOOP .END MEND EJECT * * BUILD THE TRANSLATE TABLES * TABLES CSECT ENTRY ATOETBL,ETOATBL,ETOAERRT TTABLES ATOETBL,C':',ETOATBL,X'3A',ETOAERRT DEFAULT IS COLON TTCH X'00',X'00' NUL - NULL TTCH X'01',X'01' SOH - START OF HEADER TTCH X'02',X'02' STX - START OF TEXT TTCH X'03',X'03' ETX - END OF TEXT * * DUE TO A GLITCH IN TCAM, AN EBCDIC EOT (X'37') WILL NOT * BE SENT OUT AS AN ASCII EOT (X'04') EVEN IF THE TRANSLATE * TABLE IS SET UP THAT WAY. THEREFORE NIH HAS X'33' GOING * TO AN EOT IN ITS OUTGOING TSO TRANSLATE TABLE. * TTCHEA X'37',X'04' EOT - END OF TRANSMISSION TTCHEA X'33',X'04' EOT - END OF TRANSMISSION TTCHAE X'33',X'04' EOT - END OF TRANSMISSION TTCH X'2D',X'05' ENQ - ENQUIRY TTCH X'2E',X'06' ACK - ACKNOWLEDGE TTCH X'2F',X'07' BEL - BELL TTCH X'16',X'08' BS - BACKSPACE TTCH X'05',X'09' HT - HORIZONTAL TAB TTCH X'25',X'0A' LF - LINEFEED TTCH X'0B',X'0B' VT - VERTICAL TAB TTCH X'0C',X'0C' FF - FORM FEED TTCH X'0D',X'0D' CR - CARRIAGE RETURN TTCH X'0E',X'0E' SO - SHIFT OUT TTCH X'0F',X'0F' SI - SHIFT IN TTCH X'10',X'10' DLE - DATA LINK ESCAPE TTCH X'11',X'11' DC1 - DEVICE CONTROL 1 (XON) TTCH X'12',X'12' DC2 - DEVICE CONTROL 2 TTCH X'35',X'13' DC3 - DEVICE CONTROL 3 (XOFF) TTCH X'3C',X'14' DC4 - DEVICE CONTROL 4 TTCH X'3D',X'15' NAK - NEGATIVE ACKNOWLEDGE TTCH X'32',X'16' SYN - SYNCHRONOUS IDLE TTCH X'26',X'17' ETB - END TRANSMISSION BLOCK TTCH X'18',X'18' CAN - CANCEL TTCH X'19',X'19' EM - END OF MEDIUM TTCH X'3F',X'1A' SUB - SUBSTITUTE TTCH X'27',X'1B' ESC - ESCAPE TTCH X'1C',X'1C' FS - FILE SEPARATOR TTCH X'1D',X'1D' GS - GROUP SEPARATOR TTCH X'1E',X'1E' RS - RECORD SEPARATOR TTCH X'1F',X'1F' US - UNIT SEPARATOR TTCH C' ',X'20' SPACE TTCH C'!',X'21' EXCLAMATION POINT TTCH C'"',X'22' DOUBLE QUOTE TTCH C'#',X'23' POUND SIGN TTCH C'$',X'24' DOLLAR SIGN TTCH C'%',X'25' PERCENT SIGN TTCH C'&&',X'26' AMPERSAND TTCH C'''',X'27' SINGLE QUOTE TTCH C'(',X'28' LEFT PARENTHESIS TTCH C')',X'29' RIGHT PARENTHESIS TTCH C'*',X'2A' ASTERISK TTCH C'+',X'2B' PLUS SIGN TTCH C',',X'2C' COMMA TTCH C'-',X'2D' MINUS SIGN (HYPHEN) TTCHEA X'62',X'2D' WYLBUR INSERTED HYPHEN TTCH C'.',X'2E' PERIOD TTCH C'/',X'2F' SLASH TTCH C'0',X'30',10 DIGITS 0-9 TTCH C':',X'3A' COLON TTCH C';',X'3B' SEMICOLON TTCH C'<',X'3C' LESS THAN TTCH C'=',X'3D' EQUAL SIGN TTCH C'>',X'3E' GREATER THAN TTCH C'?',X'3F' QUESTION MARK TTCH C'@',X'40' AT SIGN TTCH C'A',X'41',9 UPPER CASE A-I TTCH C'J',X'4A',9 UPPER CASE J-R TTCH C'S',X'53',8 UPPER CASE S-Z TTCH X'AD',X'5B' LEFT SQUARE BRACKET TTCH X'E0',X'5C' BACKSLASH TTCH X'BD',X'5D' RIGHT SQUARE BRACKET TTCH X'5F',X'5E' CIRCUMFLEX (EBCDIC NOT SIGN) TTCHEA X'BE',X'5E' CIRCUMFLEX TTCH C'_',X'5F' UNDERSCORE TTCH X'79',X'60' ACCENT GRAVE TTCH C'a',X'61',9 LOWER CASE A-I TTCH C'j',X'6A',9 LOWER CASE J-R TTCH C's',X'73',8 LOWER CASE S-Z TTCH X'8B',X'7B' LEFT CURLY BRACE TTCHEA X'C0',X'7B' LEFT CURLY BRACE TTCH X'4F',X'7C' VERTICAL BAR TTCH X'9B',X'7D' RIGHT CURLY BRACE TTCHEA X'D0',X'7D' RIGHT CURLY BRACE TTCH X'A1',X'7E' TILDE TTCH X'07',X'7F' DEL - DELETE ORG EJECT * * THIS ROUTINE RETURNS THE NAME OF THE SYSTEM WIDE PROFILE * USE THIS TO SET DEFAULTS FOR ALL TSO KERMIT USERS IN THE * SYSTEM * * RETURN - REG 1 POINTS TO NAME OF SYSTEM PROFILE * REG 0 IS LENGTH OF STRING * ENTRY SYSPRODS SYSPRODS BALR 15,0 USING *,15 LA 1,SYSPROF ADDRESS OF PROFILE NAME LA 0,SYSPROFL LENGTH OF PROFILE NAME BR 14 DROP 15 * * PLACE THE FULLY QUALIFIED DSNAME OF YOUR SYSTEM PROFILE IN SYSPROF * SYSPROF DC C'NIH.KERMIT.PROFILE.CLIST' SYSPROFL EQU *-SYSPROF EJECT * * THIS ROUTINE RETURNS THE NAME OF THE USER PROFILE * USE THIS TO SET DEFAULTS FOR EACH TSO KERMIT USER * * RETURN - REG 1 POINTS TO NAME OF USER PROFILE * REG 0 IS LENGTH OF STRING * ENTRY USRPRODS USRPRODS BALR 15,0 USING *,15 LA 1,USRPROF ADDRESS OF PROFILE NAME LA 0,USRPROFL LENGTH OF PROFILE NAME BR 14 DROP 15 * * PLACE THE DATA SET NAME OF YOUR USER PROFILE IN USRPROF * THE USERID PREFIX WILL BE ADDED BY TSO KERMIT * USRPROF DC C'KERMIT.PROFILE.CLIST' USRPROFL EQU *-USRPROF EJECT * * THIS ROUTINE RETURNS A NAME USED IN SET VOLUME TO INDICATE * THAT THE SYSTEM MAY CHOOSE THE VOLUME TO BE USED TO STORE * A RECEIVED DATA SET. * * RETURN - REG 1 POINTS TO STRING CONTAINING NAME * REG 0 IS LENGTH OF STRING * ENTRY XANYVOL XANYVOL BALR 15,0 USING *,15 LA 1,ANYVOL ADDRESS OF NAME LA 0,ANYVOLL LENGTH OF NAME BR 14 DROP 15 * * PLACE THE NAME OF YOUR CHOICE HERE * ANYVOL DC C'TMP' ANYVOLL EQU *-ANYVOL EJECT * * THIS ROUTINE RETURNS A STRING CONTAINING THE USERID * PREFIX THAT TSO KERMIT USES TO PREFIX DATA SET NAMES * UNLESS THE DATA SET NAMES ARE IN QUOTES. UPON * ENTRY TO THE ROUTINE, ADDRESSES OF THE COMMAND * PROCESSOR PARAMETER LIST AND THE USER PROFILE TABLE ARE * AVAILABLE IN REGISTERS. NIH USES STANDARD IBM CONTROL * BLOCKS IN THIS AREA. INSTALLATIONS WHICH HAVE MODIFIED * THE WAY DATA SET NAMES ARE PREFIXED CAN MODIFY * THIS ROUTINE. NIH USES THE FIELDS UPTPREX AND * UPTPREFL FOR PREFIX AND LENGTH RESPECTIVELY. IF YOUR * INSTALLATION USES THE SAME STANDARDS, THEN NO * MODIFICATIONS WILL BE NECESSARY ON YOUR PART. * * INPUT REG 1=A(CPPL) * REG 0=A(UPT) * * RETURN - REG 1 POINTS TO USER PREFIX * REG 0 IS PREFIX LENGTH * ENTRY USERID USERID BALR 15,0 USING *,15 LR 1,0 USING UPT,1 SR 0,0 IC 0,UPTPREFL LA 1,UPTPREFX DROP 1 BR 14 EJECT IKJCPPL EJECT IKJUPT END