! ******************************************************************************************************************************** ! Created: 30-AUG-2007 11:29:55 by OpenVMS SDL IA64-2 ! Source: 30-AUG-2007 11:29:54 GEM$:[GEMGROUP.SHEILAM.FORSYSDEF.IVMS-V83]OTS$ROUTINES.SDI;1 ! ******************************************************************************************************************************** !*** MODULE ots$routines *** !DEC$ OPTIONS/ALIGN=(RECORDS=PACKED,COMMONS=PACKED)/NOWARN ! *************************************************************************** ! * ! COPYRIGHT (c) 1988 BY * ! DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASSACHUSETTS. * ! ALL RIGHTS RESERVED. * ! * ! THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED * ! ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE * ! INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER * ! COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY * ! OTHER PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY * ! TRANSFERRED. * ! * ! THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE * ! AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT * ! CORPORATION. * ! * ! DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS * ! SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL. * ! * ! * ! *************************************************************************** ! ! 20-Mar-2007 JML QXCM1000393572 Headers returning complex results ! can't be compiled by BASIC. ! ! Well clearly the routines returning complex results ! by value (requiring 2 registers) need header generation to ! be limited to only those languages KNOWN to be able ! to support it and likely to call them. ! ! ! 14-Dec-2006 JML QXCM1000384200 Headers returning complex results ! can't be compiled by C/C++ ! ! Now I understand why a number of headers have been commented ! out. When I added all the new IEEE forms, even for those ! VAX forms commented out, I didn't realize that C/C++ cannot ! return more than 64bits by value. Five of the existing IEEE ! routines return complex results by value and those require ! 2 registers. This resulted in a .h file for C/C++ that ! would not compile. The fix is to use iflanguage and ! prevent those headers from being generated for C/C++. These ! routines most likely will be called by Fortran anyway. ! ! 23-Feb-2006 JML PTR 75-109-96 Add missing headers for IEEE forms of ! various routines. ! ! As of 23-Feb-2006 SDL has no types to describe IEEE floating ! data. Since the actual type is only material with respect ! to size of the argument (single vs double precision) we use ! F-Floating to represent IEEE S-Floating and D-Floating to ! represent IEEE T-Floating. ! ! In the course of fixing this PTR it was discovered that ! number of header definitions have been commented out for ! years. Attempts to determine why they are commented out ! proved futile. Rather than risk enabling them and possibly ! introducing a collision between the system supplied headers ! and private headers users may have developed to work around ! the lack of them, they shall remain commented out. ! However, their new IEEE forms will be enabled as these ! routines only came into existence recently. ! (see DPML$SHR.OPT checkin of 24-Mar-2004). ! ! OTS$CVT_T_D ! ! Convert Numeric Text to D- or F-Floating Value ! ! The Convert Numeric Text to D- or F-Floating routines ! convert an ASCII text string representation of a ! numeric value to a D_floating or F_floating value. ! INTEGER*4 ots$cvt_t_d EXTERNAL ots$cvt_t_d ! OTS$CVT_T_F ! ! Convert Numeric Text to D- or F-Floating Value ! ! The Convert Numeric Text to D- or F-Floating routines ! convert an ASCII text string representation of a ! numeric value to a D_floating or F_floating value. ! INTEGER*4 ots$cvt_t_f EXTERNAL ots$cvt_t_f ! OTS$CVT_T_T ! ! Convert Numeric Text to T- or S-Floating Value ! ! The Convert Numeric Text to T- or S-Floating routines ! convert an ASCII text string representation of a ! numeric value to a T_floating or S_floating value. ! INTEGER*4 ots$cvt_t_t EXTERNAL ots$cvt_t_t ! OTS$CVT_T_S ! ! Convert Numeric Text to T- or S-Floating Value ! ! The Convert Numeric Text to T- or S-Floating routines ! convert an ASCII text string representation of a ! numeric value to a T_floating or S_floating value. ! INTEGER*4 ots$cvt_t_s EXTERNAL ots$cvt_t_s ! OTS$CVT_T_G ! ! Convert Numeric Text to G- or H-Floating Value ! ! The Convert Numeric Text to G- or H-Floating routines ! convert an ASCII text string representation of a ! numeric value to a G_floating or H_floating value. ! INTEGER*4 ots$cvt_t_g EXTERNAL ots$cvt_t_g ! OTS$CVT_T_H ! ! Convert Numeric Text to G- or H-Floating Value ! ! The Convert Numeric Text to G- or H-Floating routines ! convert an ASCII text string representation of a ! numeric value to a G_floating or H_floating value. ! INTEGER*4 ots$cvt_t_h EXTERNAL ots$cvt_t_h ! OTS$DIVC ! ! Complex Division ! ! The Complex Division routines ! return a complex result of a division on complex ! numbers. ! ! ENTRY ots$divc ALIAS $ots_divc PARAMETER ( ! F_FLOATING COMPLEX NAMED complex_dividend IN ! TYPENAME f_floating_complex VALUE, ! F_FLOATING COMPLEX NAMED complex_divisor IN ! TYPENAME f_floating_complex VALUE ) ! RETURNS F_FLOATING COMPLEX NAMED RESULT TYPENAME f_floating_complex; ! OTS$DIVCD_R3 ! ! Complex Division ! ! The Complex Division routines ! return a complex result of a division on complex ! numbers. ! ! ENTRY ots$divcd_r3 ALIAS $ots_divcd_r3 PARAMETER ( ! D_FLOATING COMPLEX NAMED complex_dividend IN ! TYPENAME d_floating_complex VALUE, ! D_FLOATING COMPLEX NAMED complex_divisor IN ! TYPENAME d_floating_complex VALUE ) ! RETURNS D_FLOATING COMPLEX NAMED RESULT TYPENAME d_floating_complex; ! OTS$DIVCG_R3 ! ! Complex Division ! ! The Complex Division routines ! return a complex result of a division on complex ! numbers. ! ! ENTRY ots$divcg_r3 ALIAS $ots_divcg_r3 PARAMETER ( ! G_FLOATING COMPLEX NAMED complex_dividend IN ! TYPENAME g_floating_complex VALUE, ! G_FLOATING COMPLEX NAMED complex_divisor IN ! TYPENAME g_floatin_complex VALUE ) ! RETURNS G_FLOATING COMPLEX NAMED RESULT TYPENAME g_floating_complex; ! OTS$DIVCS ! ! Complex Division ! ! The Complex Division routines ! return a complex result of a division on complex ! numbers. ! COMPLEX ots$divcs EXTERNAL ots$divcs ! OTS$DIVCT_R3 ! ! Complex Division ! ! The Complex Division routines ! return a complex result of a division on complex ! numbers. ! COMPLEX*16 ots$divct_r3 EXTERNAL ots$divct_r3 ! OTS$DIV_PK_LONG ! ! Packed Decimal Division with Long Divisor ! ! The Packed Decimal Division with Long Divisor routine ! divides fixed-point decimal data, which is stored in packed ! decimal form, when precision and scale requirements for the quotient call ! for multiple precision division. The divisor must have a precision of ! thirty or thirty-one digits. ! INTEGER*4 ots$div_pk_long EXTERNAL ots$div_pk_long ! OTS$DIV_PK_SHORT ! ! Packed Decimal Division with Short Divisor ! ! The Packed Decimal Division with Short Divisor routine ! divides fixed-point decimal data ! when precision and scale requirements for the quotient call for ! multiple-precision division. ! INTEGER*4 ots$div_pk_short EXTERNAL ots$div_pk_short ! OTS$MOVE3 ! ! Move Data Without Fill ! ! The Move Data Without Fill routine ! moves up to 231-1 bytes, (2,147,483,647 bytes) from a ! specified source address to a specified destination address. ! ! Subroutine ots$move3 ! OTS$MOVE5 ! ! Move Data with Fill ! ! The Move Data with Fill routine ! moves up to 231-1 bytes, (2,147,483,647 bytes) from a ! specified source address to a specified destination address, ! with separate source and destination lengths, ! and with fill. Overlap of the source and destination arrays ! does not affect the result. ! ! Subroutine ots$move5 ! OTS$MULC ! ! Complex Multiplication ! ! The Complex Multiplication routines ! calculate the complex product of two complex ! values. ! ! ENTRY ots$mulc ALIAS $ots_mulc PARAMETER ( ! F_FLOATING COMPLEX NAMED complex_multiplier IN ! TYPENAME f_floating_complex VALUE, ! F_FLOATING COMPLEX NAMED complex_multiplicand IN ! TYPENAME f_floating_complex VALUE ) ! RETURNS F_FLOATING COMPLEX NAMED RESULT TYPENAME f_floating_complex; ! OTS$MULCD_R3 ! ! Complex Multiplication ! ! The Complex Multiplication routines ! calculate the complex product of two complex ! values. ! ! ENTRY ots$mulcd_r3 ALIAS $ots_mulcd_r3 PARAMETER ( ! D_FLOATING COMPLEX NAMED complex_multiplier IN ! TYPENAME d_floating_complex VALUE, ! D_FLOATING COMPLEX NAMED complex_multiplicand IN ! TYPENAME d_floating_complex VALUE ) ! RETURNS D_FLOATING COMPLEX NAMED RESULT TYPENAME d_floating_complex; ! OTS$MULCG_R3 ! ! Complex Multiplication ! ! The Complex Multiplication routines ! calculate the complex product of two complex ! values. ! ! ENTRY ots$mulcg_r3 ALIAS $ots_mulcg_r3 PARAMETER ( ! G_FLOATING COMPLEX NAMED complex_multiplier IN ! TYPENAME g_floating_complex VALUE, ! G_FLOATING COMPLEX NAMED complex_multiplicand IN ! TYPENAME g_floating_complex VALUE ) ! RETURNS G_FLOATING COMPLEX NAMED RESULT TYPENAME g_floating_complex; ! OTS$MULCS ! ! Complex Multiplication ! ! The Complex Multiplication routines ! calculate the complex product of two complex ! values. ! COMPLEX ots$mulcs EXTERNAL ots$mulcs ! OTS$MULCT_R3 ! ! Complex Multiplication ! ! The Complex Multiplication routines ! calculate the complex product of two complex ! values. ! COMPLEX*16 ots$mulct_r3 EXTERNAL ots$mulct_r3 ! OTS$CNVOUT ! ! Convert D_floating, G_floating or H_floating Number to Character String ! ! The Convert Floating to Character String routines convert ! a D_floating, G_floating or H_floating number ! to a character string in ! the FORTRAN E format. ! INTEGER*4 ots$cnvout EXTERNAL ots$cnvout ! OTS$CNVOUT_G ! ! Convert D_floating, G_floating or H_floating Number to Character String ! ! The Convert Floating to Character String routines convert ! a D_floating, G_floating or H_floating number ! to a character string in ! the FORTRAN E format. ! INTEGER*4 ots$cnvout_g EXTERNAL ots$cnvout_g ! OTS$CNVOUT_H ! ! Convert D_floating, G_floating or H_floating Number to Character String ! ! The Convert Floating to Character String routines convert ! a D_floating, G_floating or H_floating number ! to a character string in ! the FORTRAN E format. ! INTEGER*4 ots$cnvout_h EXTERNAL ots$cnvout_h ! OTS$CNVOUT_S ! ! Convert IEEE S_floatingto Character String ! ! The Convert Floating to Character String routines convert ! a IEEE S_floating number to a character string in ! the FORTRAN E format. ! INTEGER*4 ots$cnvout_s EXTERNAL ots$cnvout_s ! OTS$CNVOUT_T ! ! Convert IEEE T_floating Number to Character String ! ! The Convert Floating to Character String routines convert ! a IEEE T_floating number to a character string in ! the FORTRAN E format. ! INTEGER*4 ots$cnvout_t EXTERNAL ots$cnvout_t ! OTS$POWCC ! ! Raise a Complex Base to a Complex Floating-Point Exponent ! ! The Raise a Complex Base to a Complex Floating-Point Exponent routines ! return the complex floating-point result of raising ! a complex base to a complex exponent. ! ! ENTRY ots$powcc ALIAS $ots_powcc PARAMETER ( ! F_FLOATING COMPLEX NAMED complex_base IN ! TYPENAME f_floating_complex VALUE, ! F_FLOATING COMPLEX NAMED complex_exponent_value IN ! TYPENAME f_floating_complex VALUE ) ! RETURNS F_FLOATING COMPLEX NAMED RESULT TYPENAME f_floating_complex; ! OTS$POWCDCD_R3 ! ! Raise a Complex Base to a Complex Floating-Point Exponent ! ! The Raise a Complex Base to a Complex Floating-Point Exponent routine ! returns the complex result of raising ! a complex base to a complex exponent. ! ! ENTRY ots$powcdcd_r3 ALIAS $ots_powcdcd_r3 PARAMETER ( ! D_FLOATING COMPLEX NAMED complex_base IN ! TYPENAME d_floating_complex VALUE, ! D_FLOATING COMPLEX NAMED complex_exponent_value IN ! TYPENAME d_floating_complex VALUE ) ! RETURNS D_FLOATING COMPLEX NAMED RESULT TYPENAME d_floating_complex; ! OTS$POWCGCG_R3 ! ! Raise a Complex Base to a Complex Floating-Point Exponent ! ! The Raise a Complex Base to a Complex Floating-Point Exponent routine ! returns the complex result of raising ! a complex base to a complex exponent. ! ! ENTRY ots$powcgcg_r3 ALIAS $ots_powcgcg_r3 PARAMETER ( ! G_FLOATING COMPLEX NAMED complex_base IN ! TYPENAME g_floating_complex VALUE, ! G_FLOATING COMPLEX NAMED complex_exponent_value IN ! TYPENAME g_floating_complex VALUE ) ! RETURNS G_FLOATING COMPLEX NAMED RESULT TYPENAME g_floating_complex; ! OTS$POWCSCS ! ! Raise a Complex Base to a Complex Floating-Point Exponent ! ! The Raise a Complex Base to a Complex Floating-Point Exponent routine ! returns the complex result of raising ! a complex base to a complex exponent. ! COMPLEX ots$powcscs EXTERNAL ots$powcscs ! OTS$POWCTCT_R3 ! ! Raise a Complex Base to a Complex Floating-Point Exponent ! ! The Raise a Complex Base to a Complex Floating-Point Exponent routine ! returns the complex result of raising ! a complex base to a complex exponent. ! COMPLEX*16 ots$powctct_r3 EXTERNAL ots$powctct_r3 ! OTS$POWCJ ! ! Raise a Complex Base to a Signed Longword Integer Exponent ! ! The Raise a Complex Base to a Signed Longword Integer Exponent ! routine returns the complex result of raising a complex base to an ! integer exponent. ! ! ENTRY ots$powcj ALIAS $ots_powcj PARAMETER ( ! F_FLOATING COMPLEX NAMED complex_base IN ! TYPENAME f_floating_complex VALUE, ! LONGWORD NAMED longword_integer_exponent IN ! TYPENAME longword_signed VALUE ) ! RETURNS F_FLOATING COMPLEX NAMED RESULT TYPENAME f_floating_complex; ! OTS$POWCDJ_R3 ! ! Raise a Complex Base to a Signed Longword Integer Exponent ! ! The Raise a Complex Base to a Signed Longword Integer Exponent ! routine returns the complex result of raising a complex base to an ! integer exponent. ! ! ENTRY ots$powcdj_r3 ALIAS $ots_powcdj_r3 PARAMETER ( ! D_FLOATING COMPLEX NAMED complex_base IN ! TYPENAME D_floating_complex VALUE, ! LONGWORD NAMED longword_integer_exponent IN ! TYPENAME longword_signed VALUE ) ! RETURNS D_FLOATING COMPLEX NAMED RESULT TYPENAME d_floating_complex; ! OTS$POWCGJ_R3 ! ! Raise a Complex Base to a Signed Longword Integer Exponent ! ! The Raise a Complex Base to a Signed Longword Integer Exponent ! routine returns the complex result of raising a complex base to an ! integer exponent. ! ! ENTRY ots$powcgj_r3 ALIAS $ots_powcgj_r3 PARAMETER ( ! G_FLOATING COMPLEX NAMED complex_base IN ! TYPENAME g_floating_complex VALUE, ! LONGWORD NAMED longword_integer_exponent IN ! TYPENAME longword_signed VALUE ) ! RETURNS G_FLOATING COMPLEX NAMED RESULT TYPENAME g_floating_complex; ! OTS$POWCSJ ! ! Raise a Complex Base to a Signed Longword Integer Exponent ! ! The Raise a Complex Base to a Signed Longword Integer Exponent ! routine returns the complex result of raising a complex base to an ! integer exponent. ! COMPLEX ots$powcsj EXTERNAL ots$powcsj ! OTS$POWCTJ_R3 ! ! Raise a Complex Base to a Signed Longword Integer Exponent ! ! The Raise a Complex Base to a Signed Longword Integer Exponent ! routines return the complex result of raising a complex base to an ! integer exponent. ! COMPLEX*16 ots$powctj_r3 EXTERNAL ots$powctj_r3 ! OTS$POWDD ! ! Raise a D_floating Base to D_floating Exponent ! ! The Raise a D_floating Base to a D_floating Exponent routine ! returns the D_floating result of raising a D_floating base to a D_floating ! exponent. ! ! ENTRY ots$powdd ALIAS $ots_powdd PARAMETER ( ! D_FLOATING NAMED D_floating_point_base IN ! TYPENAME d_floating VALUE, ! D_FLOATING NAMED D_floating_point_exponent IN ! TYPENAME d_floating VALUE ) ! RETURNS D_FLOATING NAMED RESULT TYPENAME d_floating; ! OTS$POWDJ ! ! Raise a D_floating Base to a Longword Exponent ! ! The Raise a D_floating Base to a Longword Exponent routine ! returns the D_floating result of raising a D_floating base to a longword exponent. ! ! ENTRY ots$powdj ALIAS $ots_powdj PARAMETER ( ! D_FLOATING NAMED D_floating_point_base IN ! TYPENAME d_floating VALUE, ! LONGWORD NAMED longword_integer_exponent IN ! TYPENAME longword_signed VALUE ) ! RETURNS D_FLOATING NAMED RESULT TYPENAME d_floating; ! OTS$POWDR ! ! Raise a D_floating Base to an F_floating Exponent ! ! The Raise a D_floating Base to an F_floating Exponent routines ! return the D_floating result of raising a D_floating base to an ! F_floating exponent. ! ! ENTRY ots$powdr ALIAS $ots_powdr PARAMETER ( ! D_FLOATING NAMED D_floating_point_base IN ! TYPENAME d_floating VALUE, ! F_FLOATING NAMED F_floating_point_exponent IN ! TYPENAME f_floating VALUE ) ! RETURNS D_FLOATING NAMED RESULT TYPENAME d_floating; ! OTS$POWGG ! ! Raise a G_floating Base to a G_floating Exponent ! ! The Raise a G_floating Base to a G_floating Exponent routine ! returns the G_floating result of raising a G_floating base to a G_floating exponent. ! ! ENTRY ots$powgg ALIAS $ots_powgg PARAMETER ( ! G_FLOATING NAMED G_floating_point_base IN ! TYPENAME g_floating VALUE, ! G_FLOATING NAMED G_floating_point_exponent IN ! TYPENAME g_floating VALUE ) ! RETURNS G_FLOATING NAMED RESULT TYPENAME g_floating; ! OTS$POWTT ! ! Raise an IEEE T_floating Base to an IEEE T_floating Exponent ! ! The Raise an IEEE T_floating Base to an IEEE T_floating Exponent routine ! returns the IEEE T_floating result of raising an IEEE T_floating base ! to an IEEE T_floating exponent. ! ! REAL*8 ots$powtt EXTERNAL ots$powtt ! OTS$POWGJ ! ! Raise a G_floating Base to a Longword Exponent ! ! The Raise a G_floating Base to a Longword Exponent routine ! returns the G_floating result of raising a G_floating base to a longword exponent. ! ! ENTRY ots$powgj ALIAS $ots_powgj PARAMETER ( ! G_FLOATING NAMED G_floating_point_base IN ! TYPENAME g_floating VALUE, ! LONGWORD NAMED longword_integer_exponent IN ! TYPENAME longword_signed VALUE ) ! RETURNS G_FLOATING NAMED RESULT TYPENAME g_floating; ! OTS$POWTJ ! ! Raise an IEEE T_floating Base to a Longword Exponent ! ! The Raise and IEEE T_floating Base to a Longword Exponent routine ! returns the IEEE T_floating result of raising an IEEE T_floating ! base to a longword exponent. ! REAL*8 ots$powtj EXTERNAL ots$powtj ! OTS$POWHH_R3 ! ! Raise an H_floating Base to an H_floating Exponent ! ! The Raise an H_floating Base to an H_floating Exponent ! routine returns the H_floating result of raising an H_floating base ! to an H_floating exponent. ! ! ENTRY ots$powhh_r3 ALIAS $ots_powhh_r3 PARAMETER ( ! H_FLOATING NAMED H_floating_point_base IN ! TYPENAME h_floating VALUE, ! H_FLOATING NAMED H_floating_point_exponent IN ! TYPENAME h_floating VALUE ) ! RETURNS H_FLOATING NAMED RESULT TYPENAME h_floating; ! OTS$POWHJ_R3 ! ! Raise an H_floating Base to an Longword Exponent ! ! The Raise an H_floating Base to a Longword Exponent ! routine returns the H_floating result of raising an H_floating ! base to a longword exponent. ! ! ENTRY ots$powhj_r3 ALIAS $ots_powhj_r3 PARAMETER ( ! H_FLOATING NAMED H_floating_point_base IN ! TYPENAME h_floating VALUE, ! LONGWORD NAMED longword_integer_exponent IN ! TYPENAME longword_signed VALUE ) ! RETURNS H_FLOATING NAMED RESULT TYPENAME h_floating; ! OTS$POWII ! ! Raise a Word Base to a Word Exponent ! ! The Raise a Word Base to a Word Exponent routine ! returns the word result of raising a word base to a word exponent. ! INTEGER*2 ots$powii EXTERNAL ots$powii ! OTS$POWJJ ! ! Raise a Longword Base to a Longword Exponent ! ! The Raise a Longword Base to a Longword Exponent routine ! returns the longword result of raising a signed longword ! base to a signed longword exponent. ! INTEGER*4 ots$powjj EXTERNAL ots$powjj ! OTS$POWLULU ! ! Raise an Unsigned Longword Base to an Unsigned Longword Exponent ! ! The Raise an Unsigned Longword Base to an Unsigned Longword ! Exponent routine returns the unsigned longword result of ! raising an unsigned longword integer base to ! an unsigned longword integer exponent. ! INTEGER*4 ots$powlulu EXTERNAL ots$powlulu ! OTS$POWRD ! ! Raise an F_floating Base to D_floating Exponent ! ! The Raise an F_floating Base to a D_floating Exponent ! routine returns the F_floating result of raising an ! F_floating base to a D_floating exponent. ! ! ENTRY ots$powrd ALIAS $ots_powrd PARAMETER ( ! F_FLOATING NAMED F_floating_point_base IN ! TYPENAME f_floating VALUE, ! D_FLOATING NAMED D_floating_point_exponent IN ! TYPENAME d_floating VALUE ) ! RETURNS D_FLOATING NAMED RESULT TYPENAME d_floating; ! OTS$POWRJ ! ! Raise an F_floating Base to a Longword Exponent ! ! The Raise an F_floating Base to a Longword Exponent ! routine returns the F_floating result of raising an ! F_floating base to a longword exponent. ! REAL*4 ots$powrj EXTERNAL ots$powrj ! OTS$POWSJ ! ! Raise an IEEE S_floating Base to a Longword Exponent ! ! The Raise an IEEE S_floating Base to a Longword Exponent routine ! returns the IEEE S_floating result of raising an IEEE S_floating base ! to a longword exponent. ! REAL*4 ots$powsj EXTERNAL ots$powsj ! OTS$POWRR ! ! Raise an F_floating Base to F_floating Exponent ! ! The Raise an F_floating Base to an F_floating Exponent ! routine returns the F_floating result of raising an F_floating ! base to an F_floating exponent. ! REAL*4 ots$powrr EXTERNAL ots$powrr ! OTS$POWSS ! ! Raise an IEEE S_floating Base to IEEE S_floating Exponent ! ! The Raise an IEEE S_floating Base to IEEE S_floating Exponent ! routines retursn the IEEE S_floating result of raising ! an IEEES_floating base to an IEEE S_floating exponent. ! REAL*4 ots$powss EXTERNAL ots$powss ! OTS$POWRLU ! ! Raise a Floating-Point Base to an Unsigned Longword Integer Exponent ! ! The Raise a Floating-Point Base to an Unsigned Longword Integer ! Exponent routines returns the floating-point result of raising ! a floating-point base to an unsigned longword integer exponent. ! REAL*4 ots$powrlu EXTERNAL ots$powrlu ! OTS$POWDLU ! ! Raise a D-Floating Base to an Unsigned Longword Integer Exponent ! ! The Raise a D-Floating Base to an Unsigned Longword Integer ! Exponent routines returns the D-Floating result of raising ! a D-Floating base to an unsigned longword integer exponent. ! ! ENTRY ots$powdlu ALIAS $ots_powdlu PARAMETER ( ! D_FLOATING NAMED floating_point_base IN ! TYPENAME d_floating VALUE, ! LONGWORD UNSIGNED NAMED unsigned_lword_int_exponent IN ! TYPENAME longword_unsigned VALUE ) ! RETURNS D_FLOATING NAMED RESULT TYPENAME d_floating; ! OTS$POWGLU ! ! Raise a G_floating Base to an Unsigned Longword Integer Exponent ! ! The Raise a G-Floating Base to an Unsigned Longword Integer ! Exponent routines returns the G-Floating result of raising ! a G-Floating base to an unsigned longword integer exponent. ! ! ENTRY ots$powglu ALIAS $ots_powglu PARAMETER ( ! G_FLOATING NAMED floating_point_base IN ! TYPENAME g_floating VALUE, ! LONGWORD UNSIGNED NAMED unsigned_lword_int_exponent IN ! TYPENAME longword_unsigned VALUE ) ! RETURNS G_FLOATING NAMED RESULT TYPENAME g_floating; ! OTS$POWSLU ! ! Raise an IEEE S-Floating Base to an Unsigned Longword Integer Exponent ! ! The Raise an IEEE S-Floating Base to an Unsigned routines returns the ! IEEE S-flloating result of raising an IEEE S-Floating base to an ! unsigned longword integer exponent. ! REAL*4 ots$powslu EXTERNAL ots$powslu ! OTS$POWTLU ! ! Raise an IEEE T-Floating Base to an Unsigned Longword Integer Exponent ! ! The Raise and IEEE T-Floating Base to an Unsigned Longword Integer ! Exponent routines returns the IEEE T-Floating result of raising ! an IEEE T-Floating base to an unsigned longword integer exponent. ! REAL*8 ots$powtlu EXTERNAL ots$powtlu ! OTS$POWHLU_R3 ! ! Raise an H-Floating Base to an Unsigned Longword Integer Exponent ! ! The Raise an H-Floating Base to an Unsigned Longword Integer ! Exponent routine returns the H-Floating result of raising ! an H-Floating base to an unsigned longword integer exponent. ! ! ENTRY ots$powhlu_r3 ALIAS $ots_powhlu_r3 PARAMETER ( ! H_FLOATING NAMED floating_point_base IN ! TYPENAME h_floating VALUE, ! LONGWORD UNSIGNED NAMED unsigned_lword_int_exponent IN ! TYPENAME longword_unsigned VALUE ) ! RETURNS H_FLOATING NAMED RESULT TYPENAME h_floating; ! OTS$SCOPY_DXDX ! ! Copy a Source String Passed by Descriptor to a Destination String ! ! The Copy a Source String Passed by Descriptor to a Destination String ! routine ! copies a source string to a destination string. Both strings are ! passed by descriptor. ! INTEGER*2 ots$scopy_dxdx EXTERNAL ots$scopy_dxdx ! OTS$SCOPY_R_DX ! ! Copy a Source String Passed by Reference to a Destination String ! ! The Copy a Source String Passed by Reference to a Destination String ! routine copies a source string passed by reference to a destination ! string. ! INTEGER*2 ots$scopy_r_dx EXTERNAL ots$scopy_r_dx ! OTS$SFREE1_DD ! ! Strings, Free One Dynamic ! ! The Free One Dynamic String routine ! returns one dynamic string area to free storage. ! ! Subroutine ots$sfree1_dd ! OTS$SFREEN_DD ! ! Strings, Free n Dynamic ! ! The Free n Dynamic Strings routine ! takes as input a vector of one or more dynamic string areas and ! returns them to free storage. ! ! Subroutine ots$sfreen_dd ! OTS$SGET1_DD ! ! Strings, Get One Dynamic ! ! The Get One Dynamic String routine ! allocates a specified number of bytes of dynamic virtual ! memory to a specified string descriptor. ! ! Subroutine ots$sget1_dd ! OTS$CVT_L_TB ! ! Convert an Unsigned Integer to Binary Text ! ! The Convert an Unsigned Integer to Binary Text routine ! converts an unsigned integer value of arbitrary length to ! binary representation in an ASCII text string. By default, a longword is ! converted. ! INTEGER*4 ots$cvt_l_tb EXTERNAL ots$cvt_l_tb ! OTS$CVT_L_TI ! ! Convert Signed Integer to Decimal Text ! ! The Convert Signed Integer to Decimal Text routine ! converts a signed integer to a decimal ASCII text string. This ! routine supports FORTRAN Iw and Iw.m output and BASIC output conversion. ! INTEGER*4 ots$cvt_l_ti EXTERNAL ots$cvt_l_ti ! OTS$CVT_L_TL ! ! Convert Integer to Logical Text ! ! The Convert Integer to Logical Text routine ! converts an integer to an ASCII text string representation ! using FORTRAN L (logical) format. ! INTEGER*4 ots$cvt_l_tl EXTERNAL ots$cvt_l_tl ! OTS$CVT_L_TO ! ! Convert Unsigned Integer to Octal Text ! ! The Convert Unsigned Integer to Octal Text routine ! converts an unsigned integer to an octal ASCII text string. ! OTS$CVT_L_TO supports FORTRAN Ow and Ow.m output conversion formats. ! INTEGER*4 ots$cvt_l_to EXTERNAL ots$cvt_l_to ! OTS$CVT_L_TU ! ! Convert Unsigned Integer to Decimal Text ! ! The Convert Unsigned Integer to Decimal Text routine ! converts a byte, word or longword value to unsigned decimal ! representation in an ASCII text string. By default, a longword is ! converted. ! INTEGER*4 ots$cvt_l_tu EXTERNAL ots$cvt_l_tu ! OTS$CVT_L_TZ ! ! Convert Integer to Hexadecimal Text ! ! The Convert Integer to Hexadecimal Text routine ! converts an unsigned integer to a hexadecimal ASCII text ! string. OTS$CVT_L_TZ supports FORTRAN Zw and Zw.m output conversion ! formats. ! INTEGER*4 ots$cvt_l_tz EXTERNAL ots$cvt_l_tz ! OTS$CVT_TB_L ! ! Convert Binary Text to Unsigned Integer ! ! The Convert Binary Text to Unsigned Integer routine ! converts an ASCII text string representation of an unsigned ! binary value to an unsigned integer value of arbitrary length. By default, ! the result is a longword. Valid input characters are the blank and the ! digits 0 and 1. No sign is permitted. ! INTEGER*4 ots$cvt_tb_l EXTERNAL ots$cvt_tb_l ! OTS$CVT_TI_L ! ! Convert Signed Integer Text to Integer ! ! The Convert Signed Integer Text to Integer routine ! converts an ASCII text string representation of a decimal ! number to a signed byte, word, or longword integer value. ! The result is a longword by ! default, but the calling program can specify a byte or a word value ! instead. ! INTEGER*4 ots$cvt_ti_l EXTERNAL ots$cvt_ti_l ! OTS$CVT_TL_L ! ! Convert Logical Text to Integer ! ! The Convert Logical Text to Integer routine ! converts an ASCII text string representation of a FORTRAN-77 L ! format to a byte, word, or longword integer value. The result is a longword by ! default, but the calling program can specify a byte or a word value ! instead. ! INTEGER*4 ots$cvt_tl_l EXTERNAL ots$cvt_tl_l ! OTS$CVT_TO_L ! ! Convert Octal Text to Signed Integer ! ! The Convert Octal Text to Signed Integer routine ! converts an ASCII text string representation of an ! octal value to an signed integer of an arbitrary length. The result is a ! longword by default, but the calling program can specify a byte, word, ! or longword. ! INTEGER*4 ots$cvt_to_l EXTERNAL ots$cvt_to_l ! OTS$CVT_TU_L ! ! Convert Unsigned Decimal Text to Integer ! ! The Convert Unsigned Decimal Text to Integer routine ! converts an ASCII text string representation of an unsigned ! decimal value to an unsigned byte, word, or longword value. By default, the ! result is a longword. Valid input characters are the space and the digits 0 ! through 9. No sign is permitted. ! INTEGER*4 ots$cvt_tu_l EXTERNAL ots$cvt_tu_l ! OTS$CVT_TZ_L ! ! Convert Hexadecimal Text to Unsigned Integer ! ! The Convert Hexadecimal Text to Unsigned Integer routine ! converts an ASCII text string representation of an unsigned ! hexadecimal value to an unsigned integer of an arbitrary length. ! The result is a longword by default, but the calling program can specify ! a byte, word, or longword ! value. ! INTEGER*4 ots$cvt_tz_l EXTERNAL ots$cvt_tz_l !DEC$ END OPTIONS