RCS_RTL                                                          2-Dec-1992 14:00:27    VAX Pascal V4.3-76                 Page    1
1-022                           Source Listing                  21-Apr-1992 09:30:11    [DECUS.RCS.SYSLIB]RCS_RTL.PAS;1 (1)

-LINE-IDC-PL-SL-

00001      0  0 [ environment ( 'RCS_RTL' ),
00002      0  0   ident ( '1-022' ),
00003      0  0   inherit ( 'Sys$Library:STARLET' )
00004      0  0   ]
00005      0  0 
00006      0  0 
00007      0  0 
00008      0  0 module RCS_RTL ( output );
00009      0  0 
00010      0  0 
00011      0  0 
00012   C  0  0 (*  Title:       Run-time library support declarations.
00013   C  0  0 
00014   C  0  0     Version:     1-022
00015   C  0  0 
00016   C  0  0     Facility:    VAX Pascal Support
00017   C  0  0 
00018   C  0  0     Abstract:    Declarations of popular run-time library routines and
00019   C  0  0                  popular non-standard data types.
00020   C  0  0 
00021   C  0  0     Environment: VAX Pascal, V3.9 or later.
00022   C  0  0                  VAX/VMS V5.3, or later.
00023   C  0  0                  NB: Some symbols are operating system dependent.  This module
00024   C  0  0                      may require recompilation or alteration whenever VAX/VMS
00025   C  0  0                      changes.  Programs referring to this environment must be
00026   C  0  0                      linked with Sys$System:SYS.STB, and may need to be relinked
00027   C  0  0                      whenever VAX/VMS changes.
00028   C  0  0                  User mode, nonprivileged code.
00029   C  0  0 
00030   C  0  0     Author:      Seth Stern, 26-Feb-1990
00031   C  0  0 
00032   C  0  0     Modified by:
00033   C  0  0 
00034   C  0  0       1-001  26-Feb-1990  Seth Stern
00035   C  0  0              Original.  Based on RRC.PAS V1-020.
00036   C  0  0 
00037   C  0  0       1-002  01-Mar-1990  Jeffrey Payne
00038   C  0  0              Added a structure which contains a class-s descriptor and a
00039   C  0  0              pointer to the virtual address space which it describes.
00040   C  0  0 
00041   C  0  0       1-003   8-Mar-1990  Seth Stern
00042   C  0  0              Added   Lib$Stop   and   Lib$Wait .
00043   C  0  0 
00044   C  0  0       1-004  12-Mar-1990  Lonny DiRusso
00045   C  0  0              Made Create_Options in LBR$Open an option.
00046   C  0  0 	     Also made output_width, line_desc, library_name, flags,
00047   C  0  0 	     input_routine options in LBR$Output_Help.
00048   C  0  0 
00049   C  0  0       1-005  16-Apr-1990  Seth Stern
00050   C  0  0              Corrected arguments for   Lib$Lookup_Tree   and   Lib$Insert_Tree .
00051   C  0  0              Added the [unsafe] attribute to the node arguments in all tree
00052   C  0  0                routines.
00053   C  0  0 
00054   C  0  0       1-006  21-Jun-1990  Jeffrey Payne
00055   C  0  0              Added Lib$InsQTI, Lib$RemQTI, Lib$InsQHI, Lib$RemQHI, Lib$AdAWI.

RCS_RTL                                                          2-Dec-1992 14:00:27    VAX Pascal V4.3-76                 Page    2
1-022                           Source Listing                  21-Apr-1992 09:30:11    [DECUS.RCS.SYSLIB]RCS_RTL.PAS;1 (1)

-LINE-IDC-PL-SL-

00056   C  0  0              Added Ethernet $QIO type definitions.
00057   C  0  0 
00058   C  0  0       1-007  30-Jul-1990  Jeffrey Payne
00059   C  0  0              Fixed protocol-type data declarations to be packed byte array.
00060   C  0  0              Fixed Lib$CallG declaration to pass ArgList by reference
00061   C  0  0              instead of by array descriptor.
00062   C  0  0 
00063   C  0  0       1-008   9-Aug-1990  Jeffrey Payne
00064   C  0  0              Added external function declarations for Lib$MovC3 and
00065   C  0  0              Lib$ExtZV.
00066   C  0  0 
00067   C  0  0       1-009   9-Aug-1990  Jeffrey Payne
00068   C  0  0              Make the KEY parameter to Lib$Lookup_Tree and Lib$Insert_Tree
00069   C  0  0              routines unsafe.
00070   C  0  0 
00071   C  0  0       1-010  10-Aug-1990  Jeffrey Payne
00072   C  0  0              Make the CONTEXT parameter in Lib$ tree routines unsafe.
00073   C  0  0 
00074   C  0  0       1-011  20-Aug-1990  David Lesle
00075   C  0  0              Adding declarations for some more LBR$ functions.
00076   C  0  0 
00077   C  0  0       1-012  23-Aug-1990  Jeffrey Payne
00078   C  0  0              Adding Lib$MovC5.
00079   C  0  0 
00080   C  0  0       1-013   4-Sep-1990  Jeffrey Payne
00081   C  0  0              Adding Lib$Sub_Times.
00082   C  0  0 
00083   C  0  0       1-014  18-Sep-1990  Seth Stern
00084   C  0  0              Corrected   Lib$Asn_Wth_Mbx   from   Lib$Asn_With_Mbx .
00085   C  0  0              Added   Lib$SubX .
00086   C  0  0 
00087   C  0  0       1-015   4-Jan-1991  Jeffrey Payne
00088   C  0  0              Added Lib$GetJPI
00089   C  0  0 
00090   C  0  0       1-016   6-Mar-1991  Jeffrey Payne
00091   C  0  0              Added Lib$Stat_Timer
00092   C  0  0 
00093   C  0  0       1-017   8-Apr-1991  Jeffrey Payne
00094   C  0  0              Added the VMS Ethernet/802 IOSB definition.
00095   C  0  0 
00096   C  0  0       1-018   3-Aug-1991  Jeffrey Payne
00097   C  0  0              Added RCS_Ident_Record to be used with section_id VMS usage.
00098   C  0  0 
00099   C  0  0       1-019  29-Aug-1991  Jeffrey Payne
00100   C  0  0              Modified CLI$Dispatch external function declaration to have
00101   C  0  0 	     USERARG  argument.
00102   C  0  0 
00103   C  0  0       1-020   2-Oct-1991  Jeffrey Payne/Gary Green
00104   C  0  0              Added Lib$CvtF_From_Internal_Time.
00105   C  0  0 
00106   C  0  0       1-021  19-Dec-1991  Jeffrey Payne
00107   C  0  0 	     Added Lib$EMul and Lib$EDiv.
00108   C  0  0 
00109   C  0  0       1-022  21-Apr-1992  Jeffrey Payne/Gary Green
00110   C  0  0              Added Lib$Cvt_From_Internal_Time.

RCS_RTL                                                          2-Dec-1992 14:00:27    VAX Pascal V4.3-76                 Page    3
1-022                           Source Listing                  21-Apr-1992 09:30:11    [DECUS.RCS.SYSLIB]RCS_RTL.PAS;1 (1)

-LINE-IDC-PL-SL-

00111   C  0  0   *)

RCS_RTL                                                          2-Dec-1992 14:00:27    VAX Pascal V4.3-76                 Page    4
1-022                           Source Listing                  21-Apr-1992 09:30:11    [DECUS.RCS.SYSLIB]RCS_RTL.PAS;1 (2)

-LINE-IDC-PL-SL-

00113      0  0 const
00114      0  0   Number_Of_Signal_Elements = 64;
00115      0  0 
00116      0  0 
00117      0  0 
00118      0  0 type
00119      0  0 
00120   C  0  0   (* Intrinsic data types. *)
00121      0  0   Varying_String = varying [ 256 ] of char;
00122      0  0   Bit  = [bit]  0 .. 1;
00123      0  0   Byte = [byte] -128 .. 127;
00124      0  0   Word = [word] -32768 .. 32767;
00125      0  0   Quadword = packed record
00126      0  0     L0 : unsigned;
00127      0  0     L1 : integer
00128      0  0     end;  (*  Quadword  *)
00129      0  0   Long_Byte = [long] -128 .. 127;
00130      0  0   Long_Word = [long] -32768 .. 32767;
00131      0  0   UByte = [byte] 0 .. 255;
00132      0  0   UWord = [word] 0 .. 65535;
00133      0  0   UQuadword = packed record
00134      0  0     L0 : unsigned;
00135      0  0     L1 : unsigned
00136      0  0     end;  (*  UQuadword  *)
00137      0  0   Long_UByte = [long] 0 .. 255;
00138      0  0   Long_UWord = [long] 0 .. 65535;
00139      0  0 
00140      0  0   address = ^unsigned;
00141      0  0   Signal_Array    = array[ 1 .. number_of_signal_elements ] of unsigned;
00142      0  0   Mechanism_Array = array[ 0 .. 4 ] of unsigned;
00143      0  0  
00144      0  0 
00145   C  0  0   (* Bit mask type declarations. *)
00146      0  0   Byte_Bit_Mask = [ byte ] packed array[ 0..7 ] of boolean;
00147      0  0   Word_Bit_Mask = [ word ] packed array[ 0..15 ] of boolean;
00148      0  0   Longword_Bit_Mask = [ long ] packed array[ 0..31 ] of boolean;
00149      0  0   Quadword_Bit_Mask = [ quad ] packed array[ 0..7 ] of boolean;
00150      0  0 
00151      0  0 
00152   C  0  0   (*  I/O and Lock Status Blocks.  *)
00153      0  0 
00154      0  0   RCS_Generic_IOSB = record
00155   C  0  0     (*  For use with: $GetDVI(W), $GetJPI(W), $GetLKI(W), $GetQUI(W),
00156   C  0  0       $GetSYI(W) and $SndJBC(W).  *)
00157      0  0     Condition_Value : unsigned;
00158      0  0     Spare : packed array [ 1 .. 4 ] of ubyte
00159      0  0     end;  (*  RCS_Generic_IOSB  *)
00160      0  0 
00161      0  0   RCS_BrkThru_IOSB = record
00162   C  0  0     (*  For use with $BrkThru(W).  *)
00163      0  0     Condition_Value : uword;
00164      0  0     Successes : uword;
00165      0  0     Timeouts : uword;
00166      0  0     NoBroadcasts : uword
00167      0  0     end;  (*  RCS_BrkThru_IOSB  *)

