fpt and WinFPT Reference Manual - Command-line Commands

| SimCon Home | Ref Manual Home |

DEC$ DEFINE

Syntax:

DEC$ DEFINE <symbol> DEC$ UNDEFINE <symbol>

Function:

fpt processes DEC$ directives in the Fortran code. Some directives use symbols which are specified in the compilation commands when the code is built. The DEC$ DEFINE and DEC$ UNDEFINE commands provide the facility to define or to undefine these symbols when fpt is run.

The DEC$ DEFINE and DEC$ UNDEFINE commands are position-sensitive. When DEC$ symbols are defined on the fpt command-line or in an fsp file the symbols are defined or undefined in the files which follow the command.

The definitions of DEC$ symbols are displayed by the command SHOW DEC$ SYMBOLS

DEC$ directives are supported under (at least) VMS, CVF, HP-UX and ifort.

Where to Use this Command

Operating system command line Yes
Configuration file, config.fsp Yes
Specification (fsp) files, *.fsp Yes
Interactively, to FPT> prompt No
Interactive command files No
Embedded in the Fortran code No

Default

No DEC$ symbols are defined by default.

Example

The test program t_decd_if.f90 contains the code fragment enclosed in a DEC$ IF construct:

!DEC$ if defined (CRASH) WRITE(*,'("iter:",I8)')iter !DEC$ endif

If fpt is run without a definition of the symbol CRASH fpt does not process the lines between DEC$ IF and DEC$ ENDIF. These lines are treated as if they were comments. A search for the symbol iter then shows:

FPT> find iter SEARCH - Searching all files Symbol(s) sought: Name Scope Use/COMMON Address Type Size Value/Bounds ---- ----- ---------- ------- ---- ---- ------------ iter t_decd_if LOCAL INTEGER *4 1 symbol selected Target found at line: 11 in file: /home/john/projects/WinFPT/fpt/fpttest/t_decd_if.f90 7 ! 8 ! 9 REAL*8 time_8 10 REAL*8 end_time_8 11 >> INTEGER*4 iter 12 INTEGER*4 ie 13 ! FPT> next Target found at line: 18 in file: /home/john/projects/WinFPT/fpt/fpttest/t_decd_if.f90 16 ! 17 DO WHILE (time_8 < end_time_8) 18 >> iter=iter+1 19 ! 20 !DEC$ IF DEFINED(crash) 21 WRITE (*,'("iter:",I8)')iter 22 !DEC$ ENDIF FPT> FPT> next Target found at line: 18 in file: /home/john/projects/WinFPT/fpt/fpttest/t_decd_if.f90 16 ! 17 DO WHILE (time_8 < end_time_8) 18 >> iter=iter+1 19 ! 20 !DEC$ IF DEFINED(crash) 21 WRITE (*,'("iter:",I8)')iter 22 !DEC$ ENDIF FPT> next NEXT/FIND/SEARCH - Target not found. FPT>

If CRASH is defined, for example by the command-line command:

john@gemsbok:~/projects/WinFPT/fpt/fpttest$ fpt "%dec$ define crash" t_decd_if.f90 %i

the search for iter then finds the symbol which has been identified by fpt:

: : FPT> n Target found at line: 18 in file: /home/john/projects/WinFPT/fpt/fpttest/t_decd_if.f90 16 ! 17 DO WHILE (time_8 < end_time_8) 18 >> iter=iter+1 19 ! 20 !DEC$ IF DEFINED(crash) 21 WRITE (*,'("iter:",I8)')iter 22 !DEC$ ENDIF FPT> n Target found at line: 21 in file: /home/john/projects/WinFPT/fpt/fpttest/t_decd_if.f90 17 DO WHILE (time_8 < end_time_8) 18 iter=iter+1 19 ! 20 !DEC$ IF DEFINED(crash) 21 >> WRITE (*,'("iter:",I8)')iter 22 !DEC$ ENDIF 23 ! 24 ! Compute the derivatives 25 CALL deriv(ie) FPT>

Copyright ©1995 to 2022 Software Validation Ltd. All rights reserved.