MODULE vs INCLUDE (CVF Directives)

From: Gary L. Scott (garyscott_at_ev1.net)
Date: 02/27/04


Date: Fri, 27 Feb 2004 06:43:53 -0600

Below is the content of an include file I'm thinking of using for code
tailoring to produce library versions compatible with different
compilers. It would be nicer (for my CM sensibilities) if I could put
this in a module (only thing in it is compiler directives), but CVF
won't allow that since the directives are not within the scope of a
procedure within the module (would be at the point of USE though). Are
comments are not even included in the module, directive or not? I would
assume the directive must be stored. Is that as it should be
(theoretical question, ignoring whether I've gotten it right for LF95
yet)?

!
! Compiler tailoring
!
!DEC$ IF (compiler .EQ. 1) !Lahey LF95

   !DEC$ IF (api .EQ. 1) !API #1

      !DEC$ ATTRIBUTES DLLEXPORT, REFERENCE, NOMIXED_STR_LEN_ARG,
ALIAS:'_ezconstrace_' :: ezConsTrace
      !DEC$ ATTRIBUTES DLLEXPORT, REFERENCE, NOMIXED_STR_LEN_ARG,
ALIAS:'_eztrce_' :: EZTRCE

   !DEC$ ELSEIF (api .eq. 2)

      !DEC$ ATTRIBUTES DLLEXPORT, REFERENCE, NOMIXED_STR_LEN_ARG,
ALIAS:'_ezconsinit_' :: ezConsInit
      !DEC$ ATTRIBUTES DLLEXPORT, REFERENCE, NOMIXED_STR_LEN_ARG,
ALIAS:'_ezinit_' :: EZINIT

   !DEC$ ELSEIF (api .eq. 3)

      !DEC$ ATTRIBUTES DLLEXPORT, REFERENCE, NOMIXED_STR_LEN_ARG,
ALIAS:'_ezconsopen_' :: ezConsOpen
      !DEC$ ATTRIBUTES DLLEXPORT, REFERENCE, NOMIXED_STR_LEN_ARG,
ALIAS:'_ezopen_' :: EZOPEN

   !DEC$ ELSEIF (api .eq. 4)

      !DEC$ ATTRIBUTES DLLEXPORT, REFERENCE, NOMIXED_STR_LEN_ARG,
ALIAS:'_ezconsclose_' :: ezConsclose
      !DEC$ ATTRIBUTES DLLEXPORT, REFERENCE, NOMIXED_STR_LEN_ARG,
ALIAS:'_ezclos_' :: EZCLOS

   !DEC$ ELSEIF (api .eq. 5)

      !DEC$ ATTRIBUTES DLLEXPORT, REFERENCE, NOMIXED_STR_LEN_ARG,
ALIAS:'_ezconssettitle_' :: ezConsSetTitle
      !DEC$ ATTRIBUTES DLLEXPORT, REFERENCE, NOMIXED_STR_LEN_ARG,
ALIAS:'_ezsttl_' :: EZSTTL

   !DEC$ ELSEIF (api .eq. 6)

      !DEC$ ATTRIBUTES DLLEXPORT, REFERENCE, NOMIXED_STR_LEN_ARG,
ALIAS:'_ezconsgettitle_' :: ezConsGetTitle
      !DEC$ ATTRIBUTES DLLEXPORT, REFERENCE, NOMIXED_STR_LEN_ARG,
ALIAS:'_ezgttl_' :: EZGTTL

   !DEC$ ELSEIF (api .eq. 7)

      !DEC$ ATTRIBUTES DLLEXPORT, REFERENCE, NOMIXED_STR_LEN_ARG,
ALIAS:'_ezconscreatebuffer_' :: ezConsCreateBuffer
      !DEC$ ATTRIBUTES DLLEXPORT, REFERENCE, NOMIXED_STR_LEN_ARG,
ALIAS:'_ezcbuf_' :: EZCBUF

   !DEC$ ELSEIF (api .eq. 8)

      !DEC$ ATTRIBUTES DLLEXPORT, REFERENCE, NOMIXED_STR_LEN_ARG,
ALIAS:'_ezconsgetstdhandle_' :: ezConsGetStdHandle
      !DEC$ ATTRIBUTES DLLEXPORT, REFERENCE, NOMIXED_STR_LEN_ARG,
ALIAS:'_ezgsh_' :: EZGSH

   !DEC$ ELSEIF (api .eq. 9)

      !DEC$ ATTRIBUTES DLLEXPORT, REFERENCE, NOMIXED_STR_LEN_ARG,
ALIAS:'_ezconswritetext_' :: ezConsWriteText
      !DEC$ ATTRIBUTES DLLEXPORT, REFERENCE, NOMIXED_STR_LEN_ARG,
ALIAS:'_ezwtxt_' :: EZWTXT

   !DEC$ ELSEIF (api .eq. 10)

      !DEC$ ATTRIBUTES DLLEXPORT, REFERENCE, NOMIXED_STR_LEN_ARG,