RCS_RTL                                                          2-Dec-1992 14:00:27    VAX Pascal V4.3-76                 Page    5
1-022                           Source Listing                  21-Apr-1992 09:30:11    [DECUS.RCS.SYSLIB]RCS_RTL.PAS;1 (2)

-LINE-IDC-PL-SL-

00168      0  0 
00169      0  0   RCS_QIO_IOSB = record
00170   C  0  0     (*  For use with $QIO(W).  *)
00171      0  0     Condition_Value : uword;
00172      0  0     Transfer_Count : uword;
00173      0  0     Device_Specific : unsigned
00174      0  0     end;  (*  RCS_QIO_IOSB  *)
00175      0  0 
00176      0  0   RCS_UpdSec_IOSB = record
00177   C  0  0     (*  For use with $UpdSec(W).  *)
00178      0  0     Condition_Value : uword;
00179      0  0     Hardware_Write_Error : [word] boolean;
00180      0  0     First_Page_Not_Written : unsigned
00181      0  0     end;  (*  RCS_UpdSec_IOSB  *)
00182      0  0 
00183   C  0  0   (* v1-017 - VMS Ethernet/802 driver IOSB declaration. *)
00184      0  0   RCS_Ethernet_QIO_IOSB = record
00185      0  0     Completion_Status   : uword;
00186      0  0     Transfer_Size       : uword;
00187      0  0     not_used1           : ubyte;
00188      0  0     Status              : Byte_Bit_Mask;
00189      0  0     Error_Summary       : Byte_Bit_Mask;
00190      0  0     not_used2           : ubyte
00191      0  0   end;  (* RCS_Ethernet_QIO_IOSB *)
00192      0  0 
00193      0  0 
00194      0  0   RCS_LkSB = record
00195   C  0  0     (*  For use with $Enq(W) when no lock value block is required.
00196   C  0  0       NB: Do not specify Lck$M_ValBlk when using this record.
00197   C  0  0       Applications using lock values blocks should define an appropriate
00198   C  0  0         record including the lock value block fields.
00199   C  0  0       *)
00200      0  0     Condition_Value : uword;
00201      0  0     Spare : uword;
00202      0  0     Lock_Id : unsigned
00203   C  0  0     (*  Value_Block : packed array [ 1 .. 16 ] of ubyte  *)
00204      0  0     end;  (*  RCS_LkSB  *)
00205      0  0 
00206      0  0 
00207   C  0  0  (* Item list descriptor types. *)
00208      0  0 
00209      0  0  RCS_Item_List_3 = record
00210      0  0    Buffer_Length : uword;
00211      0  0    Item_Code : uword;
00212      0  0    Buffer_Address : unsigned;
00213      0  0    Return_Length_Address : unsigned
00214      0  0    end;  (* RCS_Item_List_3 *)
00215      0  0 
00216      0  0 
00217      0  0  RCS_Item_List_2 = record
00218      0  0    Buffer_Length : uword;
00219      0  0    Item_Code : uword;
00220      0  0    Buffer_Address : unsigned
00221      0  0    end;  (* RCS_Item_List_2 *)
00222      0  0 

RCS_RTL                                                          2-Dec-1992 14:00:27    VAX Pascal V4.3-76                 Page    6
1-022                           Source Listing                  21-Apr-1992 09:30:11    [DECUS.RCS.SYSLIB]RCS_RTL.PAS;1 (2)

-LINE-IDC-PL-SL-

00223      0  0 
00224   C  0  0  (* Generic VMS descriptor record. *)
00225      0  0 
00226      0  0  RCS_Descriptor_Record = record
00227      0  0    DSC$W_Length : uword;
00228      0  0    DSC$B_DType : ubyte;
00229      0  0    DSC$B_Class : ubyte;
00230      0  0    DSC$A_Pointer : unsigned
00231      0  0    end;  (* RCS_Descriptor_Record *)
00232      0  0 
00233      0  0  RCS_VM_With_Descriptor_Record = Record
00234   C  0  0    (* v1-002 - Record with a class-s descriptor and a pointer to the virtual
00235   C  0  0       memory which it describes. *)
00236      0  0    Class_S : RCS_Descriptor_Record;
00237      0  0    VM : unsigned
00238      0  0    end;  (* RCS_VM_With_Descriptor_Record *)
00239      0  0 
00240      0  0  RCS_VM_With_Descriptor_Pointer = ^RCS_VM_With_Descriptor_Record;
00241      0  0 
00242      0  0 
00243   C  0  0 (* v1-006 - VMS Ethernet/802 device driver data types. *)
00244      0  0 
00245   C  0  0   (* The following record defines the information returned by the
00246   C  0  0      VMS Ethernet/802 device driver for read $QIO operations. *)
00247   C  0  0   (* v1-007 - Protocol_Type should be packed array of ubyte. *)
00248      0  0     RCS_Ethernet_Read_P5_Record = Record
00249      0  0       Destination_Address   : packed array [ 1 .. 6 ] of ubyte;
00250      0  0       Source_Address        : packed array [ 1 .. 6 ] of ubyte;
00251      0  0       Protocol_Type         : packed array [ 1 .. 2 ] of ubyte
00252      0  0     end;  (* Record RCS_Ethernet_Read_P5_Record *)
00253      0  0 
00254   C  0  0   (* The following record defines the information needed by the
00255   C  0  0      VMS Ethernet/802 device driver for write $QIO operations. *)
00256   C  0  0   (* v1-007 - Protocol_Type should be packed array of ubyte. *)
00257      0  0     RCS_Ethernet_Write_P5_Record = Record
00258      0  0       Destination_Address    : packed array [ 1 .. 6 ] of ubyte;
00259      0  0       Protocol_Type          : packed array [ 1 .. 2 ] of ubyte
00260      0  0     end;  (* Record RCS_Ethernet_Write_P5_Record *)
00261      0  0 
00262   C  0  0   (* v1-011 - data type needed by LBR$Lookup_Key  *)
00263      0  0     Rfa_Ptr = array [ 0..1 ] of integer;
00264      0  0 
00265      0  0 
00266   C  0  0   (* v1-018 Record used with VMS section_id arguments. *)
00267      0  0     RCS_Ident_Record = [ quad ] record
00268      0  0       Match_Type   : [ byte( 4 ) ] 0 .. 2 ** 3 - 1;
00269      0  0       Minor_Id     : [ byte( 3 ) ] 0 .. 2 ** 24 - 1;
00270      0  0       Major_Id     : [ byte( 1 ) ] 0 .. 2 ** 8 - 1
00271      0  0     end;  (* record rcs_ident_record *)
00272      0  0 

RCS_RTL                                                          2-Dec-1992 14:00:27    VAX Pascal V4.3-76                 Page    7
1-022                           Source Listing                  21-Apr-1992 09:30:11    [DECUS.RCS.SYSLIB]RCS_RTL.PAS;1 (3)

-LINE-IDC-PL-SL-

00274   C  0  0 (* External function declarations: RTL routines. *)
00275      0  0 

RCS_RTL                                                          2-Dec-1992 14:00:27    VAX Pascal V4.3-76                 Page    8
1-022                           Source Listing                  21-Apr-1992 09:30:11    [DECUS.RCS.SYSLIB]RCS_RTL.PAS;1 (4)

-LINE-IDC-PL-SL-

00277   C  0  0 (***********************)
00278   C  0  0 (*  Library routines.  *)
00279   C  0  0 (***********************)
00280      0  0 
00281      0  0 
00282      0  0 
00283   C  0  0 (* v1-006 - Lib$AdAWI *)
00284      0  0 [ external ]
00285      1  0 Function Lib$AdAWI(
00286      1  0   %ref  Add  : word;
00287      1  0   var   Sum  : word;
00288      1  0   var   Result : word
00289      1  0   ) : unsigned;
00290      1  0 
00291   C  1  0   (* Add aligned word, interlocked *)
00292      1  0 
00293      0  0   external;
00294      0  0 
00295      0  0 
00296      0  0 
00297      1  0 [external,asynchronous] function Lib$Asn_Wth_Mbx(
00298      1  0   Dev_Nam     : varying [ u1 ] of char;
00299      1  0   Max_Msg     : integer;
00300      1  0   Buf_Quo     : integer;
00301      1  0   var Dev_Chn : word;
00302      1  0   var Mbx_Chn : word
00303      1  0   ) : unsigned;
00304      1  0 
00305   C  1  0   (*  Assign channel with mailbox.  *)
00306      1  0 
00307      0  0   external;
00308      0  0 
00309      0  0 
00310      0  0 
00311   C  0  0 (*  Lib$BBCCI should not be used from Pascal.  Use the intrinsic 
00312   C  0  0   function   Clear_Interlocked .  *)
00313      0  0 
00314      0  0 
00315      0  0 
00316   C  0  0 (*  Lib$BBSSI should not be used from Pascal.  Use the intrinsic 
00317   C  0  0   function   Set_Interlocked .  *)
00318      0  0 
00319      0  0 
00320      0  0 
00321   C  0  0 (* v1-007 - Specify ArgList should be passed by reference. *)
00322      1  0 [external] function Lib$CallG(
00323      1  0   %ref ArgList : [unsafe] array [ l1 .. u1 : integer ] of unsigned;
00324      1  0        Proc    : [unsafe] address
00325      1  0   ) : unsigned;
00326      1  0 
00327   C  1  0   (*  Call procedure with general argument list.  *)
00328      1  0 
00329      0  0   external;
00330      0  0 
00331      0  0 

RCS_RTL                                                          2-Dec-1992 14:00:27    VAX Pascal V4.3-76                 Page    9
1-022                           Source Listing                  21-Apr-1992 09:30:11    [DECUS.RCS.SYSLIB]RCS_RTL.PAS;1 (4)

-LINE-IDC-PL-SL-

