DTRHELP.HLB  —  Functions
       A DEC DATATRIEVE function is a word you define and add to the
       DEC DATATRIEVE language. By adding functions, you extend the
       capability of DEC DATATRIEVE to efficiently perform specific
       tasks. To learn how to define functions for DEC DATATRIEVE, see
       the DEC DATATRIEVE Guide to Programming and Customizing.

       The DEC DATATRIEVE installation kit provides some functions. You
       can use them to form value expressions or to set parameters for a
       process. These functions can be modified by users at your site.
       If they do not work as indicated in the examples, consult the
       person at your site responsible for DEC DATATRIEVE for a list of
       the functions currently available.

       DEC DATATRIEVE functions have the following format:

       function-name  [ (value-expression  [,...] ) ]

1  –  FN$ABS

       Calculates the absolute value of input.

1.1  –  Input

       A signed decimal number.

1.2  –  Output

       An unsigned decimal number of type G-floating.

1.3  –  Example

       DTR> PRINT FN$ABS (-128)

         FN$ABS

        1.2800E+02

       DTR>

2  –  FN$ATAN

       Calculates the arctangent of input.

2.1  –  Input

       A signed decimal number (radians).

2.2  –  Output

       A signed decimal number of type G-floating.

2.3  –  Example

       DTR> PRINT 4 * (FN$ATAN (1))
        3.1416E+00
       DTR>

3  –  FN$BIT_AND

       Returns the bitwise AND of two longwords.

3.1  –  Input

       This function takes two parameters as input. Two longwords,
       separated by a comma and enclosed in parentheses.

3.2  –  Output

       An integer number.

3.3  –  Example

       DTR> DECLARE OP1 PIC 99999999 LONG .;
       DTR> DECLARE OP2 PIC 99999999 LONG .;
       DTR> OP1 = 128+64+32 ;
       DTR> OP2 = 32+8+4+1 ;
       DTR> PRINT FN$BIT_AND(OP1,OP2);

         FN$BIT
          AND

                32

       DTR>

4  –  FN$BIT_EXTRACT

       Returns the bit field within a longword.

4.1  –  Input

       This function takes three parameters: the longword, the starting
       bit in the longword, and the length of the bit field in the
       longword. The three must be separated by a comma and enclosed
       in parentheses.

4.2  –  Output

       An integer number.

4.3  –  Example

       DTR> DECLARE SOURCE PIC 99999999 LONG .;
       DTR> DECLARE I LONG .;
       DTR> SOURCE = 7 ;
       DTR> I = 0;
       DTR> REPEAT 6
       CON>    BEGIN
       CON>    PRINT FN$BIT_EXTRACT(SOURCE,I,1);
       CON>    I = I+1;
       CON>    END

         FN$BIT
         EXTRACT

                 1
          1
          1
          0
          0
          0
       DTR>

5  –  FN$BIT_NOT

       Returns the bitwise complement of a longword.

5.1  –  Input

       A longword.

5.2  –  Output

       An integer number.

5.3  –  Example

       DTR> DECLARE OP1 PIC 99999999 LONG .;
       DTR> OP1 = 128+64+32 ;
       DTR> PRINT FN$BIT_NOT(OP1);

         FN$BIT
          NOT

              -225

       DTR>

6  –  FN$BIT_OR

       Returns the bitwise OR of two longwords.

6.1  –  Input

       This function takes two arguments: two longwords. The two must be
       separated by a comma and enclosed in parentheses.

6.2  –  Output

       An integer number.

6.3  –  Example

       DTR> DECLARE OP1 PIC 99999999 LONG .;
       DTR> DECLARE OP2 PIC 99999999 LONG .;
       DTR> OP1 = 128+64+32 ;
       DTR> OP2 = 32+8+4+1 ;
       DTR> PRINT FN$BIT_OR(OP1,OP2);

         FN$BIT
           OR

               237

       DTR>

7  –  FN$BIT_XOR

       Returns the bitwise exclusive OR of two longwords.

7.1  –  Input

       This function takes two arguments: two longwords. The two must be
       separated by a comma and enclosed in parentheses.

7.2  –  Output

       An integer number.

7.3  –  Example

       DTR> DECLARE OP1 PIC 99999999 LONG .;
       DTR> DECLARE OP2 PIC 99999999 LONG .;
       DTR> OP1 = 128+64+32 ;
       DTR> OP2 = 32+8+4+1 ;
       DTR> PRINT FN$BIT_XOR(OP1,OP2);

         FN$BIT
          XOR

               205

       DTR>

8  –  FN$COMMAND_KEYBOARD

       Returns the current value of the COMMAND_KEYBOARD field in the
       data access block (DAB). COMMAND_KEYBOARD is the keyboard used
       for command input.

       This function allows you to add other functions that access the
       features of the Screen Management Guidelines (SMG) of the Screen
       Management facility.

       This function is not available in a DECwindows Motif environment.

8.1  –  Input

       None.

8.2  –  Output

       A longword value of the COMMAND_KEYBOARD field.

8.3  –  Example

       DTR> DECLARE COMMAND_KEYBOARD LONG.
       DTR> COMMAND_KEYBOARD = FN$COMMAND_KEYBOARD

9  –  FN$COS

       Calculates the cosine of input.

9.1  –  Input

       A signed decimal number (radians).

9.2  –  Output

       A signed decimal number of type G-floating.

9.3  –  Example

       DTR> PRINT FN$COS (3.14159) using s9.999

       FN$COS

       -1.000

       DTR>

10  –  FN$CREATE_LOG

       Assigns a user mode logical name within the process logical
       name table as a synonym for a physical name. The logical name
       is deleted when you exit from DEC DATATRIEVE.

10.1  –  Input

       This function takes two parameters as input. The first is a
       logical name character string; the second is a physical name
       character string. Each string must be in quotation marks (unless
       you use variables previously declared). The two strings must be
       separated by a comma and enclosed in parentheses.

10.2  –  Output

       None.

10.3  –  Example

       DTR> FN$CREATE_LOG ("HANK", "DB0:[MORRISON.RW]LOG.RNO")
       DTR>

10.4  –  Usage Note

       Logical names are defined at execution time (runtime) and not
       during the compilation phase. If you define a logical name
       within a statement, the logical name is not translated during
       the compilation phase, consequently it is executed without being
       defined, which will lead to an error.

       DTR> READY YACHTS
       DTR> BEGIN
       [Looking for statement]
       CON> FN$CREATE_LOG("FORM_DIR","DTR$LIBRARY:FORMS");
       CON> FOR X IN YACHTS
       [Looking for statement]
       CON> WITH_FORM YACHT IN FORM_DIR
       [Looking for SEND or RECEIVE statement]
       CON> SEND FROM X TO BOAT;
       CON> END
       Error opening DECforms form file DISK:[DALFY]FORM_DIR.EXE; .

