In my old 32bit projects I have used the following subroutines:
ADD_FORTRAN_WINDOW_CALLBACK
and
GETCL@
I can't find any discription in the actual help and also it seems to be unknown to the 64bit linker.
Detlef Pannhorst
Welcome to our forums
In my old 32bit projects I have used the following subroutines:
ADD_FORTRAN_WINDOW_CALLBACK
and
GETCL@
I can't find any discription in the actual help and also it seems to be unknown to the 64bit linker.
Detlef Pannhorst
ADD_FORTRAN_WINDOW_CALLBACK appears in clearwin.ins and the corresponding mod file. On my machine it is exported by clearwin64.dll but that might have been added since the last full release.
GETCL@ has not been ported. Please check that this routine is used/needed. It is a very old routine that would be tricky to port.
Hi Paul,
do you have any old documentation of GETCL@? I can't find anything and I don't remember the reason why I have used this subroutine. The last modification of the source in which I have used it is 1997.
Where can I get the new clearwin64.dll. I am using FTN95 8.05.
Detlef Pannhorst
This is from the FTN77.HLP file:
Purpose To get a line of text from the keyboard. Syntax SUBROUTINE GETCL@(C,LC) CHARACTER*() C INTEGER2 LC Description This routine waits until the next line is typed at the keyboard, and returns it in C. LC is set to the length of the line.
There is a link to some new DLLs in Paul Laidler's post of 1 Dec 2016 at https://forums.silverfrost.com/Forum/Topic/2968&postdays=0&postorder=asc&start=75 .
From FTN77/386 manual:
18.2.22 GETCL@
This routine waits until the next line is typed at the keyboard, and returns it in C. LC is set to the length of the line.
Definition:
SUBROUTINE GETCL@ (C, LC)
CHARACTER*(*) C
INTEGER*2 LC
Example:
CHARACTER*10 ANS
INTEGER*2 LC
1 CALL COUA@('Type STOP or GO')
CALL GETCL@(ANS, L)
CALL UPCASE@(ANS)
IF (ANS .EQ. 'STOP') GO TO 10
IF (ANS .EQ. 'GO') GO TO 20
GO TO 1
Eddie (Beaten to it by MECEJ4 by 2 minutes)
Thanks for examples and documentation. I will try to find a replacement for GETCL@.
Detlef Pannhorst
By the way, the function GET_DEFAULT_WINDOW@() seems also not to be ported to 64bit. SLINK64 reports it as undefined symbol.
Detlef Pannhorst
Detlef,
LEN_TRIM seems to do the same job, i.e.
LC = LEN_TRIM (ANS)
and then deal with
ANS (1:LC)
But then you already knew that.
There are some very useful old routines deep in the vaults of FTN77.
Eddie
GET_DEFAULT_WINDOW@ is declared in clearwin.ins and (on my machine) is exported by clearwin64.dll but (as before) this might not be exported in the latest full release.
Also INTEGER(7) (in clearwin.ins) was not being read correctly by FTN95. This has now been fixed for the next release.
The next release is expected shortly but this will not include a port of GETCL@.
Trying to port another project to 64bit, I have found some other undeclared symbols like:
Hopefully they will be satisfied in the next release?
In my 32bit projects I could link from Windows/System32 like this:
LOAD C:\WINDOWS\SYSTEM32\WINSPOOL.DRV LOAD C:\WINDOWS\SYSTEM32\HHCTRL.OCX
In the same 64bit project SLINK64 gives this message:
[SLINK64 v1.7, Copyright (c) Silverfrost Ltd. 2015-2016] ***SLINK64 does not know what to do with file C:\WINDOWS\SYSTEM32\WINSPOOL.DRV
Other files link succesfully, like these:
LOAD C:\WINDOWS\SYSTEM32\MAPI32.DLL LOAD C:\WINDOWS\SYSTEM32\OLE32.DLL LOAD C:\WINDOWS\SYSTEM32\VERSION.DLL
RELEASE_BITMAP_DC@ in clearwin.ins and exported by clearwin64.dll CLEAR_BITMAP@ in clearwin.ins and exported by clearwin64.dll FILL_RECTANGLE@ in dbos.ins and exported by clearwin64.dll NEW_PAGE@ in dbos.ins and exported by clearwin64.dll UPDATE@ I don't know this one - please check the spelling.
Again, this may not reflect the current main release.
At the moment SLINK64 is not able to handle WINSPOOL.DRV or HHCTRL.OCX. We might need some simple sample code that demonstrates how these files are used in your application.
HHCTRL.OCX is used in this example:
SUBROUTINE WINHLP32 (MYHELP,HELP_TYPE,CONTEXT)
USE MSWIN
STDCALL HTMLHELP 'HtmlHelpA' (VAL,STRING,VAL,VAL):INTEGER*4
IMPLICIT NONE
INTEGER*4 CONTEXT,HELP_TYPE
CHARACTER MYHELP*(*)
INTEGER*4,PARAMETER::HELP_FINDER=11
INTEGER*4,PARAMETER::HH_DISPLAY_TOPIC=Z'0000'
INTEGER*4,PARAMETER::HH_HELP_FINDER=Z'0000'
INTEGER*4,PARAMETER::HH_DISPLAY_TOC=Z'0001'
INTEGER*4,PARAMETER::HH_DISPLAY_INDEX=Z'0002'
INTEGER*4,PARAMETER::HH_DISPLAY_SEARCH=Z'0003'
INTEGER*4,PARAMETER::HH_SET_WIN_TYPE=Z'0004'
INTEGER*4,PARAMETER::HH_GET_WIN_TYPE=Z'0005'
INTEGER*4,PARAMETER::HH_GET_WIN_HANDLE=Z'0006'
INTEGER*4,PARAMETER::HH_ENUM_INFO_TYPE=Z'0007'
INTEGER*4,PARAMETER::HH_SET_INFO_TYPE=Z'0008'
INTEGER*4,PARAMETER::HH_SYNC=Z'0009'
INTEGER*4,PARAMETER::HH_RESERVERD1=Z'000A'
INTEGER*4,PARAMETER::HH_RESERVED2=Z'000B'
INTEGER*4,PARAMETER::HH_RESERVED3=Z'000C'
INTEGER*4,PARAMETER::HH_KEYWORD_LOOKUP=Z'000D'
INTEGER*4,PARAMETER::HH_DISPLAY_TEXT_POPUP=Z'000E'
INTEGER*4,PARAMETER::HH_HELP_CONTEXT=Z'000F'
INTEGER*4,PARAMETER::HH_TP_HELP_CONTEXTMENU=Z'0010'
INTEGER*4,PARAMETER::HH_TP_HELP_WM_HELP=Z'0011'
INTEGER*4,PARAMETER::HH_CLOSE_ALL=Z'0012'
INTEGER*4,PARAMETER::HH_ALINK_LOOKUP=Z'0013'
INTEGER*4,PARAMETER::HH_GET_LAST_ERROR=Z'0014'
INTEGER*4,PARAMETER::HH_ENUM_CATEGORY=Z'0015'
INTEGER*4,PARAMETER::HH_ENUM_CATEGORY_IT=Z'0016'
INTEGER*4,PARAMETER::HH_RESET_IT_FILTER=Z'0017'
INTEGER*4,PARAMETER::HH_SET_INCLUSIVE_FILTER=Z'0018'
INTEGER*4,PARAMETER::HH_SET_EXCLUSIVE_FILTER=Z'0019'
INTEGER*4,PARAMETER::HH_INITIALIZE=Z'001C'
INTEGER*4,PARAMETER::HH_UNINITIALIZE=Z'001D'
INTEGER*4,PARAMETER::HH_SET_GLOBAL_PROPERTY=Z'00FC'
INTEGER*4,PARAMETER::HH_PRETRANSLATEMESSAGE=Z'00FD'
IF(HELP_TYPE.EQ.HELP_CONTENTS)THEN
IF(CONTEXT.GT.0)THEN
RC=HTMLHELP(0,TRIM(MYHELP),HH_HELP_CONTEXT,CONTEXT)
ELSE
RC=HTMLHELP(0,TRIM(MYHELP),HH_DISPLAY_TOC,0)
ENDIF
ELSEIF(HELP_TYPE.EQ.HELP_FINDER)THEN
RC=HTMLHELP(0,TRIM(MYHELP),HH_DISPLAY_INDEX,0)
ENDIF
RETURN
END
You may want to refer to FTN95 help at:
FTN95 >
Win32 platform Clearwin+ Functions ported from DBOS Table of alternative routines
This gives info on older routines, although I am not sure if this list includes those you have described. Worth a look.
John
I think that you should be able to use HtmlHelp.dll in place of HHCTRL.OCX.
Please check that UPDATE@ is the name of a routine that is missing.
I am looking again at GETCL@. I will keep you posted.
Note that dbos.ins must be INCLUDEd in some 64 bit compilations that use old DBOS routines.
Hi Paul,
I meant UPCASE@ instead of UPDATE@.
Hi Paul,
I can't find HtmlHelp.dll in my Windows system directory. HHCTRL.OCX is existing.
It looks like the Microsoft documentation that refers to this DLL is incorrect and maybe the Microsoft HtmlHelp.lib is a 'stub' library for hhctrl.ocx. I will log this as needing investigation.
The following code works OK for me so perhaps UPCASE@ has recently been added as an export from clearwin64.dll.
character*80 str
str = 'hello'
call upcase@(str)
print*, str
end
Hi Paul,
is there any chance to get an intermediate version of clearwin64.dll?