Skip to content

Language Cleanup Build Notes

Obsolete Classes

  • Marked List, Grid, PrintDialog, and HelpSystem as obsolete.
  • Removed PrintDialog from the class palette, which means the following are removed: Grid, List, dbgrid, dbList, cMapiHandler, PrintDialog.
  • All example workspaces have their class palettes updated.

Fmac / Flex.cfl 19.1.106

Various Clean Ups

The mechanism for recognizing an obsolete class or global function/procedure/procedure-set is now the { obsolete=True } metatag.

Old commands moved to oldfmaccommands.pkg:

CLEAR_OPTIONOS$CALL
OUTCLOSE
OUTFILE
SET_OPTION
SETCHANGE
NETWARE_GET_TTS_FLAG
NETWARE_SET_TTS_FLAG
NETWARE_GET_AVAILABLE

Commands marked obsolete:

GET_DATE_ATTRIBUTE
SET_DATE_ATTRIBUTE
SET_DEFAULT_CALLTYPE
EXTERNAL_FUNCTION32
EXTERNAL_PROCEDURE32

Added compiler warning numbers as follows:

#REPLACE DFERR_COMP_WARNING_OBSOLETE_STRING_CMD       |CI4531 // pertaining to string commands
#REPLACE DFERR_COMP_WARNING_OBSOLETE_TYPE_CMD         |CI4532 // pertaining to type/end_type commands
#REPLACE DFERR_COMP_WARNING_OBSOLETE_CMD              |CI4533 // pertaining to a more generic obsolete command
#REPLACE DFERR_COMP_WARNING_OBSOLETE_GLOBAL_FUNCTION   |CI4534 // Global function is obsolete
#REPLACE DFERR_COMP_WARNING_OBSOLETE_TECHNIQUE        |CI4535 // Using some older technique
#REPLACE DFERR_COMP_WARNING_OBSOLETE_PACKAGE          |CI4536 // Package is obsolete, remove it if you can
#REPLACE DFERR_COMP_WARNING_OBSOLETE_CLASS            |CI4537 // Class is obsolete, remove it if you can
#REPLACE DFERR_COMP_WARNING_OBSOLETE_INDICATOR_USE    |CI4538 // Using indicators anywhere

Note that these have not yet been added to the error .dat file. When they are, the error messages should be left blank. All text comes from elsewhere.

The case command has (finally) been moved into fmac. Case.mac is now empty (with a warning saying you don’t need it).

Pkg

  • Various changes to support the FMAC warning changes.
  • Changes in DataDictionary and WebApp to use the changes in SetParentDDOSwitched and ParentDDOSwitched.
  • Addressed a variety of Todo items.

FMAC

  • Incremented cmd_system revision to match the runtime version.

Fmac / Flex.cfl 19.1.105

Changed how methods on the desktop are handled. Methods not marked global or desktop are now added to the Desktop class (and therefore the desktop object). Prior to this, these methods were added to cObject. This represents a behavior change, but the new behavior is exactly what people expect it to be.

This will require documentation changes – most of this will be simplifications.

Also, removed the warning that global functions should use expressions instead of the Get syntax. Either is now acceptable.

Fmac / Flex.cfl 19.1.104

  • Allows if/else/case command to break in the debugger. Requires dfcomp.dll 19.1.12.
  • Also made Memory command obsolete and raised a warning when setting webProperty=true meta.

The if/else/case Change

At DISD, some people requested warnings for If/else statements that didn't use begin/end blocks. While this is easy to do, it doesn't feel right. It’s pretty common for languages to support single-line and multi-line blocks. We've suggested using begin/end because the debugger doesn't handle this well. Rather than adding the warning, we've made the compiler more debug-friendly.

Consider:

If (exp) ;
    Send DoThis
Else ;
    Send DoThat

Until now, there was no way to break on the true and false blocks because this is treated as a single line. Now the compiler can detect this kind of structure, allowing you to place a breakpoint on the if line and the two Send lines. The other difference is multi-line statements now place their breakpoint on the first line and not the last, which makes more sense.

However, this still doesn't let you break on the true and false "bodies” when it is really a single line:

If (exp)  Send DoThis
Else Send DoThat

However, this structure will raise a compiler warning (actually two here), making it easy to change.