11  –  FN$DATE

       Converts a date string to a 64-bit data value.

11.1  –  Input

       A complete date string formatted as "dd-MMM-yyyy hh:mm:ss.cc".
       Unpredictable results may occur if you supply only a portion of a
       date string, such as "21-MAR-1990". The month must be specified
       in uppercase.

11.2  –  Output

       A date data value formatted as "dd-MMM-yyyy hh:mm:ss.cc".

11.3  –  Example

       DTR> DECLARE X USAGE DATE EDIT_STRING X(23).
       DTR> X = FN$DATE("30-AUG-1990 15:20:31.45")
       DTR> PRINT X

                   X

       30-Aug-1990 15:20:31.45

       DTR>

       DTR> DECLARE Y USAGE DATE EDIT_STRING X(23).
       DTR> DECLARE Z PIC X(23).
       DTR> Z = "20-FEB-1990 14:54:29.83"
       DTR> Y = FN$DATE (Z)
       DTR> PRINT Y

                   Y

       20-Feb-1990 14:54:29.83

       DTR>

12  –  FN$DAY

       Extracts the day part of input (dd in dd-MMM-yyyy hh:mm:ss.cc).

12.1  –  Input

       A date.

12.2  –  Output

       An unsigned integer from 1 to 31.

12.3  –  Example

       DTR> DECLARE CAL USAGE DATE EDIT_STRING X(23).
       DTR> CAL = "NOW"; PRINT CAL

                 CAL

        1-Feb-1990 08:51:11.55

       DTR> PRINT FN$DAY (CAL)

         FN$DAY

                 1

       DTR>

13  –  FN$DBKEY_LENGTH

       Returns the byte length of dbkeys for the relational domain or
       table specified as argument.

13.1  –  Input

       A string expression providing the name of the domain or table.
       The string expression must be placed inside quotation marks, and
       enclosed in parentheses.

13.2  –  Output

       The byte length of the dbkey. An error message is returned if the
       domain is unknown, or if the domain is not a relational one.

13.3  –  Example

       It is useful for example as an argument to the FN$STR_EXTRACT
       function, which extracts a substring from the input character
       string using a default edit string of 30 characters. In the
       following example FN$STR_EXTRACT extracts a substring from the
       100-character long field D. D is the variable, 1 is the starting
       character, and FN$DBKEY_LENGTH is the length of the desired
       substring:

       DTR> DECLARE D PIC X(100).;
       DTR> VAR = 1234567890
       DTR> PRINT FN$DBKEY_LENGTH("NULLS_1")

        FN$DBKEY
         LENGTH

                8

       DTR> PRINT FN$STR_EXTRACT (D,1,FN$DBKEY_LENGTH("NULLS_1"))

                  FN$STR
                  EXTRACT

       12345678

13.4  –  Usage Note

       This function has been implemented for Oracle Rdb dbkeys only.

14  –  FN$DCL

       Allows you to spawn directly from your main DEC DATATRIEVE
       process to execute a specified DCL command.

14.1  –  Input

       Type FN$DCL at the DEC DATATRIEVE prompt. On the same line,
       specify the DCL command argument you want to spawn to, such as
       the DCL print command. The DCL command argument can be any DCL
       command and must be placed inside quotation marks (unless you use
       variables previously declared), and enclosed in parentheses.

14.2  –  Output

       Your DEC DATATRIEVE process is suspended and the terminal is
       attached to the subprocess. The DCL command is executed.

14.3  –  Examples

       DTR> FN$DCL ("PRINT REPORTACCOUNTS.RPT")
       Job REPORTACCOUNTS (queue SYSTEMPRINT$QUEUE, entry 148)
       started on PRINTER$LPA0
       DTR>

       In the above example the message appears indicating that the
       job has been added to the print queue. After the command has
       completed or you have exited from the program initiated by the
       command, you see the DTR> prompt. This shows that control has
       been returned to the original process in DEC DATATRIEVE.

       The following example shows how you can use variables with
       FN$DCL:

       DTR> DECLARE ALP PIC X(30).
       DTR> ALP = "DIR/COL=1"
       DTR> FN$DCL (ALP)

       Directory MY$DISK:[DALFY]

       TEST.OBJ;1
       ZTEST.FOR;3

       Note that the FN$DCL process inherits attributes from the caller
       (that is, the main DEC DATATRIEVE process from which it spawned).
       Refer to the OpenVMS documentation on OpenVMS Run-Time Library
       routines for more information.

15  –  FN$DEFINE_KEY

       Takes a key definition in DCL DEFINE/KEY syntax, then creates the
       defined key in DEC DATATRIEVE.

       This function is not available in a DECwindows Motif environment.

15.1  –  Input

       A quoted string containing the key definition in DCL DEFINE/KEY
       command syntax.

       You must use single quotation marks for the outer pair of
       quotation marks. The inner pair of quotation marks must be
       double.

15.2  –  Output

       None.

15.3  –  Example

       DTR> FN$KEYPAD_MODE ("APPLICATION")
       DTR> FN$DEFINE_KEY ('DEFINE/KEY/ECHO/NOTERMINATE KP7 "FIND" ')

15.4  –  Usage Note

       The previous example will not work unless the device is set
       to APPLICATION. DEC DATATRIEVE ignores the the terminal
       characteristics of your device, for this reason you must execute
       the FN$KEYPAD_MODE function before executing the FN$DEFINE_KEY
       function.

16  –  FN$DELETE_KEY

       Deletes a key definition currently in effect.

       This function is not available in a DECwindows Motif environment.

16.1  –  Input

       This function takes two parameters.

       o  The first parameter is the name of the key whose definition
          you want to delete.

       o  The second parameter is the state string. You must specify the
          state name DEFAULT when there is no alternate state.

       Each parameter must be in matching quotation marks. The two
       parameters must be separated by a comma and enclosed in
       parentheses.

16.2  –  Output

       None.

16.3  –  Example

       DTR> FN$DELETE_KEY ("KP0","DEFAULT")
       DTR> FN$DELETE_KEY ("KP0","GOLD")

17  –  FN$DELETE_LOG

       Deletes the assignment of a logical name.

17.1  –  Input

       The logical name you want to delete.

17.2  –  Output

       None.

17.3  –  Example

       DTR> FN$DELETE_LOG ("HANK")
       DTR> PRINT FN$TRANS_LOG ("HANK") USING X(30)

                 FN$TRANS
                   LOG

       DTR>

18  –  FN$DELETE_LOGICAL

       Deletes a supervisor-mode process logical name.

