                                XPO$VALID_IOB - IOB File-spec V  4-FEB-2004 11:01:42  BLISS-32I T1.1-053                Page 1
                                                                19-MAR-2002 10:12:47  [LASTOVICA.XPORT.VMSGEN]XVALID.BLI;1

    0	      1 MODULE XVALID (	IDENT = 'X00.03'	%TITLE 'XPO$VALID_IOB - IOB File-spec Validation'
    0	      2 		%BLISS32( ,ADDRESSING_MODE( EXTERNAL=LONG_RELATIVE ) )
    0	      3 		%BLISS36( ,ENTRY( XPO$VALID_IOB ),OTS='' )
    0	      4 		) =
    0	      5 BEGIN
    1	      6 
    1	      7 !
    1	      8 !			  COPYRIGHT (c) 1980 BY
    1	      9 !	      DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
    1	     10 !
    1	     11 ! THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND  COPIED
    1	     12 ! ONLY  IN  ACCORDANCE  WITH  THE  TERMS  OF  SUCH  LICENSE AND WITH THE
    1	     13 ! INCLUSION OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR  ANY  OTHER
    1	     14 ! COPIES  THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY
    1	     15 ! OTHER PERSON.  NO TITLE TO AND OWNERSHIP OF  THE  SOFTWARE  IS  HEREBY
    1	     16 ! TRANSFERRED.
    1	     17 !
    1	     18 ! THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT  NOTICE
    1	     19 ! AND  SHOULD  NOT  BE  CONSTRUED  AS  A COMMITMENT BY DIGITAL EQUIPMENT
    1	     20 ! CORPORATION.
    1	     21 !
    1	     22 ! DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR  RELIABILITY  OF  ITS
    1	     23 ! SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.
    1	     24 !
    1	     25 
    1	     26 !++
    1	     27 !
    1	     28 ! FACILITY:  BLISS Library
    1	     29 !
    1	     30 ! ABSTRACT:
    1	     31 !
    1	     32 !	This module implements XPORT IOB File-spec validation.
    1	     33 !
    1	     34 ! ENVIRONMENT:  User mode - multiple host operating/file systems
    1	     35 !
    1	     36 ! AUTHOR:  Ward Clark,	CREATION DATE:  10 March 1980
    1	     37 !
    1	     38 !--

XVALID                          XPO$VALID_IOB - IOB File-spec V  4-FEB-2004 11:01:42  BLISS-32I T1.1-053                Page 2
X00.03                                                          19-MAR-2002 10:12:47  [LASTOVICA.XPORT.VMSGEN]XVALID.BLI;1

    1	     40 !
    1	     41 ! TABLE OF CONTENTS:
    1	     42 !
    1	     43 
    1	     44 FORWARD ROUTINE
    1	     45     XPO$VALID_IOB;					! IOB file-spec validation routine
    1	     46 
    1	     47 !
    1	     48 ! INCLUDE FILES:
    1	     49 !
    1	     50 
    1	     51 LIBRARY  'XPORT' ;					! Public XPORT control block and macro definitions
    1	     53 LIBRARY  'XPOSYS' ;					! Internal XPORT macro definitions
    1	     55 
    1	     56     $XPO_SYS_TEST( $ALL )
		; %PRINT:		This module was compiled for VAX/VMS
		; %PRINT:		XPORT V1.3-51    XPOSYS V1.3-16    XPO$K_VERSION = 1    XPO$K_LEVEL = 3
    1	     57 
    1	     58 !
    1	     59 ! MACROS:
    1	     60 !
    1	     61 
    1	     62 MACRO
    1	     63     setup_string( string, primary ) =
M   1	     64 	IF .string EQL 0
M   1	     65 	THEN
M   1	     66 	    string = XST$NULL_STRING
M   1	     67 	ELSE
M   1	     68 	    $XPO_IF_NOT( $STR_VALIDATE( .string ) )
M   1	     69 	    THEN
M   1	     70 		$XPO_RETURN( primary, (.$XPO_STATUS) ) %;
    1	     71 
    1	     72 !
    1	     73 ! EQUATED SYMBOLS:
    1	     74 !
    1	     75 
    1	     76 !
    1	     77 ! PSECT DECLARATIONS:
    1	     78 !
    1	     79 
    1	     80     $XPO_PSECTS						! Declare XPORT PSECT names and attributes
    1	     81 
    1	     82 !
    1	     83 ! OWN STORAGE:
    1	     84 !
    1	     85 
    1	     86 !
    1	     87 ! EXTERNAL REFERENCES:
    1	     88 !
    1	     89 
    1	     90 EXTERNAL
    1	     91     XST$NULL_STRING :  $STR_DESCRIPTOR();		! FIXED null string

