XPO$CLOSE - XPORT File Close 4-FEB-2004 11:01:34 BLISS-32I T1.1-053 Page 1 19-MAR-2002 10:12:03 [LASTOVICA.XPORT.VMSGEN]XCLOSE.BLI;1 0 1 MODULE XCLOSE ( IDENT = 'X1.2-19' %TITLE 'XPO$CLOSE - XPORT File Close' 0 2 %BLISS32( ,ADDRESSING_MODE( EXTERNAL=LONG_RELATIVE ) ) 0 3 %BLISS36( ,ENTRY( XPO$CLOSE ),OTS='' ) 0 4 ) = 0 5 BEGIN 1 6 1 7 ! 1 8 ! COPYRIGHT (c) 1982 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 is the XPORT file close module. 1 33 ! 1 34 ! ENVIRONMENT: User mode - multiple host operating/file systems 1 35 ! 1 36 ! AUTHORS: Ward Clark, CREATION DATE: 26 June 1978 1 37 ! Linda Duffell 1 38 ! 1 39 ! MODIFIED BY: Edward G. Freedman See CMS history for details 1 40 ! 1 41 !-- XCLOSE XPO$CLOSE - XPORT File Close 4-FEB-2004 11:01:34 BLISS-32I T1.1-053 Page 2 X1.2-19 19-MAR-2002 10:12:03 [LASTOVICA.XPORT.VMSGEN]XCLOSE.BLI;1 1 43 ! 1 44 ! TABLE OF CONTENTS: 1 45 ! 1 46 1 47 FORWARD ROUTINE 1 48 XPO$CLOSE; ! XPORT File Close Routine 1 49 1 50 ! 1 51 ! INCLUDE FILES: 1 52 ! 1 53 1 54 LIBRARY 'XPORT' ; ! Public XPORT control block and macro definitions 1 56 LIBRARY 'XPOSYS' ; ! Internal XPORT macro definitions 1 58 1 59 $XPO_SYS_TEST( $TOPS10, $TOPS20, $VMS, $11M, $RSTS, $RT11 ) ; %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 60 1 61 %IF $TOPS10 %THEN U 1 62 REQUIRE 'XT10' ; ! TOPS-10 I/O interface macros U 1 63 %FI 1 64 1 65 %IF $TOPS20 %THEN U 1 66 REQUIRE 'XT20'; ! TOPS-20 I/O interface macros U 1 67 %FI 1 68 1 69 %IF $VMS %THEN 1 70 REQUIRE 'XVMS'; ! XPORT-specific VAX/VMS interface definitions 1 100 %FI 1 101 1 102 %IF $11M %THEN U 1 103 REQUIRE 'XRSX' ; ! XPORT-specific RSX-11 and FCS-11 interface definitions U 1 104 %FI 1 105 1 106 %IF $RSTS %THEN U 1 107 REQUIRE 'XRSTS' ; ! RSTS/E system interface definitions U 1 108 %FI 1 109 1 110 %IF $RT11 %THEN U 1 111 REQUIRE 'XRT11' ; ! RT-11 I/O system interface definitions U 1 112 %FI 1 113 1 114 ! 1 115 ! MACROS: 1 116 ! 1 117 1 118 ! 1 119 ! EQUATED SYMBOLS: 1 120 ! 1 121 1 122 LITERAL 1 123 yes = 1, ! Used to turn an indicator on 1 124 no = 0; ! Used to turn an indicator off 1 125 1 126 ! 1 127 ! PSECT DECLARATIONS: 1 128 ! XCLOSE XPO$CLOSE - XPORT File Close 4-FEB-2004 11:01:34 BLISS-32I T1.1-053 Page 3 X1.2-19 19-MAR-2002 10:12:03 [LASTOVICA.XPORT.VMSGEN]XCLOSE.BLI;1 1 129 1 130 $XPO_PSECTS ! Declare XPORT PSECT names and attributes 1 131 1 132 ! 1 133 ! OWN STORAGE: 1 134 ! 1 135 1 136 ! 1 137 ! EXTERNAL REFERENCES: 1 138 ! 1 139 1 140 EXTERNAL ROUTINE 1 141 XPO$ZERO_IOB : NOVALUE; ! IOB field reset routine 1 142 1 143 %IF $TOPS10 %THEN U 1 144 EXTERNAL ROUTINE U 1 145 X10$CLEANUP; ! TOPS-10 control block cleanup routine U 1 146 %FI 1 147 1 148 %IF $TOPS20 %THEN U 1 149 EXTERNAL ROUTINE U 1 150 X20$CLOSE; ! TOPS-20 close routine. U 1 151 %FI 1 152 1 153 %IF $VMS %THEN 1 154 EXTERNAL ROUTINE 1 155 XPO$RMS_ERROR : NOVALUE, ! RMS-to-XPORT completion code conversion routine 1 156 XPO$RMS_CLEANUP; ! RMS control block cleanup routine 1 157 %FI 1 158 1 159 %IF $11M %THEN U 1 160 EXTERNAL ROUTINE U 1 161 XRSX$IO_ERROR : NOVALUE, ! FCS-to-XPORT completion code conversion routine U 1 162 XRSX$CLEANUP; ! QIO/FCS cleanup routine U 1 163 %FI 1 164 1 165 %IF $RSTS %THEN U 1 166 EXTERNAL ROUTINE U 1 167 XRST$CLOSE , ! RSTS/E close routine U 1 168 XRST$FIXUP; ! Cleanup channel IOB fields U 1 169 %FI 1 170 1 171 %IF $RT11 %THEN U 1 172 EXTERNAL U 1 173 XPO$CHANNELS : BITVECTOR; ! EZIO channel assignment vector U 1 174 EXTERNAL ROUTINE U 1 175 XRT$CLOSE ; ! RT-11 close routine U 1 176 %FI XCLOSE XPO$CLOSE - XPORT File Close 4-FEB-2004 11:01:34 BLISS-32I T1.1-053 Page 4 X1.2-19 19-MAR-2002 10:12:03 [LASTOVICA.XPORT.VMSGEN]XCLOSE.BLI;1 1 178 GLOBAL ROUTINE XPO$CLOSE ( iob, success_action, failure_action ) = 1 179 1 180 !++ 1 181 ! 1 182 ! FUNCTIONAL DESCRIPTION: 1 183 ! 1 184 ! This routine closes an open file. 1 185 ! 1 186 ! FORMAL PARAMETERS: 1 187 ! 1 188 ! iob - address of IOB 1 189 ! success_action - address of success action routine 1 190 ! failure_action - address of failure action routine 1 191 ! 1 192 ! IMPLICIT INPUTS: 1 193 ! 1 194 ! Information contained in or pointed to by the caller's IOB 1 195 ! 1 196 ! IMPLICIT OUTPUTS: 1 197 ! 1 198 ! Various fields in the caller's IOB are updated to reflect 1 199 ! the results of the requested I/O function 1 200 ! 1 201 ! COMPLETION CODES: (also returned in IOB$G_COMP_CODE) 1 202 ! 1 203 ! XPO$_NORMAL - the file was successfully closed 1 204 ! 1 205 ! XPO$_BAD_IOB - invalid IOB 1 206 ! (IOB$G_2ND_CODE = XPO$_BAD_LENGTH - invalid length) 1 207 ! XPO$_CLOSED - the file has already been closed 1 208 ! XPO$_CONFLICT - confliciting IOB information 1 209 ! (IOB$G_2ND_CODE = XPO$_NO_CONCAT - concatenated file-spec cannot be REMEMBERed) 1 210 ! XPO$_FREE_MEM - error deallocating IOB-related memory 1 211 ! (IOB$G_2ND_CODE = $XPO_FREE_MEM completion code 1 212 ! or failure completion codes from XRSX$CLEANUP (RSX) 1 213 ! or failure completion codes from XPO$RMS_CLEANUP (VMS)) 1 214 ! XPO$_NOT_OPEN - the file was not opened 1 215 ! failure completion codes from X20$CLOSE (TOPS-20) 1 216 ! failure completion codes from XPO$RMS_ERROR (VMS) 1 217 ! failure completion codes from XRST$CLOSE (RSTS) 1 218 ! failure completion codes from XRSX$IO_ERROR (11M) 1 219 ! SIDE EFFECTS: 1 220 ! 1 221 ! None 1 222 ! 1 223 !-- 1 224 1 225 BEGIN 2 226 2 227 MAP 2 228 iob : REF $XPO_IOB(); ! Redefine the IOB parameter 2 229 2 230 ! 2 231 ! XPORT routine initialization. 2 232 ! 2 233 2 234 $XPO_MAIN_BEGIN( IO ) ! Define the MAIN_BLOCK code block XCLOSE XPO$CLOSE - XPORT File Close 4-FEB-2004 11:01:34 BLISS-32I T1.1-053 Page 5 X1.2-19 19-MAR-2002 10:12:03 [LASTOVICA.XPORT.VMSGEN]XCLOSE.BLI;1 3 235 ! and validate the caller's IOB. 3 236 3 237 ! 3 238 ! Check for IOB-related errors. 3 239 ! 3 240 3 241 ! Check for the following errors: 3 242 IF .iob[IOB$V_CLOSED] ! the file has already been closed 3 243 THEN 3 244 $XPO_QUIT( CLOSED ); 3 245 3 246 IF NOT .iob[IOB$V_OPEN] ! the file is not open 3 247 THEN 3 248 $XPO_QUIT( NOT_OPEN ); 3 249 3 250 IF .iob[IOB$V_REMEMBER] and .iob[IOB$V_CONC_SPEC] ! remember a concatenated file-spec 3 251 THEN 3 252 $XPO_QUIT( CONFLICT, NO_CONCAT ); 3 253 3 254 ! 3 255 ! Setup default options. 3 256 ! 3 257 3 258 IF .iob[IOB$V_TEMPORARY] ! If this is a temporary work file, 3 259 THEN ! 3 260 iob[IOB$V_REMEMBER] = yes; ! assume that it will be reprocessed. 3 261 3 262 !+ 3 263 ! 3 264 ! System-dependent file close processing follows. 3 265 ! 3 266 !- XCLOSE TOPS-10 CLOSE 4-FEB-2004 11:01:34 BLISS-32I T1.1-053 Page 6 X1.2-19 19-MAR-2002 10:12:03 [LASTOVICA.XPORT.VMSGEN]XCLOSE.BLI;1 3 268 %TITLE 'TOPS-10 CLOSE' 3 269 %IF $TOPS10 %THEN U 3 270 U 3 271 !+ U 3 272 ! U 3 273 ! TOPS-10 CLOSE Processing U 3 274 ! U 3 275 !_ U 3 276 U 3 277 ! U 3 278 ! Close the file and release the channel. U 3 279 ! U 3 280 U 3 281 IF NOT .iob[IOB$V_TERMINAL] ! If this is not a terminal file, U 3 282 THEN ! U 3 283 BEGIN ! U 3 284 $T10_CLOSE( .iob[IOB$H_CHANNEL] ); ! close a TOPS-10 file U 3 285 ! (flushes partially filled output buffer) U 3 286 $T10_RELEASE( .iob[IOB$H_CHANNEL] ); ! and release the channel. U 3 287 END; U 3 288 U 3 289 ! U 3 290 ! Release the channel assignment and free the I/O buffers and control block. U 3 291 ! U 3 292 U 3 293 $XPO_IF_NOT( X10$CLEANUP( .iob ) ) U 3 294 THEN U 3 295 $XPO_QUIT( FREE_MEM, ( .$XPO_STATUS ) ); U 3 296 U 3 297 !+ U 3 298 ! U 3 299 ! End of TOPS-10 CLOSE Processing U 3 300 ! U 3 301 !- U 3 302 U 3 303 %FI XCLOSE TOPS-20 CLOSE 4-FEB-2004 11:01:34 BLISS-32I T1.1-053 Page 7 X1.2-19 19-MAR-2002 10:12:03 [LASTOVICA.XPORT.VMSGEN]XCLOSE.BLI;1 3 305 %TITLE 'TOPS-20 CLOSE' 3 306 %IF $TOPS20 %THEN U 3 307 U 3 308 !+ U 3 309 ! U 3 310 ! TOPS-20 CLOSE Processing U 3 311 ! U 3 312 !_ U 3 313 U 3 314 ! U 3 315 ! Close the file. U 3 316 ! U 3 317 U 3 318 IF NOT .iob[IOB$V_TERMINAL] ! If this is not a terminal file, U 3 319 THEN ! U 3 320 BEGIN ! U 3 321 IF NOT X20$CLOSE( .iob ) ! Close the file U 3 322 ! (flushes partially filled output buffer) U 3 323 THEN ! If an error occurs, U 3 324 $XPO_QUIT(); ! return to the caller with the completion codes. U 3 325 U 3 326 iob[IOB$H_CHANNEL] = 0; ! Zero the JFN number in the IOB. U 3 327 END; U 3 328 U 3 329 !+ U 3 330 ! U 3 331 ! End of TOPS-20 CLOSE Processing U 3 332 ! U 3 333 !- U 3 334 U 3 335 %FI XCLOSE VAX/VMS File Close 4-FEB-2004 11:01:34 BLISS-32I T1.1-053 Page 8 X1.2-19 19-MAR-2002 10:12:03 [LASTOVICA.XPORT.VMSGEN]XCLOSE.BLI;1 3 337 %TITLE 'VAX/VMS File Close' 3 338 %IF $VMS %THEN 3 339 3 340 !+ 3 341 ! VAX/VMS File Close Processing 3 342 ! 3 343 ! Implicit inputs: 3 344 ! amt_buff_used (rab[RAB$L_CTX]) - indicates data in the XPORT internal output buffer 3 345 ! set by XPO$PUT, cleared by XPO$GET and XPO$CLOSE 3 346 ! 3 347 ! Implicit outputs: 3 348 ! amt_buff_used (rab[RAB$L_CTX]) - indicates data in the XPORT internal output buffer 3 349 ! tested by XPO$PUT, XPO$GET and XPO$CLOSE 3 350 !- 3 351 3 352 BEGIN 4 353 4 354 BIND 4 355 fab = .iob[IOB$A_RMS_FAB] : $FAB_DECL, ! Define the IOB's FAB 4 356 rab = .iob[IOB$A_RMS_RAB] : $RAB_DECL; ! and RAB. 4 357 4 358 MACRO 4 359 amt_buff_used = rab[RAB$L_CTX] %; ! Amount of data in the XPORT internal output buffer 4 360 4 361 ! 4 362 ! Flush out a partial binary or random output block. 4 363 ! 4 364 4 365 IF (.iob[IOB$V_BINARY] OR .iob[IOB$V_RANDOM]) AND ! If this is a binary or random output file, 4 366 .iob[IOB$V_OUTPUT] AND ! 4 367 .amt_buff_used NEQ 0 ! and the XPORT internal output buffer contains data, 4 368 THEN 4 369 BEGIN ! 5 370 rab[RAB$W_RSZ] = .amt_buff_used; ! Setup the output block length (always 512 for random) 5 371 rab[RAB$L_RBF] = .rab[RAB$L_UBF]; ! and address of the data buffer. 5 372 5 373 IF $RMS_WRITE( RAB = rab ) ! If the write operation is successful, 6 374 THEN ! 5 375 amt_buff_used = 0 ! indicate that the output buffer is empty. 5 376 ELSE 5 377 BEGIN 6 378 XPO$RMS_ERROR( .iob, ! Otherwise, convert the RMS completion codes 6 379 .rab[RAB$L_STS], ! into appropriate XPORT completion codes 6 380 .rab[RAB$L_STV] ); ! 6 381 $XPO_QUIT(); ! and then jump to return an error to the caller. 6 382 END; 5 383 END; 4 384 4 385 ! 4 386 ! If this is a terminal file, simply deassign the terminal I/O channel. 4 387 ! 4 388 4 389 IF .fab[FAB$V_UFO] 4 390 THEN 4 391 BEGIN 5 392 $XPO_IF_NOT( $DASSGN( CHAN = .iob[IOB$H_CHANNEL] ) ) 7 393 THEN XCLOSE VAX/VMS File Close 4-FEB-2004 11:01:34 BLISS-32I T1.1-053 Page 9 X1.2-19 19-MAR-2002 10:12:03 [LASTOVICA.XPORT.VMSGEN]XCLOSE.BLI;1 6 394 $XPO_QUIT( SYS_ERROR, (.$XPO_STATUS) ); 5 395 iob[IOB$H_CHANNEL] = 0; 5 396 END 5 397 5 398 ! 5 399 ! Otherwise, perform an RMS file close. 5 400 ! 5 401 5 402 ELSE 4 403 IF NOT $RMS_CLOSE( FAB = fab ) 5 404 THEN 4 405 BEGIN 5 406 XPO$RMS_ERROR( .iob, .fab[FAB$L_STS], .fab[FAB$L_STV] ); 5 407 $XPO_QUIT(); 5 408 END; 4 409 4 410 ! 4 411 ! Free the IOB's RMS control blocks. 4 412 ! 4 413 4 414 $XPO_IF_NOT( XPO$RMS_CLEANUP( .iob ) ) 6 415 THEN 5 416 $XPO_QUIT( FREE_MEM, (.$XPO_STATUS) ); 4 417 4 418 END; 3 419 3 420 !+ 3 421 ! 3 422 ! End of VAX/VMS File Close Processing 3 423 ! 3 424 !- 3 425 3 426 %FI XCLOSE RSX-11M File Close 4-FEB-2004 11:01:34 BLISS-32I T1.1-053 Page 10 X1.2-19 19-MAR-2002 10:12:03 [LASTOVICA.XPORT.VMSGEN]XCLOSE.BLI;1 3 428 %TITLE 'RSX-11M File Close' 3 429 %IF $11M %THEN U 3 430 U 3 431 !+ U 3 432 ! U 3 433 ! RSX-11M File Close Processing U 3 434 ! U 3 435 !- U 3 436 U 3 437 BEGIN U 3 438 U 3 439 BIND U 3 440 fcs_blocks = .iob[IOB$A_FCS_FDB] : $FCS_BLOCKS, U 3 441 fdb = fcs_blocks[FCS$Z_FDB] : FDB$; U 3 442 U 3 443 LOCAL U 3 444 out_buffer_size; U 3 445 U 3 446 ! U 3 447 ! Flush out a partial binary output block. U 3 448 ! U 3 449 U 3 450 IF .iob[IOB$V_BINARY] AND .iob[IOB$V_OUTPUT] AND ! If the XPORT internal output buffer contains data, U 3 451 .fcs_blocks[FCS$G_BUFF_USED] GTR 0 ! U 3 452 THEN ! U 3 453 BEGIN ! U 3 454 out_buffer_size = .fdb[F$BKDS$S]; ! save the current output buffer size U 3 455 fdb[F$BKDS$S] = .fcs_blocks[FCS$G_BUFF_USED]; ! and replace it with the size of the buffered output data. U 3 456 U 3 457 WRITE$( fdb ); ! Write out the partial buffer. U 3 458 U 3 459 IF .fdb[F$ERR] EQL IS$SUC U 3 460 THEN U 3 461 WAIT$( fdb ); U 3 462 U 3 463 IF .fdb[F$ERR] NEQ IS$SUC U 3 464 THEN U 3 465 BEGIN U 3 466 XRSX$IO_ERROR( .iob, .fdb[F$ERR] ); U 3 467 $XPO_QUIT(); U 3 468 END; U 3 469 U 3 470 fdb[F$BKDS$S] = .out_buffer_size; ! Restore the output buffer size U 3 471 fcs_blocks[FCS$G_BUFF_USED] = 0; ! and indicate no buffered output data remains. U 3 472 END; U 3 473 U 3 474 ! U 3 475 ! Close the file. U 3 476 ! U 3 477 U 3 478 IF NOT .iob[IOB$V_TERMINAL] ! Don't try to close a terminal file. U 3 479 THEN U 3 480 IF NOT CLOSE$( fdb ) ! If file closing fails, U 3 481 THEN ! U 3 482 BEGIN ! U 3 483 XRSX$IO_ERROR( .iob, ! convert the FCS-11 completion code into U 3 484 .fdb[F$ERR] ); ! equivalent XPORT completion codes XCLOSE RSX-11M File Close 4-FEB-2004 11:01:34 BLISS-32I T1.1-053 Page 11 X1.2-19 19-MAR-2002 10:12:03 [LASTOVICA.XPORT.VMSGEN]XCLOSE.BLI;1 U 3 485 $XPO_QUIT(); ! and then jump to return to the caller. U 3 486 END; U 3 487 U 3 488 ! U 3 489 ! Release the assigned LUN and free any FCS-11 control blocks. U 3 490 ! U 3 491 U 3 492 $XPO_IF_NOT( XRSX$CLEANUP( .iob ) ) ! Perform QIO/FCS cleanup. U 3 493 THEN U 3 494 $XPO_QUIT( FREE_MEM, (.$XPO_STATUS) ); ! Return error codes if the control block deallocation fails U 3 494 . U 3 495 U 3 496 END; U 3 497 U 3 498 !+ U 3 499 ! U 3 500 ! End of RSX-11M File Close Processing U 3 501 ! U 3 502 !- U 3 503 U 3 504 %FI XCLOSE RSTS File Close 4-FEB-2004 11:01:34 BLISS-32I T1.1-053 Page 12 X1.2-19 19-MAR-2002 10:12:03 [LASTOVICA.XPORT.VMSGEN]XCLOSE.BLI;1 3 506 %TITLE 'RSTS File Close' 3 507 3 508 %IF $RSTS %THEN U 3 509 U 3 510 !+ U 3 511 ! U 3 512 ! RSTS/E CLOSE Processing U 3 513 ! U 3 514 !_ U 3 515 U 3 516 ! U 3 517 ! Close the file. U 3 518 ! U 3 519 U 3 520 IF NOT .iob[IOB$V_TERMINAL] ! If this is not a terminal file, U 3 521 THEN ! U 3 522 BEGIN ! U 3 523 IF NOT XRST$CLOSE( .iob ) ! close the file, U 3 524 THEN ! (flushes partially filled output buffer) U 3 525 $XPO_QUIT(); ! U 3 526 ! U 3 527 $XPO_IF_NOT( XRST$FIXUP( .iob) ) ! Cleanup the channel IOB information. U 3 528 THEN U 3 529 $XPO_QUIT( FREE_MEM, (.$XPO_STATUS) ); U 3 530 END; U 3 531 U 3 532 !+ U 3 533 ! U 3 534 ! End of RSTS/E CLOSE Processing U 3 535 ! U 3 536 !- U 3 537 U 3 538 %FI XCLOSE RT-11 File Close 4-FEB-2004 11:01:34 BLISS-32I T1.1-053 Page 13 X1.2-19 19-MAR-2002 10:12:03 [LASTOVICA.XPORT.VMSGEN]XCLOSE.BLI;1 3 539 %TITLE 'RT-11 File Close' 3 540 3 541 %IF $RT11 %THEN U 3 542 U 3 543 !+ U 3 544 ! U 3 545 ! RT-11 CLOSE Processing U 3 546 ! U 3 547 !_ U 3 548 U 3 549 ! U 3 550 ! Close the file. U 3 551 ! U 3 552 U 3 553 IF NOT .iob[IOB$V_TERMINAL] ! If this is not a terminal file, U 3 554 THEN ! U 3 555 BEGIN ! U 3 556 XRT$CLOSE( .iob ); ! close the file, U 3 557 ! (flushes partially filled output buffer) U 3 558 XPO$CHANNELS[.iob[IOB$H_CHANNEL]] = no; ! release the XPORT I/O channel, U 3 559 U 3 560 iob[IOB$H_CHANNEL] = 0; ! and zero the channel number in the IOB. U 3 561 END; U 3 562 U 3 563 !+ U 3 564 ! U 3 565 ! End of RT-11 CLOSE Processing U 3 566 ! U 3 567 !- U 3 568 U 3 569 %FI XCLOSE XPO$CLOSE - XPORT File Close Te 4-FEB-2004 11:01:34 BLISS-32I T1.1-053 Page 14 X1.2-19 19-MAR-2002 10:12:03 [LASTOVICA.XPORT.VMSGEN]XCLOSE.BLI;1 3 571 %TITLE 'XPO$CLOSE - XPORT File Close Termination' 3 572 3 573 !+ 3 574 ! 3 575 ! Continuation of system-independent file close processing 3 576 ! 3 577 !- 3 578 3 579 ! 3 580 ! Reset the IOB to an "unopened" state. 3 581 ! 3 582 3 583 ! Update the IOB: 3 584 iob[IOB$V_OPEN] = no; ! turn off the opened indicator 3 585 iob[IOB$V_EOF] = no; ! turn off the end-of-file indicator 3 586 3 587 IF .iob[IOB$V_AUTO_CONC] ! Automatic (internal) close processing: 3 588 THEN 3 589 BEGIN 4 590 $XPO_FREE_QUIT( STRING = iob[IOB$T_RESULTANT] );! Free the current resultant file-spec. 4 591 4 592 XPO$ZERO_IOB( .iob ); ! Reset file attributes, sequence info, etc. 4 593 END 4 594 ELSE 3 595 IF .iob[IOB$V_REMEMBER] ! REMEMBER processing: 3 596 THEN 3 597 BEGIN 4 598 $XPO_LEAVE_IOB( .iob ); ! Cleanup the IOB. 4 599 4 600 iob[IOB$A_FILE_SPEC] = ! Reset the primary file-spec. 4 601 iob[IOB$T_RESULTANT]; 4 602 END 4 603 ELSE ! Non-REMEMBER processing: 3 604 $XPO_ZAP_IOB( .iob ); ! Reinitialize the IOB. 3 605 3 606 ! Cleanup the IOB: 3 607 iob[IOB$V_CLOSED] = yes; ! file has been successfully closed 3 608 iob[IOB$V_INPUT] = no; ! turn off "open for input" 3 609 iob[IOB$V_OUTPUT] = no; ! "open for output" 3 610 iob[IOB$V_OVERWRITE] = no; ! "open for overwrite" 3 611 iob[IOB$V_APPEND] = no; ! "open for append" 3 612 3 613 $XPO_QUIT( NORMAL ); ! Return a success code to the caller. 3 614 3 615 ! 3 616 ! XPORT routine termination. 3 617 ! 3 618 3 619 $XPO_MAIN_END; ! Terminate MAIN_BLOCK. 2 620 2 621 $XPO_ACTION_RTN( .iob ); ! Call a success or failure action routine. 2 622 2 623 ! 2 624 ! Reinitialize the IOB after a file close failure. 2 625 ! 2 626 2 627 IF NOT .iob[IOB$G_COMP_CODE] AND NOT .iob[IOB$V_AUTO_CONC] XCLOSE XPO$CLOSE - XPORT File Close Te 4-FEB-2004 11:01:34 BLISS-32I T1.1-053 Page 15 X1.2-19 19-MAR-2002 10:12:03 [LASTOVICA.XPORT.VMSGEN]XCLOSE.BLI;1 2 628 THEN 2 629 $XPO_ZAP_IOB( .iob ); 2 630 2 631 ! 2 632 ! Return to the caller. 2 633 ! 2 634 2 635 RETURN .iob[IOB$G_COMP_CODE] ! Return the IOB completion code to the caller. 2 636 2 637 END; 1 638 END 1 639 ELUDOM XCLOSE Machine Code Listing 4-FEB-2004 11:01:34 BLISS-32I T1.1-053 Page 16 X1.2-19 19-MAR-2002 10:12:03 [LASTOVICA.XPORT.VMSGEN]XCLOSE.BLI;1 .psect _XPO$CODE, CON, LCL, SHR, EXE, NOWRT, NOVEC .proc XPO$CLOSE .align 32 .global XPO$CLOSE XPO$CLOSE: // 000178 { .mii 002C0428F800 0000 alloc r96 = rspfs, 3, 63, 5, 0 0000B20000C0 0001 sxt4 r3 = IOB // r3 = r32 // 000234 0001880017C0 0002 mov r95 = br0 ;; // 000178 } { .mii 010800300A00 0010 mov r40 = r3 // 000234 010800101840 0011 mov r97 = r1 // 000178 000008000000 0012 nop.i 0 } { .mmi 008040300200 0020 ld2 r8 = [r3] ;; // 000234 01CC0087A1C0 0021 cmp4.eq pr7, pr0 = 61, r8 000008000000 0022 nop.i 0 } { .mfb 000008000000 0030 nop.m 0 000008000000 0031 nop.f 0 00860000A007 0032 (pr7) br.cond.dpnt.few L$5 } { .mii 0108083B0280 0040 adds r10 = 216, r3 0108083B8440 0041 adds r17 = 220, r3 000008000000 0042 nop.i 0 } { .mlx 000008000000 0050 nop.m 0 800000000000 0051 movl r9 = 2146308 ;; 0198004104 } { .mlx 008C80A12000 0060 st4 [r10] = r9 800000000000 0061 movl r11 = 2138210 ;; 0194005885 } { .mfb 008C81116000 0070 st4 [r17] = r11 000008000000 0071 nop.f 0 0080000CC000 0072 br.sptk.few L$6 ;; } 0080 L$5: { .mmi 010802860A00 0080 adds r40 = 48, r40 ;; // 000242 008082800480 0081 ld4 r18 = [r40] 01080A858500 0082 adds r20 = 172, r40 ;; // 000234 } { .mib 0119FA8A0A00 0090 adds r40 = -48, r40 00A4012484C0 0091 extr.u r19 = r18, 18, 1 // 000242 004000000000 0092 nop.b 0 ;; } { .mib XCLOSE Machine Code Listing 4-FEB-2004 11:01:34 BLISS-32I T1.1-053 Page 17 X1.2-19 XPO$CLOSE 19-MAR-2002 10:12:03 [LASTOVICA.XPORT.VMSGEN]XCLOSE.BLI;1 008C81400000 00A0 st4 [r20] = r0 // 000234 00A041300240 00A1 tbit.z pr9, pr8 = r19, 0 // 000242 008600006009 00A2 (pr9) br.cond.dpnt.few L$8 } { .mlx 01080A8B0580 00B0 adds r22 = 216, r40 // 000244 800000000000 00B1 movl r21 = 2138322 ;; 019410548A } { .mfb 008C8162A000 00C0 st4 [r22] = r21 000008000000 00C1 nop.f 0 0080000C2000 00C2 br.sptk.few L$6 ;; } 00D0 L$8: // 000242 { .mii 000008000000 00D0 nop.m 0 00A4012405C0 00D1 extr.u r23 = r18, 16, 1 ;; // 000246 00A0517002C0 00D2 tbit.z pr11, pr10 = r23, 0 } { .mfb 000008000000 00E0 nop.m 0 000008000000 00E1 nop.f 0 00860000600A 00E2 (pr10) br.cond.dpnt.few L$9 } { .mlx 01080A8B0640 00F0 adds r25 = 216, r40 // 000248 000000000000 00F1 movl r24 = 2138586 ;; 019430568C } { .mfb 008C81930000 0100 st4 [r25] = r24 000008000000 0101 nop.f 0 0080000BA000 0102 br.sptk.few L$6 ;; } 0110 L$9: // 000246 { .mii 010802858A00 0110 adds r40 = 44, r40 // 000250 00A4012586C0 0111 extr.u r27 = r18, 22, 1 ;; 00A061B00340 0112 tbit.z pr13, pr12 = r27, 0 } { .mmi 00B08A8A8680 0120 ld4 r26 = [r40], -44 ;; 000008000000 0121 nop.m 0 00A401A50700 0122 extr.u r28 = r26, 20, 1 ;; } { .mii 000008000000 0130 nop.m 0 00A071C003C0 0131 tbit.z pr15, pr14 = r28, 0 ;; 01C2700003CD 0132 (pr13) cmp.eq.or.andcm pr15, pr14 = r0, r0 } { .bbb 00860000200E 0140 (pr14) br.cond.dpnt.few L$11 004000000000 0141 nop.b 0 00860000A00F 0142 (pr15) br.cond.dpnt.few L$12 } 0150 L$11: XCLOSE Machine Code Listing 4-FEB-2004 11:01:34 BLISS-32I T1.1-053 Page 18 X1.2-19 XPO$CLOSE 19-MAR-2002 10:12:03 [LASTOVICA.XPORT.VMSGEN]XCLOSE.BLI;1 { .mii 01080A8B0780 0150 adds r30 = 216, r40 // 000252 01080A8B8A40 0151 adds r41 = 220, r40 000008000000 0152 nop.i 0 } { .mlx 000008000000 0160 nop.m 0 800000000000 0161 movl r29 = 2138330 ;; 019410568E } { .mlx 008C81E3A000 0170 st4 [r30] = r29 800000000000 0171 movl r31 = 2138450 ;; 019420548F } { .mfb 008C8293E000 0180 st4 [r41] = r31 000008000000 0181 nop.f 0 0080000AA000 0182 br.sptk.few L$6 ;; } 0190 L$12: // 000250 { .mii 000008000000 0190 nop.m 0 00A401254480 0191 extr.u r18 = r18, 21, 1 ;; // 000258 00A0312001C0 0192 tbit.z pr7, pr6 = r18, 0 } { .mfb 000008000000 01A0 nop.m 0 000008000000 01A1 nop.f 0 008600006007 01A2 (pr7) br.cond.dpnt.few L$14 } { .mmi 012004000A80 01B0 addl r42 = 1048576, r0 ;; // 000260 010072A34680 01B1 or r26 = r26, r42 010802858A00 01B2 adds r40 = 44, r40 ;; } { .mmi 00BC8A835500 01C0 st4 [r40] = r26, -44 ;; 000008000000 01C1 nop.m 0 000008000000 01C2 nop.i 0 } 01D0 L$14: // 000358 { .mmi 010802860A00 01D0 adds r40 = 48, r40 ;; // 000365 008082800B00 01D1 ld4 r44 = [r40] 01080A878BC0 01D2 adds r47 = 188, r40 // 000356 } { .mii 01080A870B80 01E0 adds r46 = 184, r40 // 000355 0119FA8A0A00 01E1 adds r40 = -48, r40 000008000000 01E2 nop.i 0 ;; } { .mib 008082E00B80 01F0 ld4 r46 = [r46] 00A402C00B40 01F1 extr.u r45 = r44, 0, 1 // 000365 004000000000 01F2 nop.b 0 ;; } XCLOSE Machine Code Listing 4-FEB-2004 11:01:34 BLISS-32I T1.1-053 Page 19 X1.2-19 XPO$CLOSE 19-MAR-2002 10:12:03 [LASTOVICA.XPORT.VMSGEN]XCLOSE.BLI;1 { .mii 008082F00BC0 0200 ld4 r47 = [r47] // 000356 00A402C04B00 0201 extr.u r44 = r44, 1, 1 // 000365 010162D02B40 0202 and r45 = 1, r45 ;; } { .mii 010162C02B00 0210 and r44 = 1, r44 0000B2F00BC0 0211 sxt4 r47 = r47 // 000356 0000B2E00C00 0212 sxt4 r48 = r46 ;; // 000355 } { .mmi 010072C5AB00 0220 or r44 = r45, r44 ;; // 000365 01C442C00240 0221 cmp4.eq pr9, pr8 = r0, r44 000008000000 0222 nop.i 0 } { .mfb 000008000000 0230 nop.m 0 000008000000 0231 nop.f 0 008600024009 0232 (pr9) br.cond.dpnt.few L$18 } { .mmi 010802858A00 0240 adds r40 = 44, r40 ;; // 000366 00B08A8A8C40 0241 ld4 r49 = [r40], -44 000008000000 0242 nop.i 0 ;; } { .mii 000008000000 0250 nop.m 0 00A403144C40 0251 extr.u r49 = r49, 17, 1 ;; 00A0531002C0 0252 tbit.z pr11, pr10 = r49, 0 ;; // 000365 } { .mib 01C00000124B 0260 (pr11) cmp.eq.unc pr9, pr0 = r0, r0 01C00000120A 0261 (pr10) cmp.eq.unc pr8, pr0 = r0, r0 008600006009 0262 (pr9) br.cond.dpnt.few L$16 // 000366 } { .mmi 010802F30BC0 0270 adds r47 = 24, r47 ;; // 000367 00B08AFD0C80 0271 ld4 r50 = [r47], -24 000008000000 0272 nop.i 0 ;; } { .mmi 01C463200340 0280 cmp4.eq pr13, pr12 = r0, r50 ;; 01C00000124D 0281 (pr13) cmp.eq.unc pr9, pr0 = r0, r0 // 000366 01C00000120C 0282 (pr12) cmp.eq.unc pr8, pr0 = r0, r0 } 0290 L$16: { .bbb 008600002008 0290 (pr8) br.cond.dpnt.few L$17 // 000365 004000000000 0291 nop.b 0 008600018009 0292 (pr9) br.cond.dpnt.few L$18 } 02A0 L$17: { .mii 010802F48BC0 02A0 adds r47 = 36, r47 // 000371 012000002640 02A1 mov r25 = 1 // 000373 000008000000 02A2 nop.i 0 ;; } XCLOSE Machine Code Listing 4-FEB-2004 11:01:34 BLISS-32I T1.1-053 Page 20 X1.2-19 XPO$CLOSE 19-MAR-2002 10:12:03 [LASTOVICA.XPORT.VMSGEN]XCLOSE.BLI;1 { .mmi 00B08AFE8D00 02B0 ld4 r52 = [r47], -12 ;; // 000371 00A082F20CC0 02B1 ld4 r51 = [r47], 16 // 000370 000008000000 02B2 nop.i 0 ;; } { .mmi 00BC8AF69E80 02C0 st4 [r47] = r52, -6 ;; // 000371 00BC4AF67780 02C1 st2 [r47] = r51, -34 // 000370 000008000000 02C2 nop.i 0 ;; } { .mib 000008000000 02D0 nop.m 0 0000B2F01880 02D1 sxt4 r98 = r47 // 000373 00A000001000 02D2 br.call.sptk.many br0 = SYS$WRITE } { .mib 010806100040 02E0 mov r1 = r97 00A0308001C0 02E1 tbit.z pr7, pr6 = r8, 0 008600006007 02E2 (pr7) br.cond.dpnt.few L$20 } { .mmi 010802F30BC0 02F0 adds r47 = 24, r47 ;; // 000375 008C82F00000 02F1 st4 [r47] = r0 000008000000 02F2 nop.i 0 } { .mfb 000008000000 0300 nop.m 0 000008000000 0301 nop.f 0 00800000A000 0302 br.sptk.few L$18 ;; // 000373 } 0310 L$20: { .mii 010802F10BC0 0310 adds r47 = 8, r47 // 000378 012000006640 0311 mov r25 = 3 0000B2001880 0312 sxt4 r98 = IOB ;; // r98 = r32 } { .mmi 00A082F098C0 0320 ld4 r99 = [r47], 4 ;; 008082F01900 0321 ld4 r100 = [r47] 0000B63018C0 0322 sxt4 r99 = r99 ;; } { .mib 000008000000 0330 nop.m 0 0000B6401900 0331 sxt4 r100 = r100 00A000001000 0332 br.call.sptk.many br0 = XPO$RMS_ERROR } { .mfb 010806100040 0340 mov r1 = r97 000008000000 0341 nop.f 0 008000072000 0342 br.sptk.few L$6 ;; // 000381 } 0350 L$18: // 000365 { .mmi 0080C3000E00 0350 ld8 r56 = [r48] ;; // 000389 000008000000 0351 nop.m 0 00A4038C4E00 0352 extr.u r56 = r56, 49, 1 ;; } XCLOSE Machine Code Listing 4-FEB-2004 11:01:34 BLISS-32I T1.1-053 Page 21 X1.2-19 XPO$CLOSE 19-MAR-2002 10:12:03 [LASTOVICA.XPORT.VMSGEN]XCLOSE.BLI;1 { .mib 000008000000 0360 nop.m 0 00A0338001C0 0361 tbit.z pr7, pr6 = r56, 0 008600014007 0362 (pr7) br.cond.dpnt.few L$22 } { .mii 01080A8E0E40 0370 adds r57 = 240, r40 // 000392 012000002640 0371 mov r25 = 1 000008000000 0372 nop.i 0 ;; } { .mmi 008043900E40 0380 ld2 r57 = [r57] ;; 000008000000 0381 nop.m 0 0000AB900E40 0382 sxt2 r57 = r57 ;; } { .mib 000008000000 0390 nop.m 0 0000B3901880 0391 sxt4 r98 = r57 00A000001000 0392 br.call.sptk.many br0 = SYS$DASSGN } { .mib 010806100040 03A0 mov r1 = r97 00A0308001C0 03A1 tbit.z pr7, pr6 = $XPO$STATUS, 0 // pr7, pr6 = r8, 0 008600008006 03A2 (pr6) br.cond.dpnt.few L$23 } { .mii 01080A8B0EC0 03B0 adds r59 = 216, r40 // 000394 01080A8B8F00 03B1 adds r60 = 220, r40 000008000000 03B2 nop.i 0 } { .mlx 000008000000 03C0 nop.m 0 000000000000 03C1 movl r58 = 2138794 ;; 0194504A9D } { .mmb 008C83B74000 03D0 st4 [r59] = r58 008C83C10000 03D1 st4 [r60] = $XPO$STATUS // [r60] = r8 008000060000 03D2 br.sptk.few L$6 ;; } 03E0 L$23: // 000392 { .mmi 01080A8E0F40 03E0 adds r61 = 240, r40 ;; // 000395 008C43D00000 03E1 st2 [r61] = r0 000008000000 03E2 nop.i 0 } { .mfb 000008000000 03F0 nop.m 0 000008000000 03F1 nop.f 0 00800000E000 03F2 br.sptk.few L$25 ;; // 000389 } 0400 L$22: // 000403 { .mib 012000002640 0400 mov r25 = 1 0000B3001880 0401 sxt4 r98 = r48 00A000001000 0402 br.call.sptk.many br0 = SYS$CLOSE } XCLOSE Machine Code Listing 4-FEB-2004 11:01:34 BLISS-32I T1.1-053 Page 22 X1.2-19 XPO$CLOSE 19-MAR-2002 10:12:03 [LASTOVICA.XPORT.VMSGEN]XCLOSE.BLI;1 { .mib 010806100040 0410 mov r1 = r97 00A0308001C0 0411 tbit.z pr7, pr6 = r8, 0 00860000A006 0412 (pr6) br.cond.dpnt.few L$25 ;; } { .mii 010803010C00 0420 adds r48 = 8, r48 // 000406 012000006640 0421 mov r25 = 3 0000B2001880 0422 sxt4 r98 = IOB ;; // r98 = r32 } { .mmi 00A0830098C0 0430 ld4 r99 = [r48], 4 ;; 008083001900 0431 ld4 r100 = [r48] 0000B63018C0 0432 sxt4 r99 = r99 ;; } { .mib 000008000000 0440 nop.m 0 0000B6401900 0441 sxt4 r100 = r100 00A000001000 0442 br.call.sptk.many br0 = XPO$RMS_ERROR } { .mfb 010806100040 0450 mov r1 = r97 000008000000 0451 nop.f 0 008000050000 0452 br.sptk.few L$6 ;; // 000407 } 0460 L$25: // 000414 { .mib 012000002640 0460 mov r25 = 1 0000B2001880 0461 sxt4 r98 = IOB // r98 = r32 00A000001000 0462 br.call.sptk.many br0 = XPO$RMS_CLEANUP } { .mib 010806100040 0470 mov r1 = r97 00A0308001C0 0471 tbit.z pr7, pr6 = $XPO$STATUS, 0 // pr7, pr6 = r8, 0 008600008006 0472 (pr6) br.cond.dpnt.few L$27 } { .mii 01080A8B0FC0 0480 adds r63 = 216, r40 // 000416 01080A8B9000 0481 adds r64 = 220, r40 000008000000 0482 nop.i 0 } { .mlx 000008000000 0490 nop.m 0 000000000000 0491 movl r62 = 2138362 ;; 0194105E9F } { .mmb 008C83F7C000 04A0 st4 [r63] = r62 008C84010000 04A1 st4 [r64] = $XPO$STATUS // [r64] = r8 008000046000 04A2 br.sptk.few L$6 ;; } 04B0 L$27: // 000358 { .mii 010802860A00 04B0 adds r40 = 48, r40 // 000584 013FFF0FF080 04B1 addl r66 = -196609, r0 // 000585 000008000000 04B2 nop.i 0 ;; } XCLOSE Machine Code Listing 4-FEB-2004 11:01:34 BLISS-32I T1.1-053 Page 23 X1.2-19 XPO$CLOSE 19-MAR-2002 10:12:03 [LASTOVICA.XPORT.VMSGEN]XCLOSE.BLI;1 { .mmi 008082801040 04C0 ld4 r65 = [r40] ;; // 000584 010064283080 04C1 and r66 = r65, r66 // 000585 00A40414D040 04C2 extr.u r65 = r65, 19, 1 ;; // 000587 } { .mii 008C82884000 04D0 st4 [r40] = r66 // 000585 00A044100240 04D1 tbit.z pr9, pr8 = r65, 0 // 000587 0119FA8A0A00 04D2 adds r40 = -48, r40 // 000585 } { .mfb 000008000000 04E0 nop.m 0 000008000000 04E1 nop.f 0 008600014009 04E2 (pr9) br.cond.dpnt.few L$30 // 000587 } { .mii 0108020398C0 04F0 adds r99 = 28, IOB // r99 = 28, r32 // 000590 01200000A640 04F1 mov r25 = 5 0000B0001980 04F2 sxt4 r102 = r0 ;; } { .mii 000008000000 0500 nop.m 0 0000B6301880 0501 sxt4 r98 = r99 0000B0001940 0502 sxt4 r101 = r0 } { .mib 0119F80FD8C0 0510 adds r99 = -2, r0 0000B0001900 0511 sxt4 r100 = r0 00A000001000 0512 br.call.sptk.many br0 = XPO$FREE_MEM } { .mib 010806100040 0520 mov r1 = r97 00A0308001C0 0521 tbit.z pr7, pr6 = $XPO$STATUS, 0 // pr7, pr6 = r8, 0 008600008006 0522 (pr6) br.cond.dpnt.few L$31 } { .mii 01080A8B1140 0530 adds r69 = 216, r40 01080A8B9180 0531 adds r70 = 220, r40 000008000000 0532 nop.i 0 } { .mlx 000008000000 0540 nop.m 0 000000000000 0541 movl r68 = 2138362 ;; 0194105EA2 } { .mmb 008C84588000 0550 st4 [r69] = r68 008C84610000 0551 st4 [r70] = $XPO$STATUS // [r70] = r8 008000030000 0552 br.sptk.few L$6 ;; } 0560 L$31: { .mib 012000002640 0560 mov r25 = 1 // 000592 0000B2001880 0561 sxt4 r98 = IOB // r98 = r32 00A000001000 0562 br.call.sptk.many br0 = XPO$ZERO_IOB } { .mfb XCLOSE Machine Code Listing 4-FEB-2004 11:01:34 BLISS-32I T1.1-053 Page 24 X1.2-19 XPO$CLOSE 19-MAR-2002 10:12:03 [LASTOVICA.XPORT.VMSGEN]XCLOSE.BLI;1 010806100040 0570 mov r1 = r97 000008000000 0571 nop.f 0 008000020000 0572 br.sptk.few L$33 ;; // 000587 } 0580 L$30: { .mmi 010802858A00 0580 adds r40 = 44, r40 ;; // 000595 00B08A8A91C0 0581 ld4 r71 = [r40], -44 000008000000 0582 nop.i 0 ;; } { .mii 000008000000 0590 nop.m 0 00A4047511C0 0591 extr.u r71 = r71, 20, 1 ;; 00A0347001C0 0592 tbit.z pr7, pr6 = r71, 0 } { .mfb 000008000000 05A0 nop.m 0 000008000000 05A1 nop.f 0 008600010007 05A2 (pr7) br.cond.dpnt.few L$35 } { .mib 012000002640 05B0 mov r25 = 1 // 000598 0000B2001880 05B1 sxt4 r98 = IOB // r98 = r32 00A000001000 05B2 br.call.sptk.many br0 = XPO$LEAVE_IOB ;; } { .mib 010806100040 05C0 mov r1 = r97 00A0308001C0 05C1 tbit.z pr7, pr6 = $XPO$STATUS, 0 // pr7, pr6 = r8, 0 008600008006 05C2 (pr6) br.cond.dpnt.few L$36 } { .mii 01080A8B1240 05D0 adds r73 = 216, r40 01080A8B9280 05D1 adds r74 = 220, r40 000008000000 05D2 nop.i 0 } { .mlx 000008000000 05E0 nop.m 0 000000000000 05E1 movl r72 = 2138362 ;; 0194105EA4 } { .mmb 008C84990000 05F0 st4 [r73] = r72 008C84A10000 05F1 st4 [r74] = $XPO$STATUS // [r74] = r8 00800001C000 05F2 br.sptk.few L$6 ;; } 0600 L$36: { .mii 0108020392C0 0600 adds r75 = 28, IOB // r75 = 28, r32 // 000601 010802808A00 0601 adds r40 = 4, r40 // 000600 000008000000 0602 nop.i 0 ;; } { .mfb 00BC8A897F00 0610 st4 [r40] = r75, -4 000008000000 0611 nop.f 0 00800000C000 0612 br.sptk.few L$33 ;; // 000595 } 0620 L$35: // 000604 XCLOSE Machine Code Listing 4-FEB-2004 11:01:34 BLISS-32I T1.1-053 Page 25 X1.2-19 XPO$CLOSE 19-MAR-2002 10:12:03 [LASTOVICA.XPORT.VMSGEN]XCLOSE.BLI;1 { .mib 012000002640 0620 mov r25 = 1 0000B2001880 0621 sxt4 r98 = IOB // r98 = r32 00A000001000 0622 br.call.sptk.many br0 = XPO$ZAP_IOB } { .mib 010806100040 0630 mov r1 = r97 00A0308001C0 0631 tbit.z pr7, pr6 = $XPO$STATUS, 0 // pr7, pr6 = r8, 0 008600008006 0632 (pr6) br.cond.dpnt.few L$33 } { .mii 01080A8B1380 0640 adds r78 = 216, r40 01080A8B93C0 0641 adds r79 = 220, r40 000008000000 0642 nop.i 0 } { .mlx 000008000000 0650 nop.m 0 800000000000 0651 movl r77 = 2138362 ;; 0194105EA6 } { .mmb 008C84E9A000 0660 st4 [r78] = r77 008C84F10000 0661 st4 [r79] = $XPO$STATUS // [r79] = r8 00800000E000 0662 br.sptk.few L$6 ;; } 0670 L$33: // 000587 { .mii 010802860A00 0670 adds r40 = 48, r40 // 000607 012001001440 0671 addl r81 = 262144, r0 013FFC0FF4C0 0672 addl r83 = -983041, r0 ;; // 000611 } { .mii 008082801400 0680 ld4 r80 = [r40] // 000607 01080A851580 0681 adds r86 = 168, r40 // 000613 000008000000 0682 nop.i 0 } { .mlx 000008000000 0690 nop.m 0 800000000000 0691 movl r85 = 2129921 ;; 019000406A } { .mmi 0100751A1400 06A0 or r80 = r80, r81 ;; // 000607 00BC8A8A1F00 06A1 st4 [r40] = r80, -4 000008000000 06A2 nop.i 0 ;; } { .mmi 008082801400 06B0 ld4 r80 = [r40] ;; // 000608 0100653A1400 06B1 and r80 = r80, r83 // 000611 000008000000 06B2 nop.i 0 ;; } { .mmi 00BC8A8A1500 06C0 st4 [r40] = r80, -44 008C856AA000 06C1 st4 [r86] = r85 // 000613 000008000000 06C2 nop.i 0 ;; } 06D0 L$6: // 000621 XCLOSE Machine Code Listing 4-FEB-2004 11:01:34 BLISS-32I T1.1-053 Page 26 X1.2-19 XPO$CLOSE 19-MAR-2002 10:12:03 [LASTOVICA.XPORT.VMSGEN]XCLOSE.BLI;1 { .mii 01080A8B15C0 06D0 adds r87 = 216, r40 010802201640 06D1 mov r89 = FAILURE_ACTION // r89 = r34 000008000000 06D2 nop.i 0 ;; } { .mmi 008085701600 06E0 ld4 r88 = [r87] ;; 000008000000 06E1 nop.m 0 00A045800000 06E2 tbit.z pr0, pr8 = r88, 0 ;; } { .mmi 010802101648 06F0 (pr8) mov r89 = SUCCESS_ACTION ;; // r89 = r33 01C405900280 06F1 cmp4.eq pr10, pr0 = r0, $XPO$ACTION // pr10, pr0 = r0, r89 000008000000 06F2 nop.i 0 } { .mfb 000008000000 0700 nop.m 0 000008000000 0701 nop.f 0 00860001000A 0702 (pr10) br.cond.dpnt.few L$40 } { .mii 01080A8B9900 0710 adds r100 = 220, r40 0000B5901640 0711 sxt4 r89 = $XPO$ACTION // r89 = r89 01080A8B1700 0712 adds r92 = 216, r40 } { .mii 012000008640 0720 mov r25 = 4 0000B2001940 0721 sxt4 r101 = IOB // r101 = r32 0000B58018C0 0722 sxt4 r99 = r88 ;; } { .mii 008086401900 0730 ld4 r100 = [r100] 012000003880 0731 mov r98 = 1 010805911640 0732 adds r89 = 8, r89 ;; } { .mib 000008000000 0740 nop.m 0 0000B6401900 0741 sxt4 r100 = r100 004000000000 0742 nop.b 0 } { .mmi 00B0CD9F0040 0750 ld8 r1 = [r89], -8 ;; 0080C5901640 0751 ld8 r89 = [r89] 000008000000 0752 nop.i 0 ;; } { .mib 000008000000 0760 nop.m 0 000E001B2180 0761 mov br6 = r89 00210000C000 0762 br.call.sptk.few br0 = br6 } { .mii 008C85C10000 0770 st4 [r92] = r8 010806100040 0771 mov r1 = r97 000008000000 0772 nop.i 0 } 0780 L$40: { .mmi XCLOSE Machine Code Listing 4-FEB-2004 11:01:34 BLISS-32I T1.1-053 Page 27 X1.2-19 XPO$CLOSE 19-MAR-2002 10:12:03 [LASTOVICA.XPORT.VMSGEN]XCLOSE.BLI;1 01080A8B1740 0780 adds r93 = 216, r40 ;; // 000627 008085D01740 0781 ld4 r93 = [r93] 000008000000 0782 nop.i 0 ;; } { .mib 000008000000 0790 nop.m 0 00A035D001C0 0791 tbit.z pr7, pr6 = r93, 0 00860000C006 0792 (pr6) br.cond.dpnt.few L$42 } { .mmi 010802860A00 07A0 adds r40 = 48, r40 ;; 00B08A8A1780 07A1 ld4 r94 = [r40], -48 000008000000 07A2 nop.i 0 ;; } { .mii 000008000000 07B0 nop.m 0 00A405E4D780 07B1 extr.u r94 = r94, 19, 1 ;; 00A045E00240 07B2 tbit.z pr9, pr8 = r94, 0 ;; } { .mfb 01C000001188 07C0 (pr8) cmp.eq.unc pr6, pr0 = r0, r0 000008000000 07C1 nop.f 0 008600006006 07C2 (pr6) br.cond.dpnt.few L$42 } { .mib 012000002640 07D0 mov r25 = 1 // 000629 0000B2001880 07D1 sxt4 r98 = IOB // r98 = r32 00A000001000 07D2 br.call.sptk.many br0 = XPO$ZAP_IOB } { .mfi 010806100040 07E0 mov r1 = r97 000008000000 07E1 nop.f 0 000008000000 07E2 nop.i 0 } 07F0 L$42: // 000627 { .mmi 01080A8B0A00 07F0 adds r40 = 216, r40 ;; // 000635 008082800200 07F1 ld4 r8 = [r40] 000008000000 07F2 nop.i 0 ;; } { .mib 000008000000 0800 nop.m 0 0000B0800200 0801 sxt4 r8 = r8 004000000000 0802 nop.b 0 } { .mii 000008000000 0810 nop.m 0 0001540C0000 0811 mov.i rspfs = r96 000E001BE000 0812 mov br0 = r95 ;; } { .mfb 000008000000 0820 nop.m 0 000008000000 0821 nop.f 0 000108001100 0822 br.ret.sptk.many br0 ;; } .endp XPO$CLOSE XCLOSE Machine Code Listing 4-FEB-2004 11:01:34 BLISS-32I T1.1-053 Page 28 X1.2-19 XPO$CLOSE 19-MAR-2002 10:12:03 [LASTOVICA.XPORT.VMSGEN]XCLOSE.BLI;1 Routine Size: 2096 bytes, Routine Base: _XPO$CODE + 0000 .section .data .type SYS$WRITE, @function .global SYS$WRITE .section .data .type XPO$RMS_ERROR, @function .global XPO$RMS_ERROR .section .data .type SYS$DASSGN, @function .global SYS$DASSGN .section .data .type SYS$CLOSE, @function .global SYS$CLOSE .section .data .type XPO$RMS_CLEANUP, @function .global XPO$RMS_CLEANUP .section .data .type XPO$FREE_MEM, @function .global XPO$FREE_MEM .section .data .type XPO$ZERO_IOB, @function .global XPO$ZERO_IOB .section .data .type XPO$LEAVE_IOB, @function .global XPO$LEAVE_IOB .section .data .type XPO$ZAP_IOB, @function .global XPO$ZAP_IOB .section .data .type XPO$ZAP_IOB, @function .global XPO$ZAP_IOB ; Library Statistics ; ; -------- Symbols -------- Pages ; File Total Loaded Percent Mapped ; ; DISK$NORMS_OWN:[LASTOVICA.XPORT.VMSGEN]XPORT.L32;14 ; 590 116 19 270 ; DISK$NORMS_OWN:[LASTOVICA.XPORT.VMSGEN]XPOSYS.L32;14 ; 91 19 20 27 ; SYS$COMMON:[SYSLIB]STARLET.L32;1 28352 20 0 2178 Source Listing 4-FEB-2004 11:01:34 BLISS-32I T1.1-053 Page 29 Source Listing 19-MAR-2002 10:12:03 [LASTOVICA.XPORT.VMSGEN]XCLOSE.BLI;1 COMMAND LINE: BLISSXCLOSE/VARIANT=3/LIST/DEBUG