18.1  –  Input

       This function takes two parameters as input. The first is the
       logical name to be deleted; the second is the name of the table
       from which the logical name is to be deleted. The two must be
       separated by a comma and enclosed in parentheses.

18.2  –  Output

       None.

18.3  –  Example

       DTR> FN$DELETE_LOGICAL("MY_LOGICAL", "LNM$PROCESS");
       DTR> FN$DCL("SHOW LOGICAL MY_LOGICAL");
       %SHOW-S-NOTRAN, no translation for logical name MY_LOGICAL
       DTR>

19  –  FN$DELETE_SYMBOL

       Deletes a CLI symbol.

19.1  –  Input

       The name of the symbol to be deleted.

19.2  –  Output

       None.

19.3  –  Example

       DTR> FN$DELETE_SYMBOL("MY_SYMBOL");
       DTR> FN$DCL("SHOW SYMBOL MY_SYMBOL") ;
       %DCL-W-UNDSYM, undefined symbol - check validity and spelling
       DTR>

20  –  FN$DISABLE_DECFORMS

       Disables DECforms from managing forms.

20.1  –  Input

       None. The function has no arguments.

20.2  –  Output

       None.

20.3  –  Example

       DTR> SET DICTIONARY CDD$TOP.DTR$LIB.FORMS ;
       DTR> YACHTS uses an FMS/TDMS form, YACHTS_F uses a DECforms form
       DTR> SHOW YACHTS, YACHTS_F

 DOMAIN YACHTS USING CDD$TOP.DTR$LIB.DEMO.YACHT ON YACHT.DAT
     FORM IS YACHT IN DTR$LIBRARY:FORMS
 ;
 DOMAIN YACHTS_F
 USING CDD$TOP.DTR$LIB.DEMO.YACHT ON YACHT.DAT
 FORM IS YACHTS IN DTR$LIBRARY:YACHT.FORM ;

      DTR> FN$DISABLE_DECFORMS ;
      DTR> READY YACHTS ;
      DTR> SHOW FORMS ;

 Loaded forms:
     Form YACHT in SYS$COMMON:[DTR]FORMS.FLB; ( FMS )

     DTR> FN$ENABLE_DECFORMS ;
     DTR> READY YACHTS_F ;
     DTR> SHOW FORMS ;

 Loaded forms:
     Form YACHTS in SYS$COMMON:[DTR]YACHT.FORM; ( DECforms )

     Form YACHT in SYS$COMMON:[DTR]FORMS.FLB;  ( FMS )

21  –  FN$ENABLE_DECFORMS

       Enables DECforms to manage forms.

21.1  –  Input

       None. The function has no arguments.

21.2  –  Output

       None.

21.3  –  Example

       See the example for function FN$DISABLE_DECFORMS.

22  –  FN$EXP

       Calculates the value of e to a specified power.

22.1  –  Input

       A signed decimal number.

22.2  –  Output

       A signed decimal number of type G-floating.

22.3  –  Example

       DTR> PRINT FN$EXP (2)

                 FN$EXP

        7.3891E+00

       DTR>

23  –  FN$FLOOR

       Truncates the decimal part of positive input or rounds negative
       input.

23.1  –  Input

       A signed decimal number.

23.2  –  Output

       A signed decimal number of type G-floating.

23.3  –  Example

       DTR> PRINT FN$FLOOR (59.99)

         FN$FLOOR

        5.9000E+01

       DTR> PRINT FN$FLOOR (-59.99)

         FN$FLOOR

        -6.0000E+01

24  –  FN$FORMAT_DBKEY

       Returns a character string containing the dbkey of the readied
       relational domain, table, or view.

24.1  –  Input

       A string containing the dbkey in its binary format.

24.2  –  Output

       The character string of the dbkey. This function assumes that the
       dbkey is internally structured as an array of elementary dbkeys
       and that each elementary dbkey is 8 bytes long.

24.3  –  Example

       In the following example the variable VAR prints the dbkey of
       each record in the relational view C in their string format. The
       length of the dbkeys in this view is 16 bytes (8 bytes by the
       number of tables in the view).

       DTR> DECLARE VAR PIC X(80).;
       DTR> FOR C BEGIN
       CON> VAR = FN$LASTREC_DBKEY("C");
       CON> PRINT -
       CON> FN$FORMAT_DBKEY(FN$STR_EXTRACT(VAR,1,FN$DBKEY_LENGTH("C")))
       CON> END;

                 FN$FORMAT
                   DBKEY

       39:512:0 40:518:0
       39:512:1 40:518:0
       39:512:2 40:518:0
       39:512:3 40:518:0
       DTR>

24.4  –  Usage Note

       This function has been implemented for Oracle Rdb dbkeys only.

25  –  FN$GET_SYMBOL

       Returns the value of a DCL symbol.

25.1  –  Input

       A character string that represents the symbol name.

25.2  –  Output

       The value of a DCL symbol.

25.3  –  Example

       DTR> PRINT FN$GET_SYMBOL("DTR$INVOKE") USING X(45)

                          FN$GET
                          SYMBOL

       RUN DTR$DISK:[DTR.TESTS]DTRV4.EXE

       DTR>

26  –  FN$HEX

       Calculates the hexadecimal equivalent of input.

26.1  –  Input

       A signed integer no larger than (2 ** 31) -1 (the maximum value
       that can be stored in a signed longword).

26.2  –  Output

       A hexadecimal character string.

26.3  –  Example

       DTR> PRINT FN$HEX(183)

        FN$HEX

             B7

       DTR>

27  –  FN$HEX_TO_DEC

       Calculates the integer equivalent of a hexadecimal value.

27.1  –  Input

       A string expression containing the hexadecimal character string.
       The string expression must be placed inside quotation marks, and
       enclosed in parentheses.

27.2  –  Output

       A longword integer equivalent to the hexadecimal value.

27.3  –  Examples

       The following example returns the integer equivalent to the
       hexadecimal value FF.

       DTR> PRINT FN$HEX_TO_DEC ("FF")

         FN$HEX
           TO
          DEC

               255

       DTR>

       The following example shows how the FN$HEX_TO_DEC function can be
       used to calculate the numeric value of the address of the first
       free page at the end of the program region of the process.

       DTR> PRINT FN$HEX_TO_DEC (FN$PROCESS_INFO ("FREP0VA" VIA -
       CON> JPI_CODES))

         FN$HEX
           TO
          DEC

           7991296

       DTR>

28  –  FN$HOUR

       Extracts the hour part of input (hh in dd-MMM-yyyy hh:mm:ss.cc).

28.1  –  Input

       A date.

28.2  –  Output

       An unsigned integer from 1 to 24.