XVALID                          XPO$VALID_IOB - IOB File-spec V  4-FEB-2004 11:01:42  BLISS-32I T1.1-053                Page 3
X00.03                                                          19-MAR-2002 10:12:47  [LASTOVICA.XPORT.VMSGEN]XVALID.BLI;1

    1	     93 GLOBAL ROUTINE XPO$VALID_IOB( iob ) =
    1	     94 
    1	     95 !++
    1	     96 !
    1	     97 ! FUNCTIONAL DESCRIPTION:
    1	     98 !
    1	     99 !	This routine validates all IOB file-spec and prompt strings provided
    1	    100 !	by the user.  Missing strings are replaced by null strings to simplify
    1	    101 !	subsequent processing.
    1	    102 !
    1	    103 ! FORMAL PARAMETERS:
    1	    104 !
    1	    105 !	iob - address of an IOB
    1	    106 !
    1	    107 ! IMPLICIT INPUTS:
    1	    108 !
    1	    109 !	None
    1	    110 !
    1	    111 ! IMPLICIT OUTPUTS:
    1	    112 !
    1	    113 !	None
    1	    114 !
    1	    115 ! COMPLETION CODES:
    1	    116 !
    1	    117 !	XPO$_NORMAL - the tested IOB strings are valid
    1	    118 !
    1	    119 !	XPO$_BAD_SPEC - the primary file-spec is invalid
    1	    120 !		(IOB$G_2ND_CODE = completion code from $STR_VALIDATE)
    1	    121 !	XPO$_BAD_DFLT - the default file-spec is invalid
    1	    122 !		(IOB$G_2ND_CODE = completion code from $STR_VALIDATE)
    1	    123 !	XPO$_BAD_RLTD - the related file-spec is invalid
    1	    124 !		(IOB$G_2ND_CODE = completion code from $STR_VALIDATE)
    1	    125 !	XPO$_BAD_PROMPT - the input prompt is invalid
    1	    126 !		(IOB$G_2ND_CODE = completion code from $STR_VALIDATE)
    1	    127 !
    1	    128 ! SIDE EFFECTS:
    1	    129 !
    1	    130 !	None
    1	    131 !
    1	    132 !--
    1	    133 
    1	    134     BEGIN
    2	    135 
    2	    136     MAP
    2	    137 	iob :  REF $XPO_IOB();
    2	    138 
    2	    139 !
    2	    140 ! Validate or default each IOB string passed by the caller.
    2	    141 !
    2	    142 
    2	    143     setup_string( iob[IOB$A_FILE_SPEC], BAD_SPEC );
    2	    144 
    2	    145     setup_string( iob[IOB$A_DEFAULT], BAD_DFLT );
    2	    146 
    2	    147     setup_string( iob[IOB$A_RELATED], BAD_RLTD );
    2	    148 
    2	    149     setup_string( iob[IOB$A_PROMPT], BAD_PROMPT );

XVALID                          XPO$VALID_IOB - IOB File-spec V  4-FEB-2004 11:01:42  BLISS-32I T1.1-053                Page 4
X00.03                                                          19-MAR-2002 10:12:47  [LASTOVICA.XPORT.VMSGEN]XVALID.BLI;1

    2	    150 
    2	    151 !
    2	    152 ! Return to the caller.
    2	    153 !
    2	    154 
    2	    155     RETURN XPO$_NORMAL
    2	    156 
    2	    157     END;
    1	    158 END
    1	    159 ELUDOM