00332      0  0 
00333      1  0 [external] function Lib$Create_Dir(
00334      1  0   Dev_Dir_Spec : varying [ u1 ] of char;
00335      1  0   Owner_UIC    : unsigned := %immed 0;
00336      1  0   Prot_Enable  : uword := %immed 0;
00337      1  0   Prot_Value   : uword := %immed 0; 
00338      1  0   Max_Versions : uword := %immed 0;
00339      1  0   RVN          : uword := %immed 0
00340      1  0   ) : unsigned;
00341      1  0 
00342   C  1  0   (* Creates a directory or subdirectory. *)
00343      1  0 
00344      0  0   external;
00345      0  0 
00346      0  0 
00347      0  0 
00348   C  0  0 (* v1-022 - Add Lib$Cvt_From_Internal_Time. *)
00349      1  0 [ external ] function Lib$Cvt_From_Internal_Time(
00350      1  0   %ref Function_Code : [ unsafe ] unsigned;
00351      1  0   var  Resultant_Time : unsigned;
00352      1  0   %ref Input_Time : [ unsafe ] quadword
00353      1  0   ) : unsigned;
00354      1  0 
00355   C  1  0 (* \NB\ Symbolic codes for the Function_Code argument are found in
00356   C  1  0    Sys$Library:Starlet.Pas
00357   C  1  0 
00358   C  1  0    Lib$Cvt_From_Internal_Time converts an internal VAX ADT to an
00359   C  1  0    external unsigned integer value. *)
00360      1  0 
00361      0  0   external;
00362      0  0 
00363      0  0 
00364      0  0 
00365   C  0  0 (* v1-020 - Add Lib$CvtF_From_Internal_Time. *)
00366      1  0 [ external ] function Lib$CvtF_From_Internal_Time(
00367      1  0   %ref Function_Code : [ unsafe ] unsigned;
00368      1  0   var  Resultant_Time : single;
00369      1  0   %ref Input_Time : [ unsafe ] quadword
00370      1  0   ) : unsigned;
00371      1  0 
00372   C  1  0 (* \NB\ Symbolic codes for the Function_Code argument are found in
00373   C  1  0    Sys$Library:Starlet.Pas
00374   C  1  0 
00375   C  1  0    Lib$CvtF_From_Internal_Time converts an internal VAX ADT to an
00376   C  1  0    external VAX F-floating (single precision) time. *)
00377      1  0 
00378      0  0   external;
00379      0  0 
00380      0  0 
00381      0  0 
00382      1  0 [external] function Lib$Date_Time(
00383      1  0   var Dst_Str : varying [ u1 ] of char
00384      1  0   ) : unsigned;
00385      1  0 
00386   C  1  0   (*  Returns the current time in   DD-MMM-YYYY HH:MM:SS.CC   format.  *)

RCS_RTL                                                          2-Dec-1992 14:00:27    VAX Pascal V4.3-76                 Page   10
1-022                           Source Listing                  21-Apr-1992 09:30:11    [DECUS.RCS.SYSLIB]RCS_RTL.PAS;1 (4)

-LINE-IDC-PL-SL-

00387      1  0 
00388      0  0   external;
00389      0  0 
00390      0  0 
00391      0  0 
00392      1  0 [external] function Lib$Day(
00393      1  0   var Day_Number : integer;
00394      1  0   User_Time : quadword := %immed 0;
00395      1  0   Day_Time : integer := %immed 0
00396      1  0   ) : unsigned;
00397      1  0 
00398   C  1  0   (*  Returns the number of days since November 17, 1858.  *)
00399      1  0 
00400      0  0   external;
00401      0  0 
00402      0  0 
00403      0  0 
00404      1  0 [external] function Lib$Delete_Logical(
00405      1  0   Log_Nam : varying [ u1 ] of char
00406      1  0   ) : unsigned;
00407      1  0 
00408   C  1  0   (*  Deletes the specified supervisor-mode process logical name.  *)
00409      1  0 
00410      0  0   external;
00411      0  0 
00412      0  0 
00413      0  0 
00414      1  0 [external] function Lib$Delete_Symbol(
00415      1  0   Symbol : varying [ u1 ] of char;
00416      1  0   Tbl_Ind : integer := %immed 0
00417      1  0   ) : unsigned;
00418      1  0 
00419   C  1  0   (*  Deletes the specified CLI symbol.  *)
00420      1  0 
00421      0  0   external;
00422      0  0 
00423      0  0 
00424      0  0 
00425   C  0  0 {?}
00426      1  0 [external] function Lib$Disable_Ctrl(
00427      1  0   Disable_Msk : unsigned;
00428      1  0   Old_Msk : unsigned := %immed 0
00429      1  0   ) : unsigned;
00430      1  0 
00431   C  1  0   (*  Disables CLI interpretation of the specified control characters.  *)
00432      1  0 
00433      0  0   external;
00434      0  0 
00435      0  0 
00436      0  0 
00437      1  0 [external] function Lib$Do_Command(
00438      1  0   Cmd_Text : varying [ u1 ] of char
00439      1  0   ) : unsigned;
00440      1  0 
00441   C  1  0   (*  Execute the specified DCL command.  Control does not returnto the caller.  *)

RCS_RTL                                                          2-Dec-1992 14:00:27    VAX Pascal V4.3-76                 Page   11
1-022                           Source Listing                  21-Apr-1992 09:30:11    [DECUS.RCS.SYSLIB]RCS_RTL.PAS;1 (4)

-LINE-IDC-PL-SL-

00442      1  0 
00443      0  0   external;
00444      0  0 
00445      0  0 
00446      0  0 
00447   C  0  0 (* \v1-021\ Lib$EDiv - Extended-precision divide. *)
00448      1  0 [ external ] function Lib$EDiv(
00449      1  0   Divisor : integer;
00450      1  0   Dividend : [ unsafe ] quadword;
00451      1  0   var Quotient : integer;
00452      1  0   var Remainder : integer
00453      1  0   ) : unsigned;
00454      1  0 
00455   C  1  0   (* Performs extended-precision division. *)
00456      1  0 
00457      0  0   external;
00458      0  0 
00459      0  0 
00460      0  0 
00461   C  0  0 (* \v1-021\ Lib$EMul Extended precision multiply. *)
00462      1  0 [ external ] function Lib$EMul(
00463      1  0   Multiplier  : integer;
00464      1  0   Multiplicand  : integer;
00465      1  0   Addend  : integer;
00466      1  0   var Product : [ unsafe ] quadword
00467      1  0   ) : unsigned;
00468      1  0 
00469   C  1  0   (*  Performs extended-precision multiplication.  *)
00470      1  0 
00471      0  0   external;
00472      0  0 
00473      0  0 
00474      0  0 
00475   C  0  0 {?}
00476      1  0 [external] function Lib$Enable_Ctrl(
00477      1  0   Enable_Msk : unsigned;
00478      1  0   Old_Msk : unsigned := %immed 0
00479      1  0   ) : unsigned;
00480      1  0 
00481   C  1  0   (*  Enables CLI interpretation of the specified control characters.  *)
00482      1  0 
00483      0  0   external;
00484      0  0 
00485      0  0 
00486      0  0 
00487   C  0  0 (*  Lib$Establish is not supported in Pascal.  Use the intrinsic function
00488   C  0  0   Establish.  *)
00489      0  0 
00490      0  0 
00491   C  0  0 (* v1-008 - Add Lib$ExtZV *)
00492      0  0 
00493      1  0 [external] function Lib$ExtZV(
00494      1  0   %ref   Position     : integer;
00495      1  0   %ref   Size         : ubyte;
00496      1  0   %immed Base_Address : unsigned

RCS_RTL                                                          2-Dec-1992 14:00:27    VAX Pascal V4.3-76                 Page   12
1-022                           Source Listing                  21-Apr-1992 09:30:11    [DECUS.RCS.SYSLIB]RCS_RTL.PAS;1 (4)

-LINE-IDC-PL-SL-

00497      1  0   ) : integer;
00498      1  0 
00499   C  1  0   (* Make the VAX EXTZV instruction available as a callable routine. *)
00500      1  0 
00501      0  0   external;
00502      0  0 
00503      0  0 
00504      0  0 
00505   C  0  0 (*  Lib$FFS and Lib$FFC should not be used from Pascal. Use the intrinsic
00506   C  0  0   functions Find_First_Bit_Set and Find_First_Bit_Clear, respectively. *)
00507      0  0 
00508      0  0 
00509      1  0 [external] function Lib$Find_File(
00510      1  0   File_Name : varying [ u1 ] of char;
00511      1  0   var Result_Name : varying [ u2 ] of char;
00512      1  0   var Context : unsigned;
00513      1  0   Default_Name : varying [ u4 ] of char := %immed 0;
00514      1  0   Related_Name : varying [ u5 ] of char := %immed 0
00515      1  0   ) : unsigned;
00516      1  0 
00517   C  1  0   (*  Search for a specified filename.  *)
00518      1  0 
00519      0  0   external;
00520      0  0 
00521      0  0 
00522      0  0 
00523      1  0 [external] function Lib$Find_File_End(
00524      1  0   var Context : unsigned
00525      1  0   ) : unsigned;
00526      1  0 
00527   C  1  0   (*  Close the search for a specified filename.  *)
00528      1  0 
00529      0  0   external;
00530      0  0 
00531      0  0 
00532      0  0 
00533      1  0 [external] function Lib$Find_Image_Symbol(
00534      1  0   %descr	Filename		: [class_s] packed array
00535      1  0 					  [ l1..u1 : integer ] of char;
00536      1  0   %descr	Symbol			: [class_s] packed array
00537      1  0 					  [ l2..u2 : integer ] of char;
00538      1  0   var		Symbol_Value		: integer;
00539      1  0   %descr	Image_Name		: [class_s] packed array
00540      1  0 					  [ l4..u4 : integer ] of char
00541      1  0   ) : unsigned;
00542      0  0   external;
00543      0  0 
00544      0  0 
00545      0  0 
00546      1  0 [external] function Lib$Free_EF(
00547      1  0   Event_Flag_Num : uword
00548      1  0   ) : unsigned;
00549      1  0 
00550   C  1  0   (*  Deallocate the specified event flag.  *)
00551      1  0 

RCS_RTL                                                          2-Dec-1992 14:00:27    VAX Pascal V4.3-76                 Page   13
1-022                           Source Listing                  21-Apr-1992 09:30:11    [DECUS.RCS.SYSLIB]RCS_RTL.PAS;1 (4)

-LINE-IDC-PL-SL-