28.3  –  Example

       DTR> DECLARE CAL USAGE DATE EDIT_STRING X(23).
       DTR> CAL = "NOW"; PRINT CAL

                  CAL

        1-Feb-1990 08:51:11.55

       DTR> PRINT FN$HOUR (CAL)

         FN$HOUR

                    8

       DTR>

29  –  FN$HUNDREDTH

       Extracts hundredth-of-a-second part of input (cc in dd-MMM-yyyy
       hh:mm:ss.cc).

29.1  –  Input

       A date.

29.2  –  Output

       An unsigned integer from 0 to 99.

29.3  –  Example

       DTR> DECLARE CAL USAGE DATE EDIT_STRING X(23).
       DTR> CAL = "NOW"; PRINT CAL

                  CAL

        1-Feb-1990 08:51:11.55

       DTR> PRINT FN$HUNDREDTH (CAL)

         FN$HUNDREDTH

                  55

       DTR>

30  –  FN$ICHAR

       It converts the first character of a string to an 8-bit ASCII
       integer extended to a longword.

30.1  –  Input

       The string expression.

30.2  –  Output

       The 8-bit ASCII integer.

30.3  –  Example

       DTR> DECLARE VAR PIC X(80) .;
       DTR> DECLARE CH PIC X . ;
       DTR> DECLARE I INTEGER .;
       DTR> VAR = "GRZ-ALE" ;
       DTR> i = 1 ;
       DTR> REPEAT FN$STR_LENGTH( VAR || "" )
       CON>         BEGIN
       CON>         CH = FN$STR_EXTRACT(VAR, i, 1 );
       CON>         PRINT CH("CHARACTER"), FN$ICHAR(CH)("CODE");
       CON>         I = I+1 ;
       CON>         END ;

       CHARACTER    CODE

           G              71
           R              82
           Z              90
           -              45
           A              65
           L              76
           E              69

       DTR>

31  –  FN$INIT_TIMER

       Initializes a timer and counter.

31.1  –  Input

       None.

31.2  –  Output

       None.

31.3  –  Example

       DTR> SHOW TIME_READY
       PROCEDURE TIME_READY
       FN$INIT_TIMER
       READY OWNERS
       FN$SHOW_TIMER
       END_PROCEDURE

       DTR> :TIME_READY

       ELAPSED: 0 00:00:04.24 CPU: 0:00:00.61 BUFIO: 1 DIRIO: 42
                                                            FAULTS: 64

       DTR>

32  –  FN$JULIAN

       Calculates the Julian date of input.

       (A Julian date is based on days of the year being numbered
       beginning with January 1st. The Julian date of January 6th is
       6. The Julian date of February 2nd is 33, and so on.)

32.1  –  Input

       A date.

32.2  –  Output

       An unsigned integer from 1 to 366. (There are 366 days in a leap
       year.)

32.3  –  Example

       DTR> DECLARE CAL USAGE DATE EDIT_STRING X(23).
       DTR> CAL = "NOW"; PRINT CAL

                  CAL

        1-Feb-1990 08:51:11.55
       DTR> PRINT FN$JULIAN (CAL)

         FN$JULIAN

                 32

       DTR>

33  –  FN$KEYPAD_MODE

       Lets you specify the terminal mode from within DEC DATATRIEVE.

       This function duplicates the ability of the SET [NO] APPLICATION_
       KEYPAD command. The function form of FN$KEYPAD_MODE, however,
       allows you to change the keypad mode inside compound statements.

       This function is not available in a DECwindows Motif environment.

33.1  –  Input

       You must specify one of two parameters:

       o  APPLICATION specifies application keypad mode.

       o  NUMERIC specifies numeric keypad mode.

       This function is not case sensitive; you can type APPLICATION or
       NUMERIC in either uppercase or lowercase. The words must be in
       either single or double quotation marks, and the spelling must be
       exact.

33.2  –  Output

       None.

33.3  –  Example

       DTR> FN$KEYPAD_MODE ("APPLICATION")
       DTR> FN$KEYPAD_MODE ("NUMERIC")

34  –  FN$KEYTABLE_ID

       Returns the value of the KEYTABLE_ID field currently in the data
       access block (DAB).

       FN$KEYTABLE_ID allows you to add other functions that access
       other capabilities of the Screen Management Guidelines (SMG) of
       the Screen Management facility.

       This function is not available in a DECwindows Motif environment.

34.1  –  Input

       None.

34.2  –  Output

       A longword value of the KEYTABLE_ID field.

34.3  –  Example

       DTR> DECLARE KEYTABLE LONG.
       DTR> KEYTABLE = FN$KEYTABLE_ID

35  –  FN$LASTREC_DBKEY

       Returns the dbkey of the last record read in a currently readied
       relational domain or table.

35.1  –  Input

       A string expression providing the name of the domain or table.

35.2  –  Output

       The record dbkey as a byte string.

35.3  –  Example

       In the following example the FN$FORMAT_DBKEY function returns the
       dbkey of the last record read from CITY_CODE_TABLE in its string
       format.

       DTR> PRINT FN$FORMAT_DBKEY(FN$LASTREC_DBKEY("CITY_CODE_TABLE"))
                  FN$FORMAT
                        DBKEY

       11:149:26
       DTR>

36  –  FN$LN

       Calculates the natural log of input.

36.1  –  Input

       A signed number.

36.2  –  Output

       A signed number of type G-floating.

36.3  –  Example

       DTR> PRINT FN$LN (36)

         FN$LN

        3.5835E+00

       DTR>

37  –  FN$LOAD_KEYDEFS

       Lets you define multiple keypad keys from a file containing DCL
       DEFINE/KEY commands. This way you do not have to make multiple
       calls to the FN$DEFINE_KEY function.

       This function is not available in a DECwindows Motif environment.

37.1  –  Input

       A quoted string with a DCL file specification indicating the file
       containing the DCL DEFINE/KEY commands.

37.2  –  Output

       None.

37.3  –  Example

       DTR> FN$LOAD_KEYDEFS ("APPL1.KEYS")

38  –  FN$LOG10

       Calculates the base 10 log of input.

38.1  –  Input

       A signed number.

38.2  –  Output

       A signed number of type G-floating.

38.3  –  Example

       DTR> PRINT FN$LOG10 (36)

         FN$LOG10

        1.5563E+00

       DTR>

39  –  FN$MINUTE

       Extracts the minute part of input (mm in dd-MMM-yyyy
       hh:mm:ss.cc).

39.1  –  Input

       A date.

39.2  –  Output

       An unsigned integer from 0 to 59.

39.3  –  Example

       DTR> DECLARE CAL USAGE DATE EDIT_STRING X(23).
       DTR> CAL = "NOW"; PRINT CAL

                  CAL

        1-Feb-1990 08:51:11.55

       DTR> PRINT FN$MINUTE (CAL)

         FN$MINUTE

                 51

       DTR>

