forums.silverfrost.com Forum Index forums.silverfrost.com
Welcome to the Silverfrost forums
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Build Version

 
Post new topic   Reply to topic    forums.silverfrost.com Forum Index -> Suggestions
View previous topic :: View next topic  
Author Message
DanRRight



Joined: 10 Mar 2008
Posts: 2813
Location: South Pole, Antarctica

PostPosted: Tue Aug 29, 2017 9:17 am    Post subject: Build Version Reply with quote

With FTN95 /ver

good also to provide info about DLL/LIB build version and dates. And also if these are original build DLLs or upgraded.

Currently it shows

Silverfrost FTN95/.NET Copyright (C) 1993-2017 Silverfrost Ltd
---------------------------------------------------------------

Version: 8.10.0
Built: Sat Feb 11 12:23:39 2017

Operating System: Microsoft .NET on Windows NT CPU: Intel(R) Core(TM) i7-4770K CPU @ 3.50GHz Model 12 Step 3
CPU Features: MMX, SSE, SSE2, x86-64
Back to top
View user's profile Send private message
PaulLaidler
Site Admin


Joined: 21 Feb 2005
Posts: 7916
Location: Salford, UK

PostPosted: Tue Aug 29, 2017 5:26 pm    Post subject: Reply with quote

Thanks Dan. I have made a note of this.
Back to top
View user's profile Send private message AIM Address
PaulLaidler
Site Admin


Joined: 21 Feb 2005
Posts: 7916
Location: Salford, UK

PostPosted: Sat Dec 16, 2017 2:24 pm    Post subject: Reply with quote

This turns out to be a non-trivial task (at least for 64 bits which is where the future interest lies).

The FTN95 compiler is a 32 bit application whilst the easy access to the DLL version is via a function call to the 64 bit DLLs. So this information is not easy to provide via FTN95.

However, you could construct your own simple utility from...

Code:
program main
C_EXTERNAL GetLibraryVersionInfo '_GetLibraryVersionInfo'():INTEGER(7)
C_EXTERNAL GetLibraryDateInfo '_GetLibraryDateInfo'():INTEGER(7)
C_EXTERNAL GetString 'GET_CSTRING@'(REF,VAL,REF)
CHARACTER(80) info
call GetString(info, GetLibraryVersionInfo(), 80)
!Year since 1998, month, day, hour...
print*, info
call GetString(info, GetLibraryDateInfo(), 80)
print*, info
end
Back to top
View user's profile Send private message AIM Address
DanRRight



Joined: 10 Mar 2008
Posts: 2813
Location: South Pole, Antarctica

PostPosted: Sun Dec 17, 2017 7:32 pm    Post subject: Reply with quote

Thanks, Paul, hope in the future the way to trick the system will be found or this start working when compiler become 100% 64bit. We meantime will include this subroutine into our own codes just not to loose.
Back to top
View user's profile Send private message
JohnCampbell



Joined: 16 Feb 2006
Posts: 2554
Location: Sydney

PostPosted: Fri Feb 02, 2018 5:29 am    Post subject: Reply with quote

Paul,

I have the following code which appears to work for /64, but perhaps after reading this thread it should not.

The following bit does not work for a valid date:
dll_version = scc_lib_version@ ()
dll_date = dos_date (ints(dll_version))

Could you suggest any changes, as I would like to get info on salflibc.dll
Code:
   subroutine echo_dll_version
!
      include <clearwin.ins>
      C_EXTERNAL SCC_LIB_VERSION@       '_scc_lib_version' :INTEGER*4
      C_EXTERNAL INITLIBRARYFILEINFO@   '_InitLibraryFileInfo'():INTEGER*4
      C_EXTERNAL GetLibraryVersionInfo@ '_GetLibraryVersionInfo'():STRING
      C_EXTERNAL GetLibraryPath@        '_GetLibraryPath'():STRING
      C_EXTERNAL GetLibraryDateInfo@    '_GetLibraryDateInfo'():STRING
!
      integer   dll_version
      character str*256,    ftn95_ver*80
      character dos_date*9, dll_date*9
      external  dos_date
!
      call get_compiler_version ( ftn95_ver )
!
      dll_version = scc_lib_version@ ()
      dll_date    = dos_date (ints(dll_version))
!
      WRITE ( *,1001) trim(ftn95_ver), dll_date, dll_version
      WRITE (98,1001) trim(ftn95_ver), dll_date, dll_version