00552      0  0   external;
00553      0  0 
00554      0  0 
00555      0  0 
00556   C  0  0 {?}
00557      1  0 [external] function Lib$Free_Timer(
00558      1  0   var Handle_Adr : unsigned
00559      1  0   ) : unsigned;
00560      1  0 
00561   C  1  0   (*  Deallocate storage alloacted by Lib$Init_Timer.  *)
00562      1  0 
00563      0  0   external;
00564      0  0 
00565      0  0 
00566      0  0 
00567   C  0  0 (*  v1-002 - Lib$Free_VM *)
00568      1  0 [ external ] function Lib$Free_VM(
00569      1  0   %ref Number_Of_Bytes : integer;
00570      1  0   %ref Base_Address : unsigned;
00571      1  0   %ref Zone_Id : unsigned := %immed 0
00572      1  0   ) : unsigned;
00573      1  0 
00574   C  1  0   (*  Free virtual memory from program region.  *)
00575      1  0 
00576      0  0   external;
00577      0  0 
00578      0  0 
00579      0  0 
00580   C  0  0 (* v1-015 - Lib$GetJPI *)
00581      1  0 [external] function Lib$GetJPI(
00582      1  0   item_code             : integer;
00583      1  0   process_id            : unsigned := %immed 0;
00584      1  0   process_name          : varying [ u3 ] of char := %immed 0;
00585      1  0   resultant_value       : [ reference, unsafe ] array [ l4 .. u4 : integer ] 
00586      1  0                           of ubyte := %immed 0;
00587      1  0   var resultant_string  : varying [ u5 ] of char := %immed 0;
00588      1  0   var resultant_length  : uword := %immed 0
00589      1  0   ) : unsigned;
00590      1  0 
00591   C  1  0   (* Run-time library implementation of $GetJPI system service. *)
00592      1  0 
00593      0  0   external;
00594      0  0 
00595      0  0 
00596      0  0 
00597      1  0 [external] function Lib$Get_EF(
00598      1  0   var Event_Flag_Num : integer
00599      1  0   ) : unsigned;
00600      1  0 
00601   C  1  0   (*  Allocate an event flag.  *)
00602      1  0 
00603      0  0   external;
00604      0  0 
00605      0  0 
00606      0  0 

RCS_RTL                                                          2-Dec-1992 14:00:27    VAX Pascal V4.3-76                 Page   14
1-022                           Source Listing                  21-Apr-1992 09:30:11    [DECUS.RCS.SYSLIB]RCS_RTL.PAS;1 (4)

-LINE-IDC-PL-SL-

00607      1  0 [external] function Lib$Get_Foreign(
00608      1  0   var Get_Str : varying [ u1 ] of char;
00609      1  0   User_Prompt : varying [ u2 ] of char := %immed 0;
00610      1  0   var Out_Len : uword := %immed 0;
00611      1  0   var Force_Prompt : integer := %immed 0
00612      1  0   ) : unsigned;
00613      1  0 
00614   C  1  0   (*  Obtains the foreign command line from the CLI.  *)
00615      1  0 
00616      0  0   external;
00617      0  0 
00618      0  0 
00619      0  0 
00620      1  0 [external] function Lib$get_input(
00621      1  0   var Get_Str : varying [ u1 ] of char;
00622      1  0   Prompt_Str  : varying [ u2 ] of char := %immed 0;
00623      1  0   var Out_Len : uword := %immed 0
00624      1  0   ) : unsigned;
00625      1  0 
00626   C  1  0   (*  Obtains a line of input from   Sys$Input .  *)
00627      1  0 
00628      0  0   external;
00629      0  0 
00630      0  0 
00631      1  0 [external] function Lib$Get_Symbol(
00632      1  0   Symbol : varying [ u1 ] of char;
00633      1  0   var Ret_Buf : varying [ u2 ] of char;
00634      1  0   var Ret_Len : uword := %immed 0;
00635      1  0   var Tbl_Ind : integer := %immed 0
00636      1  0   ) : unsigned;
00637      1  0 
00638   C  1  0   (*  Get the value of the specified CLI symbol.  *)
00639      1  0 
00640      0  0   external;  
00641      0  0 
00642      0  0 
00643      0  0 
00644   C  0  0 (*  v1-002 - Lib$Get_VM *)
00645      1  0 [ external ] function Lib$Get_VM(
00646      1  0   %ref Number_Of_Bytes : integer;
00647      1  0   var Base_Address : unsigned;
00648      1  0   %ref Zone_Id : unsigned := %immed 0
00649      1  0   ) : unsigned;
00650      1  0 
00651   C  1  0   (*  Allocate virtual memory.  *)
00652      1  0 
00653      0  0   external;
00654      0  0 
00655      0  0 
00656      0  0 
00657      1  0 [external] function Lib$Init_Timer(
00658      1  0   Handle_Arg : unsigned := %immed 0
00659      1  0   ) : unsigned;
00660      1  0 
00661   C  1  0   (*  Initialize times and counts.  *)

RCS_RTL                                                          2-Dec-1992 14:00:27    VAX Pascal V4.3-76                 Page   15
1-022                           Source Listing                  21-Apr-1992 09:30:11    [DECUS.RCS.SYSLIB]RCS_RTL.PAS;1 (4)

-LINE-IDC-PL-SL-

00662      1  0 
00663      0  0   external;
00664      0  0 
00665      0  0 
00666   C  0  0 (* v1-009 - Make KEY parameter unsafe. *)
00667   C  0  0 (* v1-010 - Make CONTEXT parameter unsafe. *)
00668      1  0 [external] function Lib$Insert_Tree(
00669      1  0   var Treehead : [unsafe] address;
00670      1  0   Key : [reference,unsafe] array [ l2 .. u2 : integer ] of ubyte;
00671      1  0   Ctrl_Flg : integer;
00672      1  0   %immed [unbound] function Compare_Routine(
00673      1  0     Key : [reference,unsafe] array [ l1 .. u1 : integer ] of ubyte;
00674      1  0     var Node : [unsafe] address;
00675      1  0     Context : [unsafe] unsigned
00676      1  0     ) : integer;
00677      1  0   %immed [unbound] function Allocate_Routine(
00678      1  0     Key : [reference,unsafe] array [ l1 .. u1 : integer ] of ubyte;
00679      1  0     var New_Node : [unsafe] address;
00680      1  0     Context : [unsafe] unsigned
00681      1  0     ) : unsigned;
00682      1  0   var New_Node : [unsafe] address;
00683      1  0   Context : [unsafe] unsigned := %immed 0
00684      1  0   ) : unsigned;
00685      1  0 
00686   C  1  0   (*  Insert an entry into a balanced binary tree.  *)
00687      1  0 
00688      0  0   external;
00689      0  0 
00690      0  0 
00691      0  0 
00692   C  0  0 (* v1-006 - Lib$InsQHI and Lib$InsQTI *)
00693      0  0 [ external ]
00694      1  0 Function Lib$InsQHI(
00695      1  0   %ref  Entry  : [ unsafe ] array [ l1 .. u1 : integer ] of ubyte;
00696      1  0   %ref  Header  : quadword;
00697      1  0   %ref  Retry_Count  : unsigned := %immed 0 
00698      1  0   ) : unsigned;
00699      1  0 
00700   C  1  0   (* Insert entry at head of queue, interlocked *)
00701      1  0 
00702      0  0   external;
00703      0  0 
00704      0  0 
00705      0  0 
00706      0  0 [ external ]
00707      1  0 Function Lib$InsQTI(
00708      1  0   %ref  Entry  : [ unsafe ] array [ l1 .. u1 : integer ] of ubyte;
00709      1  0   %ref  Header  : quadword;
00710      1  0   %ref  Retry_Count  : unsigned := %immed 0 
00711      1  0   ) : unsigned;
00712      1  0 
00713   C  1  0   (* Insert entry at tail of queue, interlocked *)
00714      1  0 
00715      0  0   external;
00716      0  0 

RCS_RTL                                                          2-Dec-1992 14:00:27    VAX Pascal V4.3-76                 Page   16
1-022                           Source Listing                  21-Apr-1992 09:30:11    [DECUS.RCS.SYSLIB]RCS_RTL.PAS;1 (4)

-LINE-IDC-PL-SL-

00717      0  0 
00718      0  0 
00719      1  0 [external] procedure Lib$InsV(
00720      1  0   Src : integer;
00721      1  0   Pos : integer;
00722      1  0   Size : ubyte;
00723      1  0   %ref Base : [unsafe] packed array [ l1 .. u1 : integer ] of bit );
00724      0  0   external;
00725      0  0 
00726      0  0 
00727      0  0 
00728      1  0 [external] function Lib$Lookup_Key(
00729      1  0   Search_Str : varying [ u1 ] of char;
00730      1  0   Key_Table : unsigned;
00731      1  0   var Key_Value : integer := %immed 0;
00732      1  0   var Full_Str : varying [ u4 ] of char := %immed 0;
00733      1  0   var Out_Len : uword := %immed 0
00734      1  0   ) : unsigned;
00735      1  0 
00736   C  1  0   (*  Look up the specified string in the specified table and return
00737   C  1  0     the associated value.  *)
00738      1  0 
00739      0  0   external;
00740      0  0 
00741      0  0 
00742      0  0 
00743   C  0  0 {?}
00744   C  0  0 (* v1-009 - Make KEY parameter unsafe. *)
00745      1  0 [external] function Lib$Lookup_Tree(
00746      1  0   Treehead : [unsafe] address;
00747      1  0   Key : [reference,unsafe] array [ l2 .. u2 : integer ] of ubyte;
00748      1  0   %immed [unbound] function Compare_Routine(
00749      1  0     Key : [reference,unsafe] array [ l1 .. u1 : integer ] of ubyte;
00750      1  0     var Treehead : [unsafe] address
00751      1  0     ) : integer;
00752      1  0   var Node : [unsafe] address
00753      1  0   ) : unsigned;
00754      1  0 
00755   C  1  0   (*  Search a balanced binary tree for the specified symbol.  *)
00756      1  0 
00757      0  0   external;
00758      0  0 
00759      0  0 
00760      0  0 
00761      1  0 [external] function Lib$Match_Cond(
00762      1  0   %ref Cond_Val   : unsigned;
00763      1  0   %ref Cond_Val_I : [list] unsigned
00764      1  0   ) : unsigned;
00765      1  0 
00766   C  1  0   (*  Compare condition codes ignoring severity.  *)
00767      1  0 
00768      0  0   external;
00769      0  0 
00770      0  0 
00771      0  0 

RCS_RTL                                                          2-Dec-1992 14:00:27    VAX Pascal V4.3-76                 Page   17
1-022                           Source Listing                  21-Apr-1992 09:30:11    [DECUS.RCS.SYSLIB]RCS_RTL.PAS;1 (4)

-LINE-IDC-PL-SL-