40  –  FN$MOD

       Calculates the value of input according to a specified modulus,
       using double precision floating values.

40.1  –  Input

       This function takes two parameters: a signed number and a
       modulus. The two must be separated by a comma and enclosed in
       parentheses.

40.2  –  Output

       A real number of type G-floating.

40.3  –  Example

       DTR> PRINT FN$MOD (31,7)

         FN$MOD

        3.0000E+00

       DTR>

41  –  FN$MODI

       Calculates the value of input according to a specified modulus,
       using integer values.

41.1  –  Input

       This function takes two parameters: a signed number and a
       modulus. The two must be separated by a comma and enclosed in
       parentheses.

41.2  –  Output

       An integer number.

41.3  –  Example

       DTR> PRINT FN$MODI(13,4);

         FN$MODI

                     1

       DTR> PRINT FN$MODI(-13,4);

         FN$MODI

                   -1

       DTR>

42  –  FN$MONTH

       Extracts the month part of input (MMM in dd-MMM-yyyy
       hh:mm:ss.cc).

42.1  –  Input

       A date.

42.2  –  Output

       An unsigned integer from 1 to 12.

42.3  –  Example

       DTR> DECLARE CAL USAGE DATE EDIT_STRING X(23).
       DTR> CAL = "NOW"; PRINT CAL

                 CAL

        1-Feb-1990 08:51:11.55

       DTR> PRINT FN$MONTH (CAL)

         FN$MONTH

                   2

       DTR>

43  –  FN$NINT

       Calculates the integer nearest to input.

43.1  –  Input

       A signed number.

43.2  –  Output

       A signed longword.

43.3  –  Example

       DTR> PRINT FN$NINT (59.99)

         FN$NINT

                60

       DTR>

44  –  FN$OPENS_LEFT

       Calculates the number of additional files you can open.

44.1  –  Input

       None.

44.2  –  Output

       An signed longword.

44.3  –  Example

       DTR> PRINT FN$OPENS_LEFT

         FN$OPENS
           LEFT

                  3

       DTR>

45  –  FN$PROCESS_INFO

       Returns information on the current process.

45.1  –  Input

       An integer value specifying the item of information that the
       FN$PROCESS_INFO function is to return; the integer value is one
       of the values used by the $GETJPI system service.

       DEC DATATRIEVE supplies a table associating symbolic strings to
       values of the $GETJPI system service. The table is called JPI_
       CODES, located in CDD$TOP.DTR$LIB. If you use the JPI_CODES table
       with this function, the syntax is:

       FN$PROCESS_INFO ("symbolic-string" VIA CDD$TOP.DTR$LIB.JPI_CODES)

       Where symbolic-string is a text string defined in JPI_CODES. The
       text string must be placed inside quotation marks.

       For a complete description of the item codes, see the $GETJPI
       service documented in the OpenVMS System Services Reference
       Manual.

45.2  –  Output

       A text string containing the information requested by the item-
       code.

45.3  –  Examples

       The following examples shows how the FN$PROCESS_INFO function
       returns information about the username; the first example uses an
       integer value, the second example uses the JPI_CODES table.

       DTR> PRINT FN$PROCESS_INFO (514)

                 FN$PROCESS
                    INFO

       DALFY

       DTR>
       DTR> PRINT -
       CON> FN$PROCESS_INFO ("USERNAME" VIA CDD$TOP.DTR$LIB.JPI_CODES)

                 FN$PROCESS
                    INFO

       DALFY

       DTR>

46  –  FN$PROMPT_KEYBOARD

       Returns the value of the PROMPT_KEYBOARD field currently in the
       data access block (DAB). PROMPT_KEYBOARD is the keyboard ID used
       for prompting.

       FN$PROMPT_KEYBOARD allows you to add other functions that access
       other capabilities of the Screen Management Guidelines (SMG) of
       the Screen Management facility.

       This function is not available in a DECwindows Motif environment.

46.1  –  Input

       None.

46.2  –  Output

       A longword value of the PROMPT_KEYBOARD field.

46.3  –  Example

       DTR> DECLARE PROMPT_KEYBOARD LONG.
       DTR> PROMPT_KEYBOARD = FN$PROMPT_KEYBOARD

47  –  FN$SECOND

       Extracts the second part of input (ss in dd-MMM-yyyy
       hh:mm:ss.cc).

47.1  –  Input

       A date.

47.2  –  Output

       An unsigned integer from 0 to 59.

47.3  –  Example

       DTR> DECLARE CAL USAGE DATE EDIT_STRING X(23).
       DTR> CAL = "NOW"; PRINT CAL

                 CAL

        1-Feb-1990 08:51:11.55

       DTR> PRINT FN$SECOND (CAL)

         FN$SECOND

                 11

       DTR>

48  –  FN$SETDEF

       Allows you to change the default disk directory for the process.

48.1  –  Input

       A string expression containing the new default disk directory.
       The string expression must be placed inside quotation marks, and
       enclosed in parentheses.

48.2  –  Output

       None.

48.3  –  Example

       The following example shows how to change the default directory
       from within your DEC DATATRIEVE process and how to restore the
       old default directory to its original status before exiting DEC
       DATATRIEVE.

       $ SHOW DEFAULT
         DISK:[SMITH]
       DTR> DECLARE OLDDIR PIC X(80).
       DTR> OLDDIR = FN$SHOWDEF
       DTR> PRINT OLDDIR

                             OLDDIR

       [SMITH]
       DTR> FN$SETDEF ("[SMITH.WORK]")
       DTR> PRINT FN$SHOWDEF

                 FN$SHOWDEF

       [SMITH.WORK]
       DTR>
                    .
                    .
                    .
       DTR> FN$SETDEF (OLDDIR)
       DTR> PRINT FN$SHOWDEF

                 FN$SHOWDEF

       [SMITH]
       DTR> EXIT
       $ SHOW DEFAULT
         DISK:[SMITH]
       $

49  –  FN$SETDEFPROT

       Allows you to change the default file protection for the process.

49.1  –  Input

       A string expression containing the new default file protection
       specification. The format is the standard OpenVMS format
       (e.g. "SYSTEM:RWED,OWNER:RWED,GROUP:R,WORLD:R"). The string
       expression must be placed inside quotation marks, and enclosed
       in parentheses.

49.2  –  Output

       None.