ALIAS:'_ezconssetcurspos_' :: ezConsSetCursPos
      !DEC$ ATTRIBUTES DLLEXPORT, REFERENCE, NOMIXED_STR_LEN_ARG,
ALIAS:'_ezscp_' :: EZSCP

   !DEC$ ELSEIF (api .eq. 11)

      !DEC$ ATTRIBUTES DLLEXPORT, REFERENCE, NOMIXED_STR_LEN_ARG,
ALIAS:'_ezconssetsecatt_' :: ezConsSetSecAtt
      !DEC$ ATTRIBUTES DLLEXPORT, REFERENCE, NOMIXED_STR_LEN_ARG,
ALIAS:'_ezssa_' :: EZSSA

   !DEC$ ELSEIF (api .eq. 12)

      !DEC$ ATTRIBUTES DLLEXPORT, REFERENCE, NOMIXED_STR_LEN_ARG,
ALIAS:'_ezconssettextatt_' :: ezConsSetTextAtt
      !DEC$ ATTRIBUTES DLLEXPORT, REFERENCE, NOMIXED_STR_LEN_ARG,
ALIAS:'_ezsta_' :: EZSTA

   !DEC$ ELSEIF (api .eq. 13)

      !DEC$ ATTRIBUTES DLLEXPORT, REFERENCE, NOMIXED_STR_LEN_ARG,
ALIAS:'_ezconsctrlevent_' :: ezConsCtrlEvent
      !DEC$ ATTRIBUTES DLLEXPORT, REFERENCE, NOMIXED_STR_LEN_ARG,
ALIAS:'_ezcev_' :: EZCEV

   !DEC$ ELSEIF (api .eq. 14)

      !DEC$ ATTRIBUTES DLLEXPORT, REFERENCE, NOMIXED_STR_LEN_ARG,
ALIAS:'_ezconsgeterrortext_' :: ezConsGetErrorText
      !DEC$ ATTRIBUTES DLLEXPORT, REFERENCE, NOMIXED_STR_LEN_ARG,
ALIAS:'_ezetxt_' :: EZETXT

   !DEC$ ELSEIF (api .eq. 15)

      !DEC$ ATTRIBUTES DLLEXPORT, REFERENCE, NOMIXED_STR_LEN_ARG,
ALIAS:'_ezconsgetoserrortext_' :: ezConsGetOSErrorText
      !DEC$ ATTRIBUTES DLLEXPORT, REFERENCE, NOMIXED_STR_LEN_ARG,
ALIAS:'_ezgoet_' :: EZGOET

   !DEC$ ELSEIF (api .eq. 16)

      !DEC$ ATTRIBUTES DLLEXPORT, REFERENCE, NOMIXED_STR_LEN_ARG,
ALIAS:'_ezconsmsgbox_' :: ezConsMsgBox
      !DEC$ ATTRIBUTES DLLEXPORT, REFERENCE, NOMIXED_STR_LEN_ARG,
ALIAS:'_ezmbox_' :: EZMBOX

   !DEC$ ELSEIF (api .eq. 17)

      ! DEC$ ATTRIBUTES DLLEXPORT, REFERENCE, NOMIXED_STR_LEN_ARG,
ALIAS:'_ezcons_' :: ezCons
      ! DEC$ ATTRIBUTES DLLEXPORT, REFERENCE, NOMIXED_STR_LEN_ARG,
ALIAS:'_ez_' :: EZ

   !DEC$ ELSEIF (api .eq. 18)

      ! DEC$ ATTRIBUTES DLLEXPORT, REFERENCE, NOMIXED_STR_LEN_ARG,
ALIAS:'_ezcons_' :: ezCons
      ! DEC$ ATTRIBUTES DLLEXPORT, REFERENCE, NOMIXED_STR_LEN_ARG,
ALIAS:'_ez_' :: EZ

   !DEC$ ELSEIF (api .eq. 19)

      ! DEC$ ATTRIBUTES DLLEXPORT, REFERENCE, NOMIXED_STR_LEN_ARG,
ALIAS:'_ezcons_' :: ezCons
      ! DEC$ ATTRIBUTES DLLEXPORT, REFERENCE, NOMIXED_STR_LEN_ARG,
ALIAS:'_ez_' :: EZ

   !DEC$ ELSEIF (api .eq. 20)

      ! DEC$ ATTRIBUTES DLLEXPORT, REFERENCE, NOMIXED_STR_LEN_ARG,
ALIAS:'_ezcons_' :: ezCons
      ! DEC$ ATTRIBUTES DLLEXPORT, REFERENCE, NOMIXED_STR_LEN_ARG,
ALIAS:'_ez_' :: EZ

   !DEC$ ENDIF

!DEC$ ELSEIF (compiler .eq. 2)

...

!DEC$ ENDIF

-- 
Gary Scott
mailto:garyscottNOSPAM@ev1.net
Fortran Library
http://www.fortranlib.com
Support the GNU Fortran G95 Project:  http://g95.sourceforge.net