00772   C  0  0 (* v1-008 - Add Lib$MovC3 *)
00773      1  0 [external] procedure Lib$MovC3(
00774      1  0   %ref Word_Integer_Length : uword;
00775      1  0   %ref Source : [ unsafe ] array [ l2 .. u2 : integer ] of ubyte;
00776      1  0   %ref Destination : [ unsafe ] array [ l3 .. u3 : integer ] of ubyte
00777      1  0   ); 
00778      1  0 
00779   C  1  0   (* Make the VAX MOVC3 instruction available as a callable routine. *)
00780      1  0 
00781      0  0   external;
00782      0  0 
00783      0  0 
00784   C  0  0 (* v1-012 - Add Lib$MovC5 *)
00785      1  0 [external] procedure Lib$MovC5(
00786      1  0   %ref Word_Integer_Source_Length : uword;
00787      1  0   %ref Source : [ unsafe ] array [ l2 .. u2 : integer ] of ubyte;
00788      1  0   %ref Fill : byte;
00789      1  0   %ref Word_Integer_Destination_Length : uword;
00790      1  0        Destination : [ reference, unsafe ] array [ l3 .. u3 : integer ] of ubyte
00791      1  0   ); 
00792      1  0 
00793   C  1  0   (* Make the VAX MOVC5 instruction available as a callable routine. *)
00794      1  0 
00795      0  0   external;
00796      0  0 
00797      0  0 
00798      0  0 
00799      1  0 [external] function Lib$Put_Output(
00800      1  0   %stdescr Msg_Str : packed array[ l1 .. u1 : integer ] of char
00801      0  0   ) : unsigned; external;
00802      0  0 
00803   C  0  0   (*  Put output to Sys$Output .  *)
00804      0  0 
00805      0  0 
00806      0  0 
00807   C  0  0 (* v1-006 - Lib$RemQHI and Lib$RemQTI *)
00808      0  0 [ external ]
00809      1  0 Function Lib$RemQHI(
00810      1  0   %ref  Header  : quadword;
00811      1  0   var   Remque_Address  : unsigned;
00812      1  0   %ref  Retry_Count  : unsigned := %immed 0
00813      1  0   ) : unsigned;
00814      1  0 
00815   C  1  0   (* Remove entry from queue at head, interlocked *)
00816      1  0 
00817      0  0   external;
00818      0  0 
00819      0  0 
00820      0  0 
00821      0  0 [ external ]
00822      1  0 Function Lib$RemQTI(
00823      1  0   %ref  Header  : quadword;
00824      1  0   var   Remque_Address  : unsigned;
00825      1  0   %ref  Retry_Count  : unsigned := %immed 0
00826      1  0   ) : unsigned;

RCS_RTL                                                          2-Dec-1992 14:00:27    VAX Pascal V4.3-76                 Page   18
1-022                           Source Listing                  21-Apr-1992 09:30:11    [DECUS.RCS.SYSLIB]RCS_RTL.PAS;1 (4)

-LINE-IDC-PL-SL-

00827      1  0 
00828   C  1  0   (* Remove entry from queue at tail, interlocked *)
00829      1  0 
00830      0  0   external;
00831      0  0 
00832      0  0 
00833      0  0 
00834      1  0 [external] function Lib$Reserve_EF(
00835      1  0   %ref Event_Flag_Number : unsigned
00836      1  0   ) : unsigned;
00837      1  0 
00838   C  1  0   (*  Allocates a local event flag number specified by event-flag-number.  *)
00839      1  0 
00840      0  0   external;
00841      0  0 
00842      0  0 
00843      0  0 
00844   C  0  0 {?}
00845      1  0 [external] function Lib$SCopy_DXDX(
00846      1  0   Src_Str : varying [ u1 ] of char;
00847      1  0   var Dst_Str : varying [ u2 ] of char
00848      1  0   ) : unsigned;
00849      1  0 
00850   C  1  0   (*  Copy the source string to the destination string.  *)
00851      1  0 
00852      0  0   external;
00853      0  0 
00854      0  0 
00855      0  0 
00856      1  0 [external] function Lib$Set_Logical(
00857      1  0   Log_Nam : varying [ u1 ] of char;
00858      1  0   Value : varying [ u2 ] of char
00859      1  0   ) : unsigned;
00860      1  0 
00861   C  1  0   (*  Assign   Value   to the specified supervisor-mode process 
00862   C  1  0     logical name.  *)
00863      1  0 
00864      0  0   external;
00865      0  0 
00866      0  0 
00867      0  0 
00868      1  0 [external] function Lib$Set_Symbol(
00869      1  0   Symbol : varying [ u1 ] of char;
00870      1  0   Value : varying [ u2 ] of char;
00871      1  0   Tbl_Ind : integer := %immed 0
00872      1  0   ) : unsigned;
00873      1  0 
00874   C  1  0   (*  Define or redefine the specified CLI symbol.  *)
00875      1  0 
00876      0  0   external;
00877      0  0 
00878      0  0 
00879      0  0 
00880      1  0 [external] function Lib$Show_Timer(
00881      1  0   Handle_Adr : unsigned := %immed 0;

RCS_RTL                                                          2-Dec-1992 14:00:27    VAX Pascal V4.3-76                 Page   19
1-022                           Source Listing                  21-Apr-1992 09:30:11    [DECUS.RCS.SYSLIB]RCS_RTL.PAS;1 (4)

-LINE-IDC-PL-SL-

00882      1  0   Code : integer := %immed 0;
00883      1  0   function Action_Rtn(
00884      1  0     Out_Str : varying [ u1 ] of char;
00885      1  0     User_Arg : integer
00886      1  0     ) : integer := %immed 0;
00887      1  0   User_Arg : integer := %immed 0
00888      1  0   ) : unsigned;
00889      1  0 
00890   C  1  0   (*  Show accumulated times and counts.  *)
00891      1  0 
00892      0  0   external;
00893      0  0 
00894      0  0 
00895      0  0 
00896      1  0 [external,asynchronous] function Lib$Signal(
00897      1  0   %immed Condition_Value : [list] unsigned
00898      1  0   ) : unsigned;
00899      1  0 
00900   C  1  0   (*  Signal the specified condition.  *)
00901   C  1  0   (*  Note: The list of values may include conditions and FAO arguments.  *)
00902      1  0 
00903      0  0   external;
00904      0  0 
00905      0  0 
00906      1  0 [external,asynchronous] function Lib$Sig_To_Ret(
00907      1  0   %ref Sig_Args : signal_array;
00908      1  0   %ref Mch_Args : mechanism_array
00909      1  0   ) : unsigned;
00910      1  0 
00911   C  1  0   (*  Use the specified condition as a return value and unwind to the
00912   C  1  0       caller of the establisher of the handler.  *)
00913      1  0 
00914      0  0   external;
00915      0  0 
00916      0  0 
00917      0  0 
00918      1  0 [external] function Lib$SpanC(
00919      1  0   Src_Str : varying [ u1 ] of char;
00920      1  0   %ref Table_Arr : packed array [ l2 .. u2 : integer ] of ubyte;
00921      1  0   Mask : ubyte
00922      1  0   ) : integer;
00923      1  0 
00924   C  1  0   (*  Spans the specified characters.  *)
00925      1  0 
00926      0  0   external;
00927      0  0 
00928      0  0 
00929      0  0 
00930   C  0  0 {?}
00931      1  0 [external] function Lib$Spawn(
00932      1  0   Command_String : varying [ u1 ] of char := %immed 0;
00933      1  0   Input_File : varying [ u2 ] of char := %immed 0;
00934      1  0   Output_File : varying [ u3 ] of char := %immed 0;
00935      1  0   Flags : unsigned := %immed 0;
00936      1  0   Process_Name : varying [ u5 ] of char := %immed 0;

RCS_RTL                                                          2-Dec-1992 14:00:27    VAX Pascal V4.3-76                 Page   20
1-022                           Source Listing                  21-Apr-1992 09:30:11    [DECUS.RCS.SYSLIB]RCS_RTL.PAS;1 (4)

-LINE-IDC-PL-SL-

00937      1  0   var Process_ID : unsigned := %immed 0;
00938      1  0   var Completion_Status : unsigned := %immed 0;
00939      1  0   Completion_EFN : ubyte := %immed 0;
00940      1  0   procedure Completion_ASTAdr( { ????? }
00941      1  0     ASTPrm : integer
00942      1  0     ) := %immed 0;
00943      1  0   Completion_ASTPrm : integer := %immed 0
00944      1  0   ) : unsigned;
00945      1  0 
00946   C  1  0   (*  Spawn a subprocess.  *)
00947      1  0 
00948      0  0   external;
00949      0  0 
00950      0  0 
00951   C  0  0 (* v1-016 Lib$Stat_Timer *)
00952      1  0 [ external ] function Lib$Stat_Timer(
00953      1  0   Code           : integer;
00954      1  0   Value_Argument : [ reference, unsafe ] packed array 
00955      1  0                      [ l2 .. u2 : integer ] of byte;
00956      1  0   Handle_Address : [ reference ] unsigned := %immed 0
00957      1  0   ) : unsigned;
00958      1  0 
00959   C  1  0   (* The Statistics, Return Accumulated Times and Counts routine returns
00960   C  1  0      to its caller one of five available accumulated since the last call
00961   C  1  0      to Lib$Init_Timer.  *)
00962      1  0 
00963      0  0   external;
00964      0  0 
00965      0  0 
00966      1  0 [external,asynchronous] function Lib$Stop(
00967      1  0   %immed Condition_Value : [list] unsigned
00968      1  0   ) : unsigned;
00969      1  0 
00970   C  1  0   (*  Signal the specified condition and terminate execution.  *)
00971   C  1  0   (*  Note: The list of values may include conditions and FAO arguments.  *)
00972      1  0 
00973      0  0   external;
00974      0  0 
00975      0  0 
00976      0  0 
00977   C  0  0 (*  v1-014 - Lib$Subx  *)
00978      1  0 [external,asynchronous] procedure Lib$Subx(
00979      1  0   %ref Minuend_Array : [ unsafe ] array [ l1 .. u1 : integer ] of integer;
00980      1  0   %ref Subtrahend_Array : [ unsafe ] array [ l2 .. u2 : integer ] of integer;
00981      1  0   %ref Difference_Array : [ unsafe ] array [ l3 .. u3 : integer ] of integer;
00982      1  0   %ref Array_Length : integer := %immed 0 );
00983      1  0 
00984   C  1  0   (*  Extended precision subtraction.  *)
00985      1  0 
00986      0  0   external;
00987      0  0 
00988      0  0 
00989      0  0 
00990   C  0  0 (* v1-013 - Lib$Sub_Times *)
00991      1  0 [ external ] function Lib$Sub_Times(

RCS_RTL                                                          2-Dec-1992 14:00:27    VAX Pascal V4.3-76                 Page   21
1-022                           Source Listing                  21-Apr-1992 09:30:11    [DECUS.RCS.SYSLIB]RCS_RTL.PAS;1 (4)

-LINE-IDC-PL-SL-

00992      1  0   %ref  Time1  : uquadword;
00993      1  0   %ref  Time2  : uquadword;
00994      1  0   %ref  Resultant_Time : uquadword
00995      1  0   ) : unsigned;
00996      1  0 
00997   C  1  0   (* Subtracts two VMS internal-time-format times. *)
00998      1  0 
00999      0  0   external;
01000      0  0 
01001      0  0 
01002      1  0 [external] function Lib$Sys_AscTim(
01003      1  0   var Out_Len : uword := %immed 0;
01004      1  0   var Dst_Str : varying [ u2 ] of char;
01005      1  0   User_Time : quadword := %immed 0;
01006      1  0   Cnv_Flg : unsigned := %immed 0
01007      1  0   ) : unsigned;
01008      1  0 
01009   C  1  0   (*  Convert a quadword system time to an ASCII string.  *)
01010      1  0 
01011      0  0   external;
01012      0  0 
01013      0  0 
01014      0  0 
01015      1  0 [external] function Lib$Sys_GetMsg(
01016      1  0   Msg_ID : integer;
01017      1  0   var Msg_Len : uword := %immed 0;
01018      1  0   var Dst_Str : varying [ u3 ] of char;
01019      1  0   Flags : integer := %immed 0;
01020      1  0   var Out_Arr : unsigned := %immed 0
01021      1  0   ) : unsigned;
01022      1  0 
01023   C  1  0   (*  Get the message text for a given condition code.  *)
01024      1  0 
01025      0  0   external;
01026      0  0 
01027      0  0 
01028      0  0 
01029   C  0  0 (* v1-010 - Make CONTEXT parameter unsafe. *)
01030      1  0 [external] function Lib$Traverse_Tree(
01031      1  0   Treehead : [unsafe] address;
01032      1  0   %immed [unbound] function Action_Routine(
01033      1  0     var Current_Node : [unsafe] Address;
01034      1  0     Context : [unsafe] unsigned
01035      1  0     ) : unsigned;
01036      1  0   Context : [unsafe] unsigned := %immed 0
01037      1  0   ) : unsigned;
01038      1  0 
01039   C  1  0   (*  Traverse a balanced binary tree in inorder.  *)
01040      1  0 
01041      0  0   external;
01042      0  0 
01043      0  0 
01044      0  0 
01045      1  0 [external] function Lib$Wait(
01046      1  0   Seconds : real

RCS_RTL                                                          2-Dec-1992 14:00:27    VAX Pascal V4.3-76                 Page   22
1-022                           Source Listing                  21-Apr-1992 09:30:11    [DECUS.RCS.SYSLIB]RCS_RTL.PAS;1 (4)

-LINE-IDC-PL-SL-

01047      1  0   ) : unsigned;
01048      1  0 
01049   C  1  0   (*  Delay for the specified period.  *)
01050      1  0 
01051      0  0   external;