49.3  –  Example

       The following example shows how to change the default file
       protection from within your DEC DATATRIEVE process and how to
       restore the old default file protection to its original status
       before exiting DEC DATATRIEVE.

       DTR> PRINT FORMAT FN$SHOWDEFPROT USING X(80)
       SYSTEM:RWED,OWNER:RWED,GROUP:RWED,WORLD:

       DTR> DECLARE OLDPROT PIC X(80).
       DTR> OLDPROT = FN$SHOWDEFPROT
       DTR> PRINT OLDPROT

                                           OLDPROT

       SYSTEM:RWED,OWNER:RWED,GROUP:RWED,WORLD:
       DTR> FN$SETDEFPROT ("S:RWED,O:RWED")
       DTR> PRINT FORMAT FN$SHOWDEFPROT USING X(80)
       SYSTEM:RWED,OWNER:RWED,GROUP:,WORLD:

       DTR> DEFINE DOMAIN H USING H_REC ON H.DAT;
       DTR> DEFINE RECORD H_REC USING
       DFN> 01 H_REC.
       DFN> 03 F1 PIC X(7).
       DFN> 03 F2 PIC X(10). ;
       DTR> DEFINE FILE FOR H;
       DTR> FN$DCL ("DIR/PROT *.DAT")

       Directory DISK:[DALFY.NEWUSER]

       EMPLOYEES.DAT;1      10-FEB-1993 11:06:03.39  (RWED,RWED,RWED,)
       FAMILY.DAT;108       25-MAR-1992 21:44:53.30  (RWED,RWED,RWED,)
       FAMS.DAT;1            6-AUG-1992 15:33:51.24  (RWED,RWED,RWED,)
       H.DAT;1              24-MAR-1993 09:47:39.31  (RWED,RWED,,)

       Total of 4 files.
       DTR> FN$SETDEFPROT (OLDPROT)
       DTR> PRINT FORMAT FN$SHOWDEFPROT USING X(80)

       SYSTEM:RWED,OWNER:RWED,GROUP:RWED,WORLD:

       DTR> EXIT
       $ SHOW PROTECTION
         SYSTEM=RWED, OWNER=RWED, GROUP=RWED, WORLD=NO ACCESS
       $

50  –  FN$SET_FORM_TABLE_ADDR

       Notifies the DATATRIEVE interpreter that the DECforms forms to
       be used are linked with the application rather than being stored
       in external files (default case) and provides an address to get them.
       Alternatively, it can reset the default case.
       It is relevant only for applications calling the DATATRIEVE API.

       Syntax:

       FN$SET_FORM_TABLE_ADDR (form_table_addr, enable_flag).

50.1  –  Input

       This function takes two parameters as input.
       The first one (form_table_addr) is the address of
       FORMS$AR_FORM_TABLE,
       if linked forms are to be used (enable_flag is 1 ).
       The second one (enable_form) must be 1, if form files are to be
       ignored and linked forms (via FORMS$AR_FORM_TABLE) are to be used.
       It must be 0, if form files are to be used (default case).

50.2  –  Output

       None.

50.3  –  Example

       (C code)

       ....
         {
         #pragma nostandard
         globalref unsigned long FORMS$AR_FORM_TABLE ;
         #pragma standard

         unsigned long  *ar_form_table_ptr ;
         char    com[80];

         ar_form_table_ptr = &FORMS$AR_FORM_TABLE ;

        /* DECforms Forms linked with the application must be used */

         sprintf(com, "FN$SET_FORM_TABLE_ADDR(%1d,%1d)",
                                                 ar_form_table_ptr, 1 ) ;
         tdesc.dsc$a_pointer = com ;
         tdesc.dsc$w_length = strlen(com) ;

         status = dtr$command(&dab, &tdesc );
         }

51  –  FN$SET_LOGICAL

       Defines or redefines a supervisor-mode process logical name.

51.1  –  Input

       This function takes three parameters as input. The first is the
       logical name to be defined or redefined; the second is the value
       to be given to the logical name; the third is the name of the
       table in which to create the logical name.

51.2  –  Output

       None.

51.3  –  Example

       DTR> FN$SET_LOGICAL("MY_LOGICAL","ITS_EQUIVALENT","LNM$PROCESS");
       DTR> PRINT FN$TRANS_LOG("MY_LOGICAL");

                  FN$TRANS
                    LOG

       ITS_EQUIVALENT

       DTR>

52  –  FN$SET_SYMBOL

       Defines or redefines a CLI (Command Language Interpreter) symbol.

52.1  –  Input

       This function takes two parameters as input. The first is the
       symbol name; the second is the value to be given to the symbol.

52.2  –  Output

       None.

52.3  –  Example

       DTR> FN$SET_SYMBOL("MY_SYMBOL","ITS_VALUE")
       DTR> PRINT FN$GET_SYMBOL("MY_SYMBOL");

                   FN$GET
                   SYMBOL

       ITS_VALUE

       DTR>

53  –  FN$SHOW_KEY

       Displays the definition of a keypad key.

       This function is not available in a DECwindows Motif environment.

53.1  –  Input

       This function takes two parameters:

       o  The first parameter specifies the keypad key name.

       o  The second parameter is the state string. You must specify the
          state name DEFAULT when there is no alternate state.

       Each parameter must be in matching quotation marks. The two
       quoted parameters must be separated by a comma and enclosed in
       parentheses.

53.2  –  Output

       The definition of the specified key.

53.3  –  Example

       DTR> FN$SHOW_KEY ("KP7","DEFAULT")

          KP7 = "SHOW ALL"
              (echo,terminate,noerase,nolock)

54  –  FN$SHOW_KEYDEFS

       Displays the key definitions in all of the states. This function
       duplicates the ability of the DEC DATATRIEVE SHOW KEYDEFS
       command.

       The function form of FN$SHOW_KEYDEFS lets you show all keypad
       definitions inside compound statements.

       This function is not available in a DECwindows Motif environment.

54.1  –  Input

       None.

54.2  –  Output

       The definitions of all the defined keys.

54.3  –  Example

       DTR> FN$SHOW_KEYDEFS

       BLUE state keypad definitions:
           KP1 = "SHOW KEYDEFS"
               (noecho,terminate,noerase,nolock)
       DEFAULT state keypad definitions:
           PF1 = " "
               (echo,noterminate,noerase,nolock,set_state=GOLD)
           PF4 = " "
               (echo,noterminate,noerase,nolock,set_state=BLUE)
           KP0 = "SHOW KEYDEFS"
               (echo,terminate,noerase,nolock)
           KP1 = "READY "
               (echo,noterminate,noerase,nolock)
           KP7 = "SHOW ALL"
               (echo,terminate,noerase,nolock)
           KP8 = "SHOW DOMAINS"
               (echo,terminate,noerase,nolock)
           KP9 = "SHOW RECORDS"
               (echo,terminate,noerase,nolock)
           ENTER = "SET APPLICATION_KEYPAD"
               (echo,terminate,noerase,nolock)
       GOLD state keypad definitions:
           ENTER = "SET NO APPLICATION_KEYPAD"
               (echo,terminate,noerase,nolock)
           KP1 = "SHOW KEYDEFS"
               (noecho,terminate,noerase,nolock)