XVALID                          Machine Code Listing             4-FEB-2004 11:01:42  BLISS-32I T1.1-053                Page 5
X00.03                                                          19-MAR-2002 10:12:47  [LASTOVICA.XPORT.VMSGEN]XVALID.BLI;1

				      .psect _XPO$CODE, CON, LCL, SHR, EXE, NOWRT, NOVEC
				      .proc   XPO$VALID_IOB
				      .align 32
				      .global  XPO$VALID_IOB
			XPO$VALID_IOB:											   // 000093
			   { .mii 
002C01E3EF00     0000		      alloc   r60 = rspfs, 1, 29, 1, 0
000188000EC0     0001		      mov     r59 = br0
010800100F40     0002		      mov     r61 = r1
			   }
			   { .mii 
000008000000     0010		      nop.m   0
0000B2000800     0011		      sxt4    r32 = IOB ;;			// r32 = r32				   // 000143
010802008800     0012		      adds    r32 = 4, r32 ;;
			   }
			   { .mmi 
00B08A0F8200     0020		      ld4     r8 = [r32], -4 ;;
01C430800000     0021		      cmp4.eq pr0, pr6 = r0, r8
000008000000     0022		      nop.i   0
			   }
			   { .mfb 
000008000000     0030		      nop.m   0
000008000000     0031		      nop.f   0
00860001E006     0032	       (pr6)  br.cond.dpnt.few L$2
			   }
			   { .mmi 
012000100240     0040		      add     r9 = @ltoff(XST$NULL_STRING), r1 ;;
0080C0900240     0041		      ld8     r9 = XST$NULL_STRING		// r9 = [r9]
010802008800     0042		      adds    r32 = 4, r32 ;;
			   }
			   { .mfi 
00BC8A013F00     0050		      st4     [r32] = r9, -4
000008000000     0051		      nop.f   0
000008000000     0052		      nop.i   0 ;;
			   }
	         0060	L$4:
			   { .mmi 
010802010800     0060		      adds    r32 = 8, r32 ;;								   // 000145
00B08A0F0AC0     0061		      ld4     r43 = [r32], -8
000008000000     0062		      nop.i   0 ;;
			   }
			   { .mfb 
01C442B00000     0070		      cmp4.eq pr0, pr8 = r0, r43
000008000000     0071		      nop.f   0
008600020008     0072	       (pr8)  br.cond.dpnt.few L$7
			   }
			   { .mmi 
012000100B00     0080		      add     r44 = @ltoff(XST$NULL_STRING), r1 ;;
0080C2C00B00     0081		      ld8     r44 = XST$NULL_STRING		// r44 = [r44]
010802010800     0082		      adds    r32 = 8, r32 ;;
			   }
			   { .mfi 
00BC8A059E00     0090		      st4     [r32] = r44, -8
000008000000     0091		      nop.f   0
000008000000     0092		      nop.i   0 ;;
			   }
	         00A0	L$9:

