Directive must have parameter(s)

I am working on a new system that is based in Clarion 6.1.
I am trying to initially work with it in Clarion 11 using the Versions system to still use the Clarion6 environment during the initial conversion.
I have the Apps loading and template corrections for the C6 templates that generated errors.
When I compile the “data DLL” I am getting the error: “Directive must have parameter(s)” in the MAP file for the app.
I do not recall seeing this error before.
I’ve looked over the compile defines in the cwproj and the included .prj and do not see anything without a value/parameter so I don’t think that’s the issue.
Does anyone have any information what this error actually means?

The original Clarion6.1 Apps do compile successfully with the Clarion6.1 IDE in a Windows 32-bit VM.

TIA

The C11 help file has a page on Directives.

It says this

T4 Template Directives

<#@ DirectiveName [ParameterName = “ParameterValue”] #>

All parameter values must be surrounded by double quotation marks. If the ParameterValue contains quotation marks, they must be escaped with the \ character.

Directives are usually the first elements in a template file or an included file. You should not place them inside a code block <#…#>, or after a class block <#+…#>.

Maybe you could search for <#@ in your templates because my initial suspicion is this might be linked to a Version control template, if one exists. Its possible a (Version) template has a field thats not been filled in, which would suggest the template field needs a Req attribute. Maybe cycle through the Version template to see if a field needs filling which wont be triggered simply by adding the (Version) template.

@anon77170705 will almost certainly know though. :grinning:

Hi Richard,
The T4 system was the “new” template system for the defunct Clarion.Net product.
Clarion 11.x still uses the traditional template system.

1 Like

Do you see anything odd in the .MAP file ?

The line I posted is literally all that’s in the .map file.

hmmm, is there anything odd in the .EXP ?

Not that I can see.
It did have
NAME ‘APPNAME’ GUI
where my export files for projects using the modern compilers have
LIBRARY ‘APPNAME’ GUI

I changed that to LIBRARY just to test but same error.

I enabled diagnostic level output and it doesn’t have any additional information that appears useful.

I’m no linker expert, but I’m guessing there’s something else beyond the defines in your .cwproj, such as a link statement that’s not correct.

Might not apply, but not sure how 6.2 would report an un-registered add-on driver?

A little more interesting info.
Turns out this installation is actually Clarion 6.1 9034.
I created this very simple program in the C11 IDE to compile with the C6 environment.


  PROGRAM

!OMIT('***')
! * Created with Clarion 11.0
! * User: rick
! * Date: 9/13/2024
! * Time: 10:39 AM
! * 
! * To change this template use Tools | Options | Coding | Edit Standard Headers.
! ***

  MAP
  END

  CODE
        Message('hello world')
        

This generates the same error, so it isn’t an issue with ABC files or templates or any 3rd party source.
I then dug up and installed Clarion 6.0 Gold! :slight_smile:
Made this a totally clean new install.
It does NOT have the problem, nor does Clarion 6.1 Gold.
However, patching from 6.1 Gold to 6.1 9034 does have the error.
Again, this 9034 environment is clean with nothing other than Clarion installed.

I’m not sure this is worth pursing any further, even though I’d really like to be able to generate a C11 and C6 version of the program from the same source for testing purposes.

1 Like

This might be more bleeding edge than you want to go, but when I was trying to use C55 compiler/linker, I was having a different issue. But the solution that Alexey suggested for me on the PTSS system might be something you could get away with for your problem.

He suggested replacing the C55 linker with one from C6.

So if you can do that, maybe it’s feasible between versions of C6, like maybe the 6.3 linker?

It definitely helped on my C55 app.

In the C11 Project window check that more modern features are turned Off like DEP and Dynamic Base.

Also try… Open the C6 Linker Target.LNK file in Note Pad and compare it to the one from the old C6 build to see if something odd is added.

Hi Richard:
I found a clue (official forum) that may be useful to you.

softvelocity.public.clarion6
Link error: Directive must have parameters


All those statemsnts (CODE, DATA etc) are from a 16-bit .EXP file
Did you change from 16bit to 32bit sometime in the past?


Hi Roland,

Thanks for the info.
I don’t think that is the case here. I created a brand new all source project (just one Hello World .clw) and it has the same issue. It was 32-bit from the get-go.
This error only generates this error in version 9034.

Thanks everyone for the suggestions.
I haven’t had a chance to get back to this project yet.
I do think the problem is that the .LNK file is not getting created at all with version 6.1 9034.
Not sure when I’m going to get back to this. Maybe next week some time.
I’ll report back what I find. I’m thinking some along the lines of what Jeff suggested. Replacing the some of the DLLs from the C 6.1 Gold version might resolve the problem.

Hi Rick,
Pardon me for stating the obvious: Why not just go straight to C11 rather than muck with C6? If that’s where you intend to end up, I don’t see the advantage of dealing with C6 at all. I tried that, although it was in a much earlier version of the new IDE, and decided it wasn’t worth the effort.

Hi Arnor,

In my past conversions from Clarion 6.x to C10/C11, etc. I was able to generate both a C6 and C11 version of the executables from the same source by using the C11vC6 method for creating the C6 version. This was nice for the client because they could run the versions side by side while testing for acceptance.
I was just hoping to do the same, but I agree that it is quickly becoming a pain that I’m not sure it is worth.

1 Like