55  –  FN$SHOW_TIMER

       Shows elapsed time since the timer was last initialized.

       Note that DEC DATATRIEVE does not include the information
       displayed by FN$SHOW_TIMER in a log file created with the OPEN
       command.

55.1  –  Input

       None.

55.2  –  Output

       Displays the elapsed time in this format:

       D HH:MM:SS.SS

55.3  –  Example

       DTR> SHOW TIME_READY
       PROCEDURE TIME_READY
       FN$INIT_TIMER
       READY OWNERS
       FN$SHOW_TIMER
       END_PROCEDURE

       DTR> :TIME_READY
       ELAPSED: 0 00:00:04.24 CPU: 0:00:00.61 BUFIO: 1 DIRIO: 42
                                                            FAULTS: 64

       DTR>

       At the end of a 24-hour period, the timer begins displaying
       time in the number of days rather than the accumulated number
       of hours.

56  –  FN$SHOWDEF

       Displays the current disk directory for the process.

56.1  –  Input

       None.

56.2  –  Output

       A text string containing the name of the current disk directory.

56.3  –  Example

       The following example shows how to display the current working
       directory from DEC DATATRIEVE.

       $ SHOW DEFAULT
         DISK:[SMITH.WORK]
       $ DATATRIEVE
       DTR> PRINT FN$SHOWDEF USING X(80)

                                           FN$SHOWDEF

       [SMITH.WORK]
       DTR>

57  –  FN$SHOWDEFPROT

       Displays the current file protection for the process.

57.1  –  Input

       None.

57.2  –  Output

       A text string containing the current default file protection.

57.3  –  Example

       The following example shows how to display the current default
       file protection.

       DTR> PRINT FN$SHOWDEFPROT USING X(80)

                                        FN$SHOWDEFPROT

       SYSTEM:RWED,OWNER:RWED,GROUP:RWED,WORLD:
       DTR>

58  –  FN$SIGN

       Indicates the sign of a number.

58.1  –  Input

       A signed number.

58.2  –  Output

       1, -1, or 0 (depending on the sign of the number).

58.3  –  Example

       DTR> PRINT FN$SIGN (-4)

         FN$SIGN

                 -1

       DTR>

59  –  FN$SIN

       Calculates the sine of input.

59.1  –  Input

       A signed decimal number (radians).

59.2  –  Output

       A signed decimal number of type G-floating.

59.3  –  Example

       DTR> PRINT FN$SIN (3.14159/2)

       FN$SIN

       1.000

       DTR>

60  –  FN$SPAWN

       Creates a subprocess by calling the OpenVMS Run-Time Library
       routine LIB$SPAWN.

60.1  –  Input

       Type FN$SPAWN at the DTR> prompt to create the subprocess.

60.2  –  Output

       Your default DCL prompt appears on the screen. You can then
       invoke utilities or enter commands.

       Type LOGOUT after the DCL prompt to return to your original
       process in DEC DATATRIEVE. A message is printed on the screen
       indicating that you have logged out of the subprocess. DEC
       DATATRIEVE generates the DTR> prompt, showing that control has
       been returned to the original process in DEC DATATRIEVE.

60.3  –  Example

       DTR> FN$SPAWN
       $ MAIL
         .
         .
         .
       MAIL> EXIT
       $ LOGOUT
         Process PROCESSNAME_1 logged out at 25-FEB-1990 09:47:09:27
       DTR>

61  –  FN$SQRT

       Calculates the square root of the input number.

61.1  –  Input

       Zero or a positive decimal number.

61.2  –  Output

       Zero or a positive decimal number of type G-floating.

61.3  –  Example

       DTR> PRINT FN$SQRT (196)

         FN$SQRT

        1.4000E+01

       DTR>

62  –  FN$STR_CHARN

       It returns a string containing n duplicates of the input
       character.

62.1  –  Input

       This function takes two input arguments separated by a comma: a
       number and a character.

62.2  –  Output

       A string containing the selected number of input characters.

62.3  –  Example

       DTR> READY CDD$TOP.DTR$LIB.DEMO.YACHTS ;
       DTR> FOR FIRST 3 YACHTS SORTED BY PRICE ASCENDING
       CON> PRINT BUILDER, MODEL, FN$STR_CHARN(300,FN$ICHAR("_"))("NOTES") USING T(30) ;

       MANUFACTURER   MODEL                NOTES

        BUCCANEER   270        ______________________________
                               ______________________________
                               ______________________________
                               ______________________________
                               ______________________________
                               ______________________________
                               ______________________________
                               ______________________________
                               ______________________________
                               ______________________________
        PEARSON     26W        ______________________________
                               ______________________________
                               ______________________________
                               ______________________________
                               ______________________________
                               ______________________________
                               ______________________________
                               ______________________________
                               ______________________________
                               ______________________________
        BUCCANEER   320        ______________________________
                               ______________________________
                               ______________________________
                               ______________________________
                               ______________________________
                               ______________________________
                               ______________________________
                               ______________________________
                               ______________________________
                               ______________________________

       DTR>

63  –  FN$STR_EXTRACT

       Extracts a substring from the input character string using a
       default edit string of 30 characters.

63.1  –  Input

       This function takes three parameters:

       o  A character string

       o  An ordinal number of starting character (numerical position
          within string)

       o  The length of desired substring

63.2  –  Output

       A substring.

63.3  –  Example

       DTR> DECLARE WOMBAT PIC X(25).
       DTR> WOMBAT = "Wombats have sharp claws."
       DTR> PRINT FN$STR_EXTRACT (WOMBAT,9,4)

                  FN$STR
                  EXTRACT

       have

       DTR>

64  –  FN$STR_LENGTH

       Returns the length of a string..

64.1  –  Input

       This functions takes a string expression.

64.2  –  Output

       The length of the string.

64.3  –  Example

       DTR> READY YACHTS
       DTR> FOR FIRST 1 YACHTS
       CON> BEGIN
       CON> PRINT "BUILDER is", FN$STR_LENGTH(BUILDER)," Characters long";
       CON> PRINT "The record is", FN$STR_LENGTH(BOAT)," Characters long";
       CON> END;

                         FN$STR
                         LENGTH

       BUILDER is          10  Characters long

                         FN$STR
                         LENGTH

       The record is          41  Characters long

65  –  FN$STR_LOC

       Calculates the starting position of the specified substring in
       the input character string.

65.1  –  Input

       This functions takes two parameters: a character string and a
       substring.

65.2  –  Output

       An unsigned integer. If the string is undefined, FN$STR_LOC
       returns the value 0.

