Generating C5 App in Clarion 11 gets Error: No Window Defined! - #SEQ Attribute is Incorrect

Hi,

We are trying to open App file in Clarion11. This App file was created in clarion5 version. We are getting the below error while generating the .App file. Please suggest how to proceed on this.

As the error says each Procedure listed in the errors (e.g. AddUpdateTisMapping, BulkAddJobVarReference) does not have a Window (“Error: No Window Defined!”) so you have to:

  1. Open each Procedure
  2. Click the Window button
  3. Pick a Window type … probably a Progress **

Edit 5/30/23 the guess it was Report or Progress was wrong. See below it seems the Window had a bad #SEQ() so did not generate.


** (wrong) Maybe these are ABC Process or Report Templates? In C5 the Progress Window was generated, you could not change it. Now you can change the Window using Designer.


From LibSrc \ Defaults.clw this is one of the Progress windows you can choose from the Popup that shows when you click the Procedure Window button.

!!> Progress Window
ProgressWindow WINDOW('Progress...'),AT(,,142,59),FONT('Microsoft Sans Serif', 8),CENTER,TIMER(1),GRAY,DOUBLE
       PROGRESS,USE(Progress:Thermometer),AT(15,15,111,12),RANGE(0,100),#ORIG(Progress:Thermometer)
       STRING(''),AT(0,3,141,10),USE(?Progress:UserString),CENTER,#ORIG(?Progress:UserString)
       STRING(''),AT(0,30,141,10),USE(?Progress:PctText),CENTER,#ORIG(?Progress:PctText)
       BUTTON('Cancel'),AT(45,42,50,15),USE(?Progress:Cancel),#ORIG(?Progress:Cancel)
     END

Procedure name is in the Error list. You can use the buttons to Select All and Copy that list to the clipboard then paste it into Notepad. So you will have the names to copy then paste into the Locator.

2 Likes

Hi @CarlBarnes

Thanks for the assistance. I opened the window procedure, it shows error in the ‘#SEQ’ keyword. Below is the error attached. I tried remove this ‘#SEQ’ but the error was not resolved. Can you please help on how to resolve this error. Thanks in advance.

This error means that the link between Cancel button and the CancelButton #CONTROL template has been lost. I guess, you just opened the C5 APP in C11. The format of APP and TRF files was changed since C7. The new format allows AppGen to perform more rigorous checking of content consistency than the old one. So, probably, C5 APP had internal problems which have not been detected in C5.

If you still have the original (unchanged) C5 APP and C5 installed, try to export APP to TXA and then import that TXA in C11. Otherwise, you need remove controls in WINDOWs declarations with the error like one shown in your screenshot and re-populate orphaned #CONTROL templates.

1 Like

You can probably find the correct #SEQ(?) Number by exporting to TXA then opening the TXA in the Editor and finding the [ADDITION] for that control and it’s INSTRANCE #.

As an example lets say the below Close button #SEQ(3) has the problem in procedure TwoFABrowse:

You can either do a Selective Export to TXA (Application menu) so you have 1 Procedure in the TXA. Do that for your first few fixes. With 91 errors I would Export the entire APP (Export App to Text) then search for “NAME Procedure” so you find something like below:

image

The #SEQ links to an [ADDITION] so search for [ADDITION] until you find the one that looks right e.g. below Name as “CloseButton” is obvious. The “INSTANCE #” is the #SEQ(#).

Note you will find the [WINDOW] in the TXA also so you can search for something unique on that. The Window comes last so scroll up to review [ADDITION]'s.

In the Window … Editor change the #SEQ to the INSTANCE #. Also remove the “!!> ERROR” line. Save and see if it works. I have seen this and done this myself in conversions from C5.

2 Likes

Thank you @CarlBarnes. This error has been resolved now. Now the application has been generated. After opening the application I’m getting the ‘Access Violation’ error(Attached below). Can you please help on how to overcome this error.

Hi,

For starters you should have a look at this post How to improve the Call Stack when your program GPFs to show Procedure Names - ide / Tips - ClarionHub

Following the steps in that post, then you will get more information about where the error is occurring in your application.

Mark

1 Like

8 as a value of the parameter for the C0000005 exception means that there was an attempt to execute code in the memory segment having no the PAGE_EXECUTE attribute. The second exception parameter and (if 1st parameter is 8) the value of the EIP register are equal to address where violation occurred. The value 54H can be result of the returning from a function declared with incorrect calling convention.

Perhaps it lacks on Project / project settings / generate / conditional symbols:

ABCDllMode=>0;ABCLinkMode=>1

or others related to 3rd party code

Hi,

I had enabled the debug session and the error information is now showing in the screen. Below is the error screenshot. The information available in the error refers to the filename & line number or it referring to some other information? Please assist on this.

00397811  m3s001.clw:354   - THISWINDOW.OPEN
0038DED5  ABWINDOW.CLW:242 - WINDOWMANAGER.TAKEWINDOWEVENT
003973BA  m3s001.clw:446   - THISWINDOW.TAKEWINDOWEVENT
0038E0E3  ABWINDOW.CLW:721 - WINDOWMANAGER.TAKEEVENT
0038F426  ABWINDOW.CLW:785 - WINDOWMANAGER.ASK
00397C4D  m3s001.clw:274   - THISWINDOW.ASK
0038E9A9  ABWINDOW.CLW:944 - WINDOWMANAGER.RUN
00397D46  m3s001.clw:146   - MAIN
003EB751  m3s.clw:635 - _main

Every line for the call chain in the exception window (and in the log file generated on pressing the “Log Info” button) has one of following forms:

  1. <address> - address of the instruction next to call
  2. <address> <name of executable>:<offset> - same as in (1) + name of module (EXE or DLL) where <address> is located and offset of <address> in that executable image
  3. <address> <source>:<line number> - <function name> - <address> is the same as in (1), but it can be resolved to particular position in sources. <source>:<line number> are name of the source file and line number corresponding to next instruction after call; <function name> is the name of function where <address> is located (names of ROUTINEs are showing as R$<routine name>)

Form (1) - if address can be associated with none module in the process memory space;
Form (2) - if address can be associated with particular module but it has no debug information;
Form (3) - if address can be decoded using debug information of some module.

From your information follows that the call, causing exception is located on the line 354 or 353 of the m3s001.clw file. Because addresses in the call chain point to next instructions after call, the call instruction itself can be in previous statement than follows from the <source>:<line number> info.

1 Like

Just to make it clearer from what @also said, you need to look in the CLW (right-click on procedure then “Module Source File”) and look for the Line Number indicated.
Not the App Gen Embeditor where you normally edit errors in context (right-click on procedure then “Embeditor Source”).

Mark

image