RCS_RTL                                                          2-Dec-1992 14:00:27    VAX Pascal V4.3-76                 Page   23
1-022                           Source Listing                  21-Apr-1992 09:30:11    [DECUS.RCS.SYSLIB]RCS_RTL.PAS;1 (5)

-LINE-IDC-PL-SL-

01053   C  0  0 (**********************)
01054   C  0  0 (*  String routines.  *)
01055   C  0  0 (**********************)
01056      0  0 
01057      0  0 
01058      0  0 
01059      1  0 [external] function Str$Compare(
01060      1  0   Src1_Str : varying [ u1 ] of char;
01061      1  0   Src2_Str : varying [ u2 ] of char
01062      1  0   ) : integer;
01063      1  0 
01064   C  1  0   (*  Compare two strings.
01065   C  1  0     Src1_Str < Src2_Str   ==>  -1
01066   C  1  0     Src1_Str = Src2_Str   ==>  0
01067   C  1  0     Src1_Str > Src2_Str   ==>  1  *)
01068      1  0 
01069      0  0   external;
01070      0  0 
01071      0  0 
01072      0  0 
01073      1  0 [external] function Str$Compare_Eql(
01074      1  0   Src1_Str : varying [ u1 ] of char;
01075      1  0   Src2_Str : varying [ u2 ] of char
01076      1  0   ) : [bit] boolean;
01077      1  0 
01078   C  1  0   (*  Compare two strings for equality.  N.B.: True if NOT equal.  *)
01079      1  0 
01080      0  0   external;
01081      0  0 
01082      0  0 
01083      0  0 
01084      1  0 [external] function Str$Trim(
01085      1  0   var Destination : varying[ u1 ] of char;
01086      1  0   %descr Source : varying[ u2 ] of char
01087      1  0   ) : unsigned;
01088      1  0 
01089   C  1  0   (*  Copy Source to Destination while removing trailing blanks and tabs.
01090   C  1  0     The Source and Destination may be the same array.  *)
01091      1  0 
01092      0  0   external;
01093      0  0 
01094      0  0 
01095      0  0 
01096      1  0 [external] function Str$Upcase(
01097      1  0   var Destination : varying[ u1 ] of char;
01098      1  0   %descr Source : varying[ u2 ] of char
01099      1  0   ) : unsigned;
01100      1  0 
01101   C  1  0   (*  Copy Source to Destination while forcing alphabetic characters to
01102   C  1  0     uppercase.  The Source and Destination may be the same array.  *)
01103      1  0 
01104      0  0   external;

RCS_RTL                                                          2-Dec-1992 14:00:27    VAX Pascal V4.3-76                 Page   24
1-022                           Source Listing                  21-Apr-1992 09:30:11    [DECUS.RCS.SYSLIB]RCS_RTL.PAS;1 (6)

-LINE-IDC-PL-SL-

01106   C  0  0 (****************************)
01107   C  0  0 (*  CLI callback routines.  *)
01108   C  0  0 (****************************)
01109      0  0 
01110      0  0 
01111      0  0 
01112      0  0 var
01113   C  0  0   (*  Definitions from   $CLIMsgDef   in   Sys$Library:STARLET.MLB .  *)
01114      0  0   CLI$_FACILITY   : [ readonly, external, value ] unsigned;
01115      0  0   CLI$_ABVERB     : [ readonly, external, value ] unsigned;
01116      0  0   CLI$_ABKEYW     : [ readonly, external, value ] unsigned;
01117      0  0   CLI$_BUFOVF     : [ readonly, external, value ] unsigned;
01118      0  0   CLI$_COMPLX     : [ readonly, external, value ] unsigned;
01119      0  0   CLI$_DEFOVF     : [ readonly, external, value ] unsigned;
01120      0  0   CLI$_DIRECT     : [ readonly, external, value ] unsigned;
01121      0  0   CLI$_EXPSYN     : [ readonly, external, value ] unsigned;
01122      0  0   CLI$_IMCHNG     : [ readonly, external, value ] unsigned;
01123      0  0   CLI$_INSFPRM    : [ readonly, external, value ] unsigned;
01124      0  0   CLI$_IVCHAR     : [ readonly, external, value ] unsigned;
01125      0  0   CLI$_SPARE1     : [ readonly, external, value ] unsigned;
01126      0  0   CLI$_IVKEYW     : [ readonly, external, value ] unsigned;
01127      0  0   CLI$_IVOPER     : [ readonly, external, value ] unsigned;
01128      0  0   CLI$_IVPROT     : [ readonly, external, value ] unsigned;
01129      0  0   CLI$_IVQLOC     : [ readonly, external, value ] unsigned;
01130      0  0   CLI$_IVSYMB     : [ readonly, external, value ] unsigned;
01131      0  0   CLI$_IVVALU     : [ readonly, external, value ] unsigned;
01132      0  0   CLI$_IVVERB     : [ readonly, external, value ] unsigned;
01133      0  0   CLI$_MAXPARM    : [ readonly, external, value ] unsigned;
01134      0  0   CLI$_NOATFIL    : [ readonly, external, value ] unsigned;
01135      0  0   CLI$_NOCCAT     : [ readonly, external, value ] unsigned;
01136      0  0   CLI$_NOCOMD     : [ readonly, external, value ] unsigned;
01137      0  0   CLI$_NOKEYW     : [ readonly, external, value ] unsigned;
01138      0  0   CLI$_NOLIST     : [ readonly, external, value ] unsigned;
01139      0  0   CLI$_NOQUAL     : [ readonly, external, value ] unsigned;
01140      0  0   CLI$_NOVALU     : [ readonly, external, value ] unsigned;
01141      0  0   CLI$_NOTNEG     : [ readonly, external, value ] unsigned;
01142      0  0   CLI$_NULFIL     : [ readonly, external, value ] unsigned;
01143      0  0   CLI$_NUMBER     : [ readonly, external, value ] unsigned;
01144      0  0   CLI$_ONCOMD     : [ readonly, external, value ] unsigned;
01145      0  0   CLI$_ONERR      : [ readonly, external, value ] unsigned;
01146      0  0   CLI$_ONLEVL     : [ readonly, external, value ] unsigned;
01147      0  0   CLI$_ONOVF      : [ readonly, external, value ] unsigned;
01148      0  0   CLI$_PARMDEL    : [ readonly, external, value ] unsigned;
01149      0  0   CLI$_RSLOVF     : [ readonly, external, value ] unsigned;
01150      0  0   CLI$_SKPDAT     : [ readonly, external, value ] unsigned;
01151      0  0   CLI$_STKOVF     : [ readonly, external, value ] unsigned;
01152      0  0   CLI$_SYMDEL     : [ readonly, external, value ] unsigned;
01153      0  0   CLI$_SYMOVF     : [ readonly, external, value ] unsigned;
01154      0  0   CLI$_UNDSYM     : [ readonly, external, value ] unsigned;
01155      0  0   CLI$_USGOTO     : [ readonly, external, value ] unsigned;
01156      0  0   CLI$_VALREQ     : [ readonly, external, value ] unsigned;
01157      0  0   CLI$_ONEVAL     : [ readonly, external, value ] unsigned;
01158      0  0   CLI$_OVRFLW     : [ readonly, external, value ] unsigned;
01159      0  0   CLI$_UNPROQUAL  : [ readonly, external, value ] unsigned;
01160      0  0   CLI$_UNPROPARM  : [ readonly, external, value ] unsigned;

