Silverfrost Forums

Welcome to our forums

Unknown subroutines

26 Jan 2017 2:54 #18776

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

26 Jan 2017 3:47 #18777

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.

27 Jan 2017 9:03 #18779

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

27 Jan 2017 12:29 #18780

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 .

27 Jan 2017 12:31 #18781

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)

27 Jan 2017 1:18 #18782

Thanks for examples and documentation. I will try to find a replacement for GETCL@.

Detlef Pannhorst

27 Jan 2017 1:21 #18783

By the way, the function GET_DEFAULT_WINDOW@() seems also not to be ported to 64bit. SLINK64 reports it as undefined symbol.

Detlef Pannhorst

27 Jan 2017 3:05 #18784

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

27 Jan 2017 3:09 #18785

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@.

27 Jan 2017 3:22 #18786

Trying to port another project to 64bit, I have found some other undeclared symbols like:

  • RELEASE_BITMAP_DC@
  • CLEAR_BITMAP@
  • FILL_RECTANGLE@
  • NEW_PAGE@ and
  • UPDATE@

Hopefully they will be satisfied in the next release?

27 Jan 2017 3:37 #18787

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

27 Jan 2017 4:16 #18788

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.

27 Jan 2017 4:37 #18789

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.

27 Jan 2017 5:03 #18790

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
28 Jan 2017 1:30 #18793

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

28 Jan 2017 8:20 #18795

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.

28 Jan 2017 10:39 #18796

Hi Paul,

I meant UPCASE@ instead of UPDATE@.

28 Jan 2017 10:47 #18797

Hi Paul,

I can't find HtmlHelp.dll in my Windows system directory. HHCTRL.OCX is existing.

28 Jan 2017 11:49 #18798

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
28 Jan 2017 12:06 #18799

Hi Paul,

is there any chance to get an intermediate version of clearwin64.dll?

Please login to reply.