XVALID                          Machine Code Listing             4-FEB-2004 11:01:42  BLISS-32I T1.1-053                Page 6
X00.03                          XPO$VALID_IOB                   19-MAR-2002 10:12:47  [LASTOVICA.XPORT.VMSGEN]XVALID.BLI;1

			   { .mmi 
010802018800     00A0		      adds    r32 = 12, r32 ;;								   // 000147
00B08A0E8C40     00A1		      ld4     r49 = [r32], -12
000008000000     00A2		      nop.i   0 ;;
			   }
			   { .mfb 
01C443100000     00B0		      cmp4.eq pr0, pr8 = r0, r49
000008000000     00B1		      nop.f   0
008600022008     00B2	       (pr8)  br.cond.dpnt.few L$11
			   }
			   { .mmi 
012000100C80     00C0		      add     r50 = @ltoff(XST$NULL_STRING), r1 ;;
0080C3200C80     00C1		      ld8     r50 = XST$NULL_STRING		// r50 = [r50]
010802018800     00C2		      adds    r32 = 12, r32 ;;
			   }
			   { .mfi 
00BC8A065D00     00D0		      st4     [r32] = r50, -12
000008000000     00D1		      nop.f   0
000008000000     00D2		      nop.i   0 ;;
			   }
	         00E0	L$13:
			   { .mmi 
010802048800     00E0		      adds    r32 = 36, r32 ;;								   // 000149
00B08A0B8DC0     00E1		      ld4     r55 = [r32], -36
000008000000     00E2		      nop.i   0 ;;
			   }
			   { .mfb 
01C443700000     00F0		      cmp4.eq pr0, pr8 = r0, r55
000008000000     00F1		      nop.f   0
008600024008     00F2	       (pr8)  br.cond.dpnt.few L$15
			   }
			   { .mmi 
012000100E00     0100		      add     r56 = @ltoff(XST$NULL_STRING), r1 ;;
0080C3800E00     0101		      ld8     r56 = XST$NULL_STRING		// r56 = [r56]
010802048800     0102		      adds    r32 = 36, r32 ;;
			   }
			   { .mfb 
00BC8A071700     0110		      st4     [r32] = r56, -36
000008000000     0111		      nop.f   0
00800002A000     0112		      br.sptk.few L$17 ;;
			   }
	         0120	L$2:												   // 000143
			   { .mib 
012000002640     0120		      mov     r25 = 1
0000B0800F80     0121		      sxt4    r62 = r8
00A000001000     0122		      br.call.sptk.many br0 = XST$VALIDATE
			   }
			   { .mib 
010803D00040     0130		      mov     r1 = r61
00A0308001C0     0131		      tbit.z  pr7, pr6 = $XPO$STATUS, 0		// pr7, pr6 = r8, 0
0095FFFE6006     0132	       (pr6)  br.cond.dptk.few L$4
			   }
			   { .mii 
01080A0B8A00     0140		      adds    r40 = 220, r32
01080A0B0A40     0141		      adds    r41 = 216, r32
000008000000     0142		      nop.i   0 ;;
			   }

XVALID                          Machine Code Listing             4-FEB-2004 11:01:42  BLISS-32I T1.1-053                Page 7
X00.03                          XPO$VALID_IOB                   19-MAR-2002 10:12:47  [LASTOVICA.XPORT.VMSGEN]XVALID.BLI;1

			   { .mlx 
008C82810000     0150		      st4     [r40] = $XPO$STATUS		// [r40] = r8
000000000000     0151		      movl    r8 = 2138290 ;;
0194104C84
			   }
			   { .mib 
008C82910000     0160		      st4     [r41] = r8
0000B0800200     0161		      sxt4    r8 = r8
008000022000     0162		      br.sptk.few L$6 ;;
			   }
	         0170	L$7:												   // 000145
			   { .mib 
012000002640     0170		      mov     r25 = 1
0000B2B00F80     0171		      sxt4    r62 = r43
00A000001000     0172		      br.call.sptk.many br0 = XST$VALIDATE
			   }
			   { .mib 
010803D00040     0180		      mov     r1 = r61
00A0308001C0     0181		      tbit.z  pr7, pr6 = $XPO$STATUS, 0		// pr7, pr6 = r8, 0
0095FFFE4006     0182	       (pr6)  br.cond.dptk.few L$9
			   }
			   { .mii 
01080A0B8B80     0190		      adds    r46 = 220, r32
01080A0B0BC0     0191		      adds    r47 = 216, r32
000008000000     0192		      nop.i   0 ;;
			   }
			   { .mlx 
008C82E10000     01A0		      st4     [r46] = $XPO$STATUS		// [r46] = r8
000000000000     01A1		      movl    r8 = 2138170 ;;
0194004E84
			   }
			   { .mib 
008C82F10000     01B0		      st4     [r47] = r8
0000B0800200     01B1		      sxt4    r8 = r8
008000018000     01B2		      br.sptk.few L$6 ;;
			   }
	         01C0	L$11:												   // 000147
			   { .mib 
012000002640     01C0		      mov     r25 = 1
0000B3100F80     01C1		      sxt4    r62 = r49
00A000001000     01C2		      br.call.sptk.many br0 = XST$VALIDATE
			   }
			   { .mib 
010803D00040     01D0		      mov     r1 = r61
00A0308001C0     01D1		      tbit.z  pr7, pr6 = $XPO$STATUS, 0		// pr7, pr6 = r8, 0
0095FFFE2006     01D2	       (pr6)  br.cond.dptk.few L$13
			   }
			   { .mii 
01080A0B8D00     01E0		      adds    r52 = 220, r32
01080A0B0D40     01E1		      adds    r53 = 216, r32
000008000000     01E2		      nop.i   0 ;;
			   }
			   { .mlx 
008C83410000     01F0		      st4     [r52] = $XPO$STATUS		// [r52] = r8
000000000000     01F1		      movl    r8 = 2138274 ;;
0194104884
			   }