RCS_RTL                                                          2-Dec-1992 14:00:27    VAX Pascal V4.3-76                 Page   25
1-022                           Source Listing                  21-Apr-1992 09:30:11    [DECUS.RCS.SYSLIB]RCS_RTL.PAS;1 (6)

-LINE-IDC-PL-SL-

01161      0  0   CLI$_INVKEY     : [ readonly, external, value ] unsigned;
01162      0  0   CLI$_INVRSP     : [ readonly, external, value ] unsigned;
01163      0  0   CLI$_UNDFIL     : [ readonly, external, value ] unsigned;
01164      0  0   CLI$_FILOPN     : [ readonly, external, value ] unsigned;
01165      0  0   CLI$_BADRET     : [ readonly, external, value ] unsigned;
01166      0  0   CLI$_ABSYMD     : [ readonly, external, value ] unsigned;
01167      0  0   CLI$_INVUIC     : [ readonly, external, value ] unsigned;
01168      0  0   CLI$_BADTEXT    : [ readonly, external, value ] unsigned;
01169      0  0   CLI$_ABFNAM     : [ readonly, external, value ] unsigned;
01170      0  0   CLI$_IVFNAM     : [ readonly, external, value ] unsigned;
01171      0  0   CLI$_BLKOVRFLOW : [ readonly, external, value ] unsigned;
01172      0  0   CLI$_BLKUNDFLOW : [ readonly, external, value ] unsigned;
01173      0  0   CLI$_BADBLK     : [ readonly, external, value ] unsigned;
01174      0  0   CLI$_NOLBLS     : [ readonly, external, value ] unsigned;
01175      0  0   CLI$_INSPRIV    : [ readonly, external, value ] unsigned;
01176      0  0   CLI$_ABSENT     : [ readonly, external, value ] unsigned;
01177      0  0   CLI$_NEGATED    : [ readonly, external, value ] unsigned;
01178      0  0   CLI$_INVFILSPE  : [ readonly, external, value ] unsigned;
01179      0  0   CLI$_INVLOGFIL  : [ readonly, external, value ] unsigned;
01180      0  0   
01181   C  0  0 (*  this is undefined in cli$globals, ( re: link/cross_ref of asdss ) and is not
01182   C  0  0 	used anywhere so am commenting out 
01183   C  0  0 CLI$_INVIFTHEN  : [ readonly, external, value ] unsigned;
01184   C  0  0 *)
01185      0  0 
01186      0  0   CLI$_SYMTOOLNG  : [ readonly, external, value ] unsigned;
01187      0  0   CLI$_ASTDCL     : [ readonly, external, value ] unsigned;
01188      0  0   CLI$_INVRANGE   : [ readonly, external, value ] unsigned;
01189      0  0   CLI$_LOCNEG     : [ readonly, external, value ] unsigned;
01190      0  0   CLI$_CONFQUAL   : [ readonly, external, value ] unsigned;
01191      0  0   CLI$_INVQUAL    : [ readonly, external, value ] unsigned;
01192      0  0   CLI$_REQPRMABS  : [ readonly, external, value ] unsigned;
01193      0  0   CLI$_INVQUALNUM : [ readonly, external, value ] unsigned;
01194      0  0   CLI$_INVREQTYP  : [ readonly, external, value ] unsigned;
01195      0  0   CLI$_NOVALUE    : [ readonly, external, value ] unsigned;
01196      0  0   CLI$_VALCNVERR  : [ readonly, external, value ] unsigned;
01197      0  0   CLI$_ILLVAL     : [ readonly, external, value ] unsigned;
01198      0  0   CLI$_NOOPTPRS   : [ readonly, external, value ] unsigned;
01199      0  0   CLI$_CREQUEJOB  : [ readonly, external, value ] unsigned;
01200      0  0   CLI$_SUBMITERR  : [ readonly, external, value ] unsigned;
01201      0  0   CLI$_DEVALSPL   : [ readonly, external, value ] unsigned;
01202      0  0   CLI$_DEVNOTSPL  : [ readonly, external, value ] unsigned;
01203      0  0   CLI$_IVDEVTYPE  : [ readonly, external, value ] unsigned;
01204      0  0   CLI$_IMGFNF     : [ readonly, external, value ] unsigned;
01205      0  0   CLI$_DEVNOTFOR  : [ readonly, external, value ] unsigned;
01206      0  0   CLI$_PWDNOTVAL  : [ readonly, external, value ] unsigned;
01207      0  0   CLI$_PWDNOTVER  : [ readonly, external, value ] unsigned;
01208      0  0   CLI$_PWDLOCKED  : [ readonly, external, value ] unsigned;
01209      0  0   CLI$_NOTFR      : [ readonly, external, value ] unsigned;
01210      0  0   CLI$_PWDSYNTAX  : [ readonly, external, value ] unsigned;
01211      0  0   CLI$_IMGNAME    : [ readonly, external, value ] unsigned;
01212      0  0   CLI$_IMAGEFNF   : [ readonly, external, value ] unsigned;
01213      0  0   CLI$_BADSTRLVL  : [ readonly, external, value ] unsigned;
01214      0  0   CLI$_REFUSED    : [ readonly, external, value ] unsigned;
01215      0  0   CLI$_BADCTLMSK  : [ readonly, external, value ] unsigned;

RCS_RTL                                                          2-Dec-1992 14:00:27    VAX Pascal V4.3-76                 Page   26
1-022                           Source Listing                  21-Apr-1992 09:30:11    [DECUS.RCS.SYSLIB]RCS_RTL.PAS;1 (6)

-LINE-IDC-PL-SL-

01216      0  0   CLI$_INVRFM     : [ readonly, external, value ] unsigned;
01217      0  0   CLI$_NOCLINT    : [ readonly, external, value ] unsigned;
01218      0  0   CLI$_NOSPAWN    : [ readonly, external, value ] unsigned;
01219      0  0   CLI$_SPWNIO     : [ readonly, external, value ] unsigned;
01220      0  0   CLI$_TRMMBX     : [ readonly, external, value ] unsigned;
01221      0  0   CLI$_SPAWNED    : [ readonly, external, value ] unsigned;
01222      0  0   CLI$_ATTACHED   : [ readonly, external, value ] unsigned;
01223      0  0   CLI$_RETURNED   : [ readonly, external, value ] unsigned;
01224      0  0   CLI$_PRESENT    : [ readonly, external, value ] unsigned;
01225      0  0   CLI$_DEFAULTED  : [ readonly, external, value ] unsigned;
01226      0  0   CLI$_CONCAT     : [ readonly, external, value ] unsigned;
01227      0  0   CLI$_LOCPRES    : [ readonly, external, value ] unsigned;
01228      0  0   CLI$_PROC_ID    : [ readonly, external, value ] unsigned;
01229      0  0   CLI$_QUEJOBCRE  : [ readonly, external, value ] unsigned;
01230      0  0   CLI$_NORMAL     : [ readonly, external, value ] unsigned;

RCS_RTL                                                          2-Dec-1992 14:00:27    VAX Pascal V4.3-76                 Page   27
1-022                           Source Listing                  21-Apr-1992 09:30:11    [DECUS.RCS.SYSLIB]RCS_RTL.PAS;1 (7)

-LINE-IDC-PL-SL-

01232      1  0 [external] function CLI$Present(
01233      1  0   %descr Name : varying [ u1 ] of char
01234      1  0   ) : unsigned;
01235      1  0 
01236   C  1  0   (*  Tests for the specified field in the command line.  *)
01237      1  0 
01238      0  0   external;
01239      0  0 
01240      0  0 
01241      0  0 
01242      1  0 [external] function CLI$Get_Value(
01243      1  0   %descr Name  : varying [ u1 ] of char;
01244      1  0   %descr Value : varying [ u2 ] of char
01245      1  0   ) : unsigned;
01246      1  0 
01247   C  1  0   (*  Returns the value of the specified field in the command line.  *)
01248      1  0 
01249      0  0   external;
01250      0  0 
01251      0  0 
01252      0  0 
01253      1  0 [external] function CLI$DCL_Parse(
01254      1  0   %descr Command_String : varying [ u1 ] of char;
01255      1  0   Tables : integer;
01256      1  0   function Param_Routine(
01257      1  0     var Get_Str : varying [ u1 ] of char;
01258      1  0     Prompt_Str  : varying [ u2 ] of char := %immed 0;
01259      1  0     var Out_Len : uword := %immed 0
01260      1  0     ) : unsigned := %immed 0;
01261      1  0   function Prompt_Routine(
01262      1  0     var Get_Str : varying [ u1 ] of char;
01263      1  0     Prompt_Str  : varying [ u2 ] of char := %immed 0;
01264      1  0     var Out_Len : uword := %immed 0
01265      1  0     ) : unsigned := %immed 0;
01266      1  0   %descr Prompt_String : varying [ u5 ] of char := %immed 0
01267      1  0   ) : unsigned;
01268      1  0 
01269   C  1  0   (*  Parses the specified command line.  *)
01270   C  1  0   (*  NB:   Param_Routine   and   Prompt_Routine   must be passed   %immed .  *)
01271      1  0 
01272      0  0   external;
01273      0  0 
01274      0  0 
01275      0  0 
01276   C  0  0 (* v1-019 - Added  USERARG  argument to CLI$Dispatch. *)
01277      1  0 [external] function CLI$Dispatch(
01278      1  0   %immed  Userarg  : [ unsafe, truncate ] unsigned
01279      1  0   ) : unsigned;
01280      1  0 
01281   C  1  0   (*  Dispatches control based on the last command line parsed.  *)
01282      1  0 
01283      0  0   external;

RCS_RTL                                                          2-Dec-1992 14:00:27    VAX Pascal V4.3-76                 Page   28
1-022                           Source Listing                  21-Apr-1992 09:30:11    [DECUS.RCS.SYSLIB]RCS_RTL.PAS;1 (8)

-LINE-IDC-PL-SL-