!
      WRITE ( *,1000) 'get_library_info.f90 /64'
      WRITE (98,1000) 'get_library_info.f90 /64'

      str = GetLibraryVersionInfo@ ()
      WRITE ( *,1000) '  VERSION: ', trim (str)
      WRITE (98,1000) '  VERSION: ', trim (str)

      str = GetLibraryPath@ ()
      WRITE ( *,1000) '  PATH   : ', trim (str)
      WRITE (98,1000) '  PATH   : ', trim (str)

      str = GetLibraryDateInfo@ ()
      WRITE ( *,1000) '  DATE   : ', trim (str)
      WRITE (98,1000) '  DATE   : ', trim (str)

      write ( *,1000) ' '
      write (98,1000) ' '
 1000 FORMAT (a,a)
 1001 FORMAT (/a/' Salford DLL code : ',a,i11/)
!
      RETURN
!
   end subroutine echo_dll_version

   character*9 function dos_date (yymmdd)
!
      integer*2 yymmdd
!
      character temp*9, label(0:12)*3
      integer*4 yy,mm,dd
      intrinsic mod
      data label / '___', 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',     &
                   'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' /
!
!     yyyyyyy mmmm ddddd
      dd = iand (yymmdd,31)             ! 0-31
      mm = iand (ishft(yymmdd,-5),15)   ! 0-15
      yy = ishft (yymmdd,-9)            ! 0-127
!
      yy = mod (yy+1980,100)
      if (mm>12 .OR. mm<0) mm = 0
!
      write (temp,1001) dd,label(mm),yy
 1001 format (i2.2,'-',a3,'-',i2.2)
      dos_date = temp
      return
   end function dos_date

   subroutine get_compiler_version ( version )
      character version*(*)
      character ftn95_ver*80
!
      include <ftn95_ver.ins>
      version = ftn95_ver
   end subroutine get_compiler_version


File ftn95_ver.ins is unique to each FTN95 directory:
ftn95_ver = '[FTN95/Win32 Ver. 8.20.0 Nov 17 Copyright (c) Silverfrost Ltd 1993-2017]'
Back to top
View user's profile Send private message
PaulLaidler
Site Admin


Joined: 21 Feb 2005
Posts: 7916
Location: Salford, UK

PostPosted: Fri Feb 02, 2018 9:27 am    Post subject: Reply with quote

John

You can get version information for salflibc64.dll and clearwin64.dll from GetLibraryVersionInfo and GetLibraryDateInfo (as above).

These two DLLs are always built at the same time and released together with the same version information. There is currently no provision for the possibility that users might try to take salflibc64.dll from one release and use it with a clearwin64.dll from a different release. In this sense users should treat them as twinned DLLs.
Back to top
View user's profile Send private message AIM Address
JohnCampbell



Joined: 16 Feb 2006
Posts: 2554
Location: Sydney

PostPosted: Wed Jun 09, 2021 6:38 am    Post subject: Reply with quote

Paul,

Thanks for highlighting this old post.
I have now rerun the code sample I posted above in 2018 using FTN95 /64.

I am using FTN95 Ver 8.64.0.
the following values are reported:
scc_lib_version@ () : 18387
GetLibraryVersionInfo@ () : 22.7.17.13
GetLibraryPath@ () : c:\Program Files (x86)\Silverfrost\ftn95_8.64F\CLEARWIN64.DLL
GetLibraryDateInfo@ () : 5:56:36 - 22:7:2020

Based on these results:

scc_lib_version@ () is not reporting a valid dos date format expected.
as bit format expected was : yyyyyyymmmmddddd
I am not sure what the format is.

getLibraryVersionInfo@ () this version number is not 8.64.0 that FTN95 /ver reports, but some other version report. (text string)

GetLibraryPath@ () this is correct (text string)

GetLibraryDateInfo@ () this is probably correct (text string)

This is why I have created an <include file> and return the text string, based on what FTN95 /ver reports.
My subroutine get_compiler_version provides a similar report as the F2018 intrinsic routine.

The performance of these routines could be better presented for FTN95 users.
Back to top
View user's profile Send private message
PaulLaidler
Site Admin


Joined: 21 Feb 2005
Posts: 7916
Location: Salford, UK

PostPosted: Wed Jun 09, 2021 7:40 am    Post subject: Reply with quote