65.3  –  Example

       DTR> DECLARE WOMBAT PIC X(25)
       DTR> WOMBAT = "Wombats have sharp claws."
       DTR> PRINT FN$STR_LOC (WOMBAT,"claws")

        FN$STR
         LOC

                20

       DTR>

66  –  FN$STR_TOKEN

       Searches a string for the next token delimited by user-specified
       delimiters.

       When the function is called for the first time for a given
       string the init_flag must be 1 and the first token delimited
       by characters in delimiters is returned. In the following calls
       to get the other tokens in the same string, the init_flag must be
       0. The string argument is now ignored because an internal copy is
       now used. The delimiters string may be different from that used
       in the first call. When no more tokens exist, an empty string is
       returned.

66.1  –  Input

       This function takes three parameters as input, separated by
       commas:

       o  The string expression to be searched.

       o  The delimiters of the token.

       o  The initial flag for a given string: 1 for the first call and
          0 for the following calls to the same string.

66.2  –  Output

       The token within the delimiters.

66.3  –  Example

       The following example shows you how to split a sentence into
       lines (the separators are spaces, commas, or dots).

       DTR> SHOW D1
       DOMAIN D1 USING R1 ON LOG_NAM ;

       DTR> FN$CREATE_LOG("LOG_NAM","FN_STR_TOKEN_01.DAT");
       DTR> READY D1 ;
       DTR> DECLARE TOKEN PIC X(80) .;
       DTR> FOR D1
       CON>         BEGIN
       CON>         TOKEN = FN$STR_TOKEN(F," ,.", 1) ;
       CON>         WHILE TOKEN NOT EQ " "
       CON>                 BEGIN
       CON>                 PRINT TOKEN ;
       CON>                 TOKEN = FN$STR_TOKEN(F," ,.", 0);
       CON>                 END ;
       CON>         END ;

                                            TOKEN

       DEC
       DATATRIEVE
       for
       OpenVMS
       AXP
       systems
       is
       a
       query
       report
       and
       data
       management
       tool
       for
       the
       OpenVMS
       Operating
       System

       DTR>

67  –  FN$TAN

       Calculates the tangent of the input number.

67.1  –  Input

       A signed decimal number (radians).

67.2  –  Output

       A signed decimal number of type G-floating.

67.3  –  Example

       DTR> PRINT FN$TAN (3.14159/4)

         FN$TAN

        1.0000E+00

       DTR>

68  –  FN$TIME

       Extracts the time part of input (hh:mm:ss.cc in dd-MMM-yyyy
       hh:mm:ss.cc).

68.1  –  Input

       A date.

68.2  –  Output

       The time in OpenVMS format.

68.3  –  Example

       DTR> DECLARE CAL USAGE DATE EDIT_STRING X(23).
       DTR> CAL = "NOW"; PRINT CAL

                 CAL

        1-Feb-1990 08:51:11.55

       DTR> PRINT FN$TIME (CAL)

         FN$TIME

        08:51:11.5

       DTR>

69  –  FN$TRANS_LOG

       Translates a logical name.

69.1  –  Input

       A character string containing the logical name you want to
       translate.

69.2  –  Output

       A character string.

69.3  –  Example

       DTR> FN$CREATE_LOG ("HANK", "DB0:[MORRISON.RW]LOG.RNO")
       DTR> PRINT FN$TRANS_LOG ("HANK") USING X(30)

                   FN$TRANS
                     LOG

       DB0:[MORRISON.RW]LOG.RNO

       DTR>

70  –  FN$UPCASE

       Changes the characters in a string to uppercase.

70.1  –  Input

       A character string.

70.2  –  Output

       The input character string, all in uppercase.

70.3  –  Example

       DTR> DECLARE WOMBAT PIC X(25).
       DTR> WOMBAT = "Wombats have sharp claws."
       DTR> PRINT FN$UPCASE (WOMBAT)

                 FN$UPCASE

       WOMBATS HAVE SHARP CLAWS.

       DTR>

71  –  FN$USERNAME

       Displays the text string of the username.

71.1  –  Input

       None.

71.2  –  Output

       The text string of the username passed by descriptor.

71.3  –  Example

       DTR> PRINT FN$USERNAME

               DALFY
       DTR>

72  –  FN$WAIT

       Places the current process into hibernation for the number of
       seconds specified in its argument.

72.1  –  Input

       The number of seconds to wait. You can also specify a prompting
       value expression.

72.2  –  Output

       A pause determined by the seconds specified in the argument.

72.3  –  Examples

       DTR> BEGIN
       CON> REPEAT 3 PRINT "HALLO",
       CON> FN$WAIT(2)
       CON> END

               FN$WAIT

        HALLO           0
        HALLO           0
        HALLO           0

       DTR>

       The following example uses a prompting value expression.

       DTR> BEGIN
       CON> REPEAT 3 PRINT "HALLO",
       CON> FN$WAIT(**.'Seconds')
       CON> END

               FN$WAIT

               Enter Seconds: 3

       HALLO           0
       HALLO           0
       HALLO           0

       DTR>

73  –  FN$WEEK

       Calculates the week number for a date you enter.

       (The week number is an integer from 1 to 52. A week number is
       assigned sequentially to each week, beginning with the first
       week of the year. The first week of January is week number 1, the
       second week of January is week number 2, and so on.)

73.1  –  Input

       A date.

73.2  –  Output

       An unsigned integer from 1 to 52.

73.3  –  Example

       DTR> DECLARE CAL USAGE DATE EDIT_STRING X(23).
       DTR> CAL = "NOW"; PRINT CAL

                 CAL

        1-Feb-1983 08:51:11.55

       DTR> PRINT FN$WEEK (CAL)

         FN$WEEK

                5

       DTR>

74  –  FN$WIDTH

       Changes the character width of the terminal.

74.1  –  Input

       An integer.

74.2  –  Output

       None.

74.3  –  Example

       DTR> SET COLUMNS_PAGE = 132
       DTR> FN$WIDTH (132)

       FN$WIDTH (132) sets the terminal's width at 132 characters or
       columns. The SET COLUMNS_PAGE command ensures that any output
       produced by REPORT, PRINT, SUM, or LIST statements is spaced
       across the 132 columns.

75  –  FN$YEAR

       Extracts the year part of input (yyyy in dd-Mmm-yyyy
       hh:mm:ss.cc).

75.1  –  Input

       A date.

75.2  –  Output

       An unsigned integer for years 1858 to 9999.

75.3  –  Example

       DTR> DECLARE CAL USAGE DATE EDIT_STRING X(23).
       DTR> CAL = "NOW"; PRINT CAL

                 CAL

        1-Feb-1990 08:51:11.55

       DTR> PRINT FN$YEAR (CAL)

         FN$YEAR

              1990

       DTR>
Close Help