01285   C  0  0 (****************)
01286   C  0  0 (*  EDT Editor  *)
01287   C  0  0 (****************)
01288      0  0 
01289      0  0 
01290      0  0 
01291      0  0 type
01292      0  0   Disk_Block = packed array [ 0 .. 511 ] of ubyte;
01293      0  0 
01294      0  0 
01295      0  0 
01296      0  0 var
01297      0  0   EDT$M_Recover   : [readonly, external, value] unsigned;
01298      0  0   EDT$M_Command   : [readonly, external, value] unsigned;
01299      0  0   EDT$M_NoJournal : [readonly, external, value] unsigned;
01300      0  0   EDT$M_NoOutput  : [readonly, external, value] unsigned;
01301      0  0   EDT$M_NoCommand : [readonly, external, value] unsigned;
01302      0  0   EDT$M_NoCreate  : [readonly, external, value] unsigned;
01303      0  0 
01304      0  0 
01305      0  0 
01306      1  0 [external] function EDT$Edit(
01307      1  0   %descr In_File  : varying [ u1 ] of char := %immed 0;
01308      1  0   %descr Out_File : varying [ u2 ] of char := %immed 0;
01309      1  0   %descr Com_File : varying [ u3 ] of char := %immed 0;
01310      1  0   %descr Jou_File : varying [ u4 ] of char := %immed 0;
01311      1  0   %ref   Options  : unsigned := %immed 0;
01312      1  0   [unbound] function FileIO(
01313      1  0     Code   : integer;
01314      1  0     Stream : integer;
01315      1  0     Rec    : varying_string;
01316      1  0     RHB    : varying_string
01317      1  0     ) : unsigned := %immed 0;
01318      1  0   [unbound] function WorkIO(
01319      1  0     Code  : integer;
01320      1  0     RecNo : integer;
01321      1  0     Rec   : disk_block
01322      1  0     ) : unsigned := %immed 0;
01323      1  0   [unbound] function Xlate(
01324      1  0     var String : varying_string
01325      1  0     ) : unsigned := %immed 0
01326      1  0   ) : unsigned;
01327      1  0 
01328   C  1  0   (*  Invoke the EDT editor.  *)
01329      1  0 
01330      0  0   external;

RCS_RTL                                                          2-Dec-1992 14:00:27    VAX Pascal V4.3-76                 Page   29
1-022                           Source Listing                  21-Apr-1992 09:30:11    [DECUS.RCS.SYSLIB]RCS_RTL.PAS;1 (9)

-LINE-IDC-PL-SL-

01332   C  0  0 (**********************)
01333   C  0  0 (*  Library utility.  *)
01334   C  0  0 (**********************)
01335      0  0 
01336      0  0 
01337   C  0  0 (* v1-011 Changed library_index from integer to unsigned *)
01338      1  0 [external] function LBR$Ini_Control(
01339      1  0   var  Library_Index    : unsigned;
01340      1  0   %ref Func             : unsigned;
01341      1  0   %ref Library_Type     : unsigned := %immed 0;
01342      1  0   var  Namblk           : unsigned := %immed 0
01343      0  0   ) : unsigned; external;
01344      0  0 
01345      0  0 
01346   C  0  0   (*  Routine used to initialize the library.  *)  
01347      0  0 
01348      0  0 
01349   C  0  0 (* v1-011 Changed library_index from integer to unsigned *)
01350      1  0 [external] function LBR$Open(
01351      1  0   %ref     Library_Index  : unsigned;
01352      1  0   %stdescr FNS            : packed array[ l1..u1 : integer ] of char;
01353      1  0            Create_Options : packed array [ l2..u2 : integer ] of integer :=
01354      1  0 			      %immed 0;
01355      1  0   %stdescr DNS            : packed array[ l3..u3 : integer ] of char := 
01356      1  0                               %immed 0;
01357      1  0   %ref     RLFNA          : unsigned := %immed 0;
01358      1  0   %stdescr RNS            : packed array[ l4..u4 : integer ] of char := 
01359      1  0                               %immed 0;
01360      1  0   var      RNSLen         : unsigned := %immed 0
01361      0  0   ) : unsigned; external;
01362      0  0 
01363      0  0 
01364   C  0  0   (*  Routine used to open the library.  *)
01365      0  0 
01366      0  0 [ external ]
01367      1  0 Function LBR$Lookup_Key (
01368      1  0   %ref	Library_Index	: unsigned;
01369      1  0   %stdescr	Key_Name	: packed array [ l1..u1 : integer ] of char;
01370      1  0   VAR	Txtrfa		: RFA_PTR
01371      1  0   ) : unsigned;
01372      0  0   external;
01373      0  0 
01374      0  0 [ external ]
01375      1  0 Function LBR$Get_Record (
01376      1  0   %ref	Library_Index	: unsigned;
01377      1  0   %stdescr	InBufDes	: packed array [ l1..u1 : integer ] of char;
01378      1  0   %stdescr	OutBufDes	: [TRUNCATE] packed array [ l2..u2 : integer ] of char
01379      1  0   ) : unsigned;
01380      0  0   external;
01381      0  0 
01382      0  0 [ external ]
01383      1  0 Function LBR$Close (
01384      1  0   %ref	Library_Index	: unsigned
01385      1  0   ) : unsigned;
01386      0  0   external;

RCS_RTL                                                          2-Dec-1992 14:00:27    VAX Pascal V4.3-76                 Page   30
1-022                           Source Listing                  21-Apr-1992 09:30:11    [DECUS.RCS.SYSLIB]RCS_RTL.PAS;1 (9)

-LINE-IDC-PL-SL-

01387      0  0 
01388      1  0 [external] function LBR$Output_Help(
01389      1  0   %immed [ unbound ] function  Output_Routine(
01390      1  0     %stdescr Message : packed array[ l1..u1 : integer ] of char): unsigned;
01391      1  0   var      Output_Width : integer := %immed 0;
01392      1  0   %stdescr Line_Desc    : packed array[ l2..u2 : integer ] of char := %immed 0;
01393      1  0   %stdescr Library_Name : packed array[ l3..u3 : integer ] of char := %immed 0;
01394      1  0   var      Flags        : unsigned := %immed 0;
01395      1  0   %immed [ unbound ] function Input_Routine(
01396      1  0     var Get_Str : varying [ u1 ] of char := %immed 0;
01397      1  0     Prompt_Str  : varying [ u2 ] of char := %immed 0;
01398      1  0     var Out_Len : uword := %immed 0
01399      1  0     ) : unsigned
01400      0  0   ) : unsigned; external;
01401      0  0 
01402      0  0 
01403   C  0  0   (*  Routine used to retrieve help from the library using the help facility. *)

RCS_RTL                                                          2-Dec-1992 14:00:27    VAX Pascal V4.3-76                 Page   31
1-022                           Source Listing                  21-Apr-1992 09:30:11    [DECUS.RCS.SYSLIB]RCS_RTL.PAS;1 (10)

-LINE-IDC-PL-SL-

01405   C  0  0 (***********************)
01406   C  0  0 (*    Miscellaneous    *)
01407   C  0  0 (***********************)
01408      0  0 
01409      0  0 
01410      0  0 
01411      1  0 [external] function Sys$Setddir(
01412      1  0   %stdescr New_Dir            : packed array[ l1 .. u1 : integer ] of char := %immed 0;
01413      1  0   var      Current_Dir_Length : uword := %immed 0;
01414      1  0   %stdescr Current_Dir        : packed array[ l2 .. u2 : integer ] of char := %immed 0
01415      0  0   ) : unsigned; external;
01416      0  0 
01417   C  0  0   (*  This service returns the current directory if a new directory is not
01418   C  0  0       specified.  It changes the default directory to new directory if new 
01419   C  0  0       directory is specified.  *) 
01420      0  0 
01421      0  0 
01422      0  0 
01423      0  0 end.  (*  RCS_RTL   *)

RCS_RTL                                                          2-Dec-1992 14:00:27    VAX Pascal V4.3-76                 Page   32
1-022                           Pascal Compilation Statistics   21-Apr-1992 09:30:11    [DECUS.RCS.SYSLIB]RCS_RTL.PAS;1 (10)

ENVIRONMENT STATISTICS

                                                       -------- Symbols --------
        File                                           Total    Loaded   Percent

SYS$COMMON:[SYSLIB]STARLET.PEN;2                       34364         0         0


COMMAND QUALIFIERS

  PASCAL/NOOBJECT/LIST/ENVIRONMENT RCS_RTL

  /CHECK=(BOUNDS,NOCASE_SELECTORS,DECLARATIONS,NOOVERFLOW,NOPOINTERS,NOSUBRANGE)
  /DEBUG=(NOSYMBOLS,TRACEBACK)
  /NODESIGN
  /SHOW=(DICTIONARY,INCLUDE,NOINLINE,HEADER,SOURCE,STATISTICS,TABLE_OF_CONTENTS)
  /OPTIMIZE
  /STANDARD=NONE
  /TERMINAL=(NOFILE_NAME,NOROUTINE_NAME,NOSTATISTICS)
  /USAGE=(NOUNUSED,UNINITIALIZED,NOUNCERTAIN)
  /NOANALYSIS_DATA
  /ENVIRONMENT=USERDISK:[DECUS.RCS.SYSLIB]RCS_RTL.PEN;6
  /LIST=USERDISK:[DECUS.RCS.SYSLIB]RCS_RTL.LIS;6
  /NOOBJECT
  /NOCROSS_REFERENCE /ERROR_LIMIT=30 /NOG_FLOATING /NOMACHINE_CODE /NOOLD_VERSION /WARNINGS


COMPILER INTERNAL TIMING

  Phase                 Faults       CPU Time      Elapsed Time
  Initialization          106        00:00.1          00:00.2
  Source Analysis        1344        00:02.5          00:03.0
  Source Listing           66        00:00.7          00:01.0
  Tree Construction         0        00:00.0          00:00.0
  Flow Analysis             0        00:00.0          00:00.0
  Value Propagation         0        00:00.0          00:00.0
  Profit Analysis           0        00:00.0          00:00.0
  Context Analysis          0        00:00.0          00:00.0
  Name Packing              0        00:00.0          00:00.0
  Code Selection            0        00:00.0          00:00.0
  Final                   116        00:00.2          00:00.7
  TOTAL                  1637        00:03.5          00:05.0


COMPILATION STATISTICS

  CPU Time:       00:03.5         (24748 Lines/Minute)
  Elapsed Time:   00:05.0
  Page Faults:    1637
  Pages Used:     2607
  Compilation Complete