Thanks John. I will take a look at this.
Back to top
View user's profile Send private message AIM Address
PaulLaidler
Site Admin


Joined: 21 Feb 2005
Posts: 7916
Location: Salford, UK

PostPosted: Wed Jun 09, 2021 2:17 pm    Post subject: Reply with quote

John

It seems OK to me...

Code:
get_library_info.f90 /64
  VERSION: 23.6.1.8
  PATH   : C:\CPPLIB\x64\Debug\CLEARWIN64.DLL
  DATE   : 10:53:12 - 9:6:2021


The library version is the same as from File Explorer and Properties.
The PATH is right for me.
The DLL was built today (9 June 2021) at 11:53 British Summer Time which is 10:53 GMT.

There is no connection between this version number and that for FTN95.
Back to top
View user's profile Send private message AIM Address
mecej4



Joined: 31 Oct 2006
Posts: 1885

PostPosted: Wed Jun 09, 2021 2:56 pm    Post subject: Reply with quote

Some of the Silverfrost DLLs may not have all the version/date information filled in. For instance, using the SigCheck utility (https://docs.microsoft.com/en-us/sysinternals/downloads/sigcheck), I find:

Code:
c:\UTILS\sigcheck.exe c:\lang\FTN95V87\sdbgdll.dll

Sigcheck v2.81 - File version and signature viewer
Copyright (C) 2004-2021 Mark Russinovich
Sysinternals - www.sysinternals.com

c:\lang\ftn95v87\sdbgdll.dll:
        Verified:       Unsigned
        Link date:      7:00 PM 12/31/1969
        Publisher:      n/a
        Company:        n/a
        Description:    n/a
        Product:        n/a
        Prod version:   n/a
        File version:   n/a
        MachineType:    32-bit


The other Silverfrost DLLs have the missing pieces filled in, except the Link date. I don't know if it matters that any of the entries shown above are not filled in or are incorrect.
Back to top
View user's profile Send private message
JohnCampbell



Joined: 16 Feb 2006
Posts: 2554
Location: Sydney

PostPosted: Wed Jun 09, 2021 3:01 pm    Post subject: Reply with quote

No Paul,

The version is not "23.6.1.8"
It is 8.7.??
FTN95 /ver gives what should be reported as the version.
Anything else is just confusing and wrong.
Back to top
View user's profile Send private message
PaulLaidler
Site Admin


Joined: 21 Feb 2005
Posts: 7916
Location: Salford, UK

PostPosted: Wed Jun 09, 2021 4:42 pm    Post subject: Reply with quote

mecej4
Version information has recently been added for some applications such as the C++ compiler and SLINK64 but there are still exceptions.

John
I am missing something here. GetLibraryVersionInfo@ provides the library version number, not the FTN95 version.
The compiler version is provided via the iso_fortran_env standard intrinsic compiler_version().
Back to top
View user's profile Send private message AIM Address
JohnCampbell



Joined: 16 Feb 2006
Posts: 2554
Location: Sydney

PostPosted: Fri Jun 11, 2021 6:59 am    Post subject: Reply with quote

Paul,

My problem is with the different version stamps of GetLibraryVersionInfo@ and FTN95 /ver. I expect them to be the same. If I am asking the question are ftn95.exe and CLEARWIN64.DLL the same version, what is provided does not really help.

However, I have now upgraded my Ver 8.64 to 8.74, using the latest downloads (and an earlier download of iso_fortran_env) I find that compiler_version is working, which is a great improvement.

So the advise is now, if you are using ver 8.7+ then the iso_fortran_env standard intrinsic compiler_version() is available and tidies up most of these issues.
Back to top
View user's profile Send private message
PaulLaidler
Site Admin


Joined: 21 Feb 2005
Posts: 7916
Location: Salford, UK

PostPosted: Fri Jun 11, 2021 7:17 am    Post subject: Reply with quote

John

The library that is in the DLLs is not only used by FTN95. It is used by SCC and other Silverfrost utilities. Moreover, the the library is often compatible with non-contemporary versions of FTN95. Added to that, library updates are often available between main releases of FTN95.

So, although it is a nice idea, I would hesitate to go down that route.

But the three main DLLs are always released together and have the same version number.
Back to top
View user's profile Send private message AIM Address
Display posts from previous:   
Post new topic   Reply to topic    forums.silverfrost.com Forum Index -> Suggestions All times are GMT + 1 Hour
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group