XVALID                          Machine Code Listing             4-FEB-2004 11:01:42  BLISS-32I T1.1-053                Page 8
X00.03                          XPO$VALID_IOB                   19-MAR-2002 10:12:47  [LASTOVICA.XPORT.VMSGEN]XVALID.BLI;1

			   { .mib 
008C83510000     0200		      st4     [r53] = r8
0000B0800200     0201		      sxt4    r8 = r8
00800000E000     0202		      br.sptk.few L$6 ;;
			   }
	         0210	L$15:												   // 000149
			   { .mib 
012000002640     0210		      mov     r25 = 1
0000B3700F80     0211		      sxt4    r62 = r55
00A000001000     0212		      br.call.sptk.many br0 = XST$VALIDATE
			   }
			   { .mib 
010803D00040     0220		      mov     r1 = r61
00A0308001C0     0221		      tbit.z  pr7, pr6 = $XPO$STATUS, 0		// pr7, pr6 = r8, 0
008600008006     0222	       (pr6)  br.cond.dpnt.few L$17
			   }
			   { .mii 
01080A0B8E80     0230		      adds    r58 = 220, r32
01080A0B0800     0231		      adds    r32 = 216, r32
000008000000     0232		      nop.i   0 ;;
			   }
			   { .mlx 
008C83A10000     0240		      st4     [r58] = $XPO$STATUS		// [r58] = r8
000000000000     0241		      movl    r8 = 2138250 ;;
0194104284
			   }
			   { .mib 
008C82010000     0250		      st4     [r32] = r8
0000B0800200     0251		      sxt4    r8 = r8
008000004000     0252		      br.sptk.few L$6 ;;
			   }
	         0260	L$17:
			   { .mlx 
000008000000     0260		      nop.m   0
000000000000     0261		      movl    r8 = 2129921								   // 000155
0190004044
			   }
	         0270	L$6:
			   { .mii 
000008000000     0270		      nop.m   0
000154078000     0271		      mov.i   rspfs = r60
000E00176000     0272		      mov     br0 = r59 ;;
			   }
			   { .mfb 
000008000000     0280		      nop.m   0
000008000000     0281		      nop.f   0
000108001100     0282		      br.ret.sptk.many br0 ;;
			   }
				      .endp   XPO$VALID_IOB

Routine Size: 656 bytes,    Routine Base: _XPO$CODE + 0000

				      .global XST$NULL_STRING
				      .section .data
				      .type   XST$VALIDATE, @function 
				      .global  XST$VALIDATE
				      .section .data

XVALID                          Machine Code Listing             4-FEB-2004 11:01:42  BLISS-32I T1.1-053                Page 9
X00.03                          XPO$VALID_IOB                   19-MAR-2002 10:12:47  [LASTOVICA.XPORT.VMSGEN]XVALID.BLI;1

				      .type   XST$VALIDATE, @function 
				      .global  XST$VALIDATE
				      .section .data
				      .type   XST$VALIDATE, @function 
				      .global  XST$VALIDATE
				      .section .data
				      .type   XST$VALIDATE, @function 
				      .global  XST$VALIDATE


;				Library Statistics
;
;					     -------- Symbols --------	    Pages
;	File				     Total    Loaded   Percent      Mapped
;
;  DISK$NORMS_OWN:[LASTOVICA.XPORT.VMSGEN]XPORT.L32;14
;					       590        94        15       270
;  DISK$NORMS_OWN:[LASTOVICA.XPORT.VMSGEN]XPOSYS.L32;14
;					        91        12        13        27




                                Source Listing                   4-FEB-2004 11:01:42  BLISS-32I T1.1-053                Page 10
                                Source Listing                  19-MAR-2002 10:12:47  [LASTOVICA.XPORT.VMSGEN]XVALID.BLI;1

COMMAND LINE:

BLISSXVALID/VARIANT=3/LIST/DEBUG
