Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought






RELEASE NOTES FOR VAX C V3.2







These notes contain information on  the  following  aspects  of  VAX C

V3.2:



      o  Installation



      o  Functional Enhancements



      o  Bug Fixes



      o  Documentation Errata



      o  Additions and Changes to Compiler Messages



      o  Restrictions and Known Bugs









1  INSTALLATION





This version of the  compiler  contains  License  Management  Facility

support.   The  compiler  cannot  be  run  unless  a  license has been

installed on the machine.



As of VMS V5.2, it  is  not  necessary  for  the  VAX  C  installation

procedure  to  install  versions of the PPLRTL.EXE, VAXCPAR.OLB or the

VMS Debugger for multiprocess debugging (DEBUG MP).   You  should  not

attempt  to  install VAX C V3.2 on a version of VMS prior to V5.2, due

to certain dependencies upon VMS 5.2.



This release of VAX C has an installation option  for  installing  the

DECwindows  Compiler  Interface for C.  Answer "Y" to this question if

you desire to be able to  compile  C  programs  using  the  DECwindows

FileView "Compile" verb.



For more information, see the VAX C Installation Guide.







2  FUNCTIONAL ENHANCEMENTS





The following is a list of new features implemented in VAX C V3.2:



      o  There is a new command line qualifier, /NAME which allows the

         user  to  control  the  case  sensitivity  of external names.

         Specifying /NAME=UPPERCASE will force all external  names  to

         be  converted  to uppercase.  /NAME=ASIS will retain the case

         sensitivity of  all  external  names.   /NAME=LOWERCASE  will

         force  all  external names to be converted to lowercase.  The






















































                                                                Page 2





         default is /NAME=UPPERCASE.



         The format is as follows:





                CC/NAME={UPPERCASE,LOWERCASE,AS_IS}







The following is a list of new features implemented in VAX C V3.1:



      o  The DECwindows Compiler Interface (DWCI) is now supported  by

         VAX C.  See the next section for details.



      o  VAX C now supports the VAXset Program Design Facility  (PDF).

         See below for details.



      o  VAX C now supports SCA V2.0.  Old .ANA files will still  load

         into  SCA  V2.0, however .ANA files generated with VAX C V3.1

         or VAX  C  V3.2  will  not  load  into  SCA  V1.0  libraries.

         Therefore,  SCA  V2.0  is  required  in  order to utilize the

         output of the /ANALYSIS_DATA qualifier.



      o  The compiler will  check  that  pointer  arguments  have  the

         correct  type  if  a  function  prototype is in scope for the
         function called and the /STANDARD=PORTABLE qualifier is used.

         This  feature was added to VAX C V3.0, but inadvertently left

         out of the release notes.



      o  To  facilitate  nesting   of   include   files,   a   #ifndef

         __{h-filename}loaded  directive has been added to the include

         files  shipped  with  VAX C.   This  directive  will  prevent

         re-inclusion  of  any .h file that has already been included,

         and will prevent a cascade of error messages  resulting  from

         redefinitions.   In some cases, the .h file already contained

         such a directive, but the directive was changed very slightly

         so  that  all  .h  files  uses  a  similar #ifndef statement.

         STDIO.H is one example of a file which changed.



      o  The RMS .h  files  have  been  updated.   See  the  following

         section.









2.1  DECwindows FileView Compile Verb Support





Beginning with version  3.1  VAX C  provides  an  enhancement  to  the

DECwindows  FileView  "Compile"  verb support in which compile command

options can be selected using a window interface instead of the  usual

DCL  qualifiers.   The  compiler  defaults  are  used  as  the initial

configuration; new configurations with different settings  of  options
can be given names, saved, and used for later compilations.























































                                                                Page 3





The new interface is used automatically  when  you  use  the  FileView

"Compile"  verb to compile a source file that has a file type of ".C".

More information is available by using the Help menu in the "Compile a

C Program" dialog box.



The  DECwindows  Compiler  Interface  (DWCI)  for  VAX C  is  entirely

separate  from  the  compiler  image and is contained in the following

files:



     SYS$COMMON:[VUE$LIBRARY.USER]CC$DWCI.EXE

     SYS$COMMON:[VUE$LIBRARY.USER]CC$DWCI.UID

     SYS$COMMON:[SYSHLP]CC$DWCI.HLB







2.2  Support for the VAXset Program Design Facility





Beginning with verision 3.1 VAX C  contains  support  for  the  VAXset

Program Design Facility (PDF).  In order to use PDF, you must have SCA

V2.0 and LSE V3.0 installed on your system.  PDF allows you to  create

detailed  designs using the C programming language by embedding design

information in comments, and by  writing  algorithms  with  pseudocode

placeholders.   Once  written,  designs can be processed and analyzed,

producing design reports.  These designs can evolve  into  the  actual
implementation,  while  preserving design information within comments.

In order to use the PDF features of SCA and  LSE,  you  must  use  the

/DESIGN qualifier when you compile your source code.







2.2.1  The /DESIGN qualifier -



You can now specify the /DESIGN qualifier on the CC  command  line  to

determine  whether the compiler processes the input file as a detailed

design.  If you specify the /DESIGN qualifier, the  compiler  modifies

its parsing and semantics according to keywords you supply.  /NODESIGN

is the default.



The format is as follows:



        CC/[NO]DESIGN[=(keyword[,...])]



Valid keywords for the /DESIGN qualifier are:



        COMMENTS (D)

        NOCOMMENTS



Determines whether the compiler searches inside comments  for  program

design  information,  according to rules for associating comments with

declarations, described in the Guide to VAX Language-Sensitive  Editor

and  VAX  Source  Code  Analyzer.   The  compiler  reports  any errors

detected at compile time.


Specifying  NOCOMMENTS  instructs  the  compiler  to  ignore  comments





















































                                                                Page 4





completely.



        PLACEHOLDERS (D)

        NOPLACEHOLDERS



Determines  whether  the  compiler   treats   LSE   placeholders   (in

well-defined  contexts  -  see below) as valid program syntax.  If you

specify NOPLACEHOLDERS, the compiler treats  placeholders  as  invalid

syntax and reports an error if it finds any placeholders.



Specifying the /DESIGN qualifier without supplying any keywords is the

same as specifying the following:



        /DESIGN=(COMMENTS,PLACEHOLDERS)



If you specify the /NODESIGN qualifier, or accept it as  the  default,

the compiler processes the input file using normal syntax and semantic

rules for the language.







2.2.1.1  Examples -



        $ CC/DESIGN=NOCOMMENTS


Instructs the compiler to treat  LSE  placeholders  as  valid  program

syntax  but  to  ignore  program  design information inside of program

comments.



        $ CC/DESIGN=(NOPLACEHOLDERS)



Instructs the compiler to report as illegal  syntax  any  placeholders

found.  The compiler looks for design information inside of comments.



        $ CC/ANALYSIS_DATA/DESIGN



Instructs the compiler to report design information in the .ANA  file.

For  more  information  see the Guide to VAX Language-Sensitive Editor

and VAX Source Code Analyzer.







2.2.2  VAX C Support for PDF pseudocode placeholders -



VAX C now contains support for recognizing occurrences of  pseudocode.

Pseudocode  is  descriptive  text  enclosed within special delimiters.

Its purpose is to express algorithms  at  a  level  above  the  actual

implementation code.  In effect, it is a placeholder for code that has

not yet been written.



VAX C recognizes such placeholders in any of the following forms:



        Placeholder type        Format


        LSE Optional            [@text@]





















































                                                                Page 5





        LSE Optional list       [@text@]...

        LSE Required            {@text@}

        LSE Required list       {@text@}...

        PDF pseudocode          <@text@>

        PDF pseudocode          «text»



The second form of the PDF pseudocode placeholder uses angle quotation

marks as its delimiters.  These are 8-bit characters whose ASCII codes

are decimal 171 (left) and 187 (right).







2.2.2.1  Contexts in which placeholders may appear -



The VAX C compiler will accept a placeholder  in  almost  any  context

where  an  identifier may appear, and thus, wherever an expression may

be used.  Furthermore, since a C statement can consist  solely  of  an

expression,  the  compiler  will  also accept a placeholder wherever a

statement  may  appear.   Note,  however,  that  the  semicolon   that

terminates  such  statements  must  still  be  present  following  the

placeholder.





Within  declarations,  the  compiler  will  accept   placeholders   as

declarators,  tags, enumerators, and initializers.  A placeholder will
also be accepted in the context of  a  complete  external  declaration

(i.e.  a declaration occurring outside of any function definition), or

a complete structure or union member declaration.   Again,  note  that

the  terminating  semicolon  must  still be specified following such a

placeholder.  A placeholder can NOT appear in place  of  the  function

name  in  a  function  definition; this will result in the INVFUNCDECL

error message.





Finally,  the  compiler  will  accept  placeholders  anywhere   within

preprocessor   directives.   In  general,  placeholders  appearing  as

optional parameters in preprocessor directives will simply be ignored;

placeholders  appearing  as  required parameters will cause the entire

directive to be ignored.  If a placeholder appears in the  context  of

the  expression  in  a #if or #elif directive, the placeholder will be

treated as if it were the constant zero.  Similarly, if it appears  as

the operand of the `defined' operator, or as the parameter in a #ifdef

or #ifndef directive, the placeholder will be treated as undefined.



Placeholders will NOT  be  recognized  within  the  text  of  a  macro

definition in a #define directive;  these will only materialize if the

macro is later expanded.





The presence of placeholders in any of the  allowed  contexts  usually

will  not elicit any diagnostics.  This is accomplished at the expense

of somewhat reduced semantics checking, and may mask the  presence  of

diagnostics that would otherwise be issued.  Placeholders appearing in
contexts in which they are not allowed will elicit appropriate  syntax

errors.





















































                                                                Page 6





VAX C will recognize but ignore nested placeholders,  and  will  treat

consecutive  placeholders (without intervening punctuation) as if they

were  a  single  placeholder.   The  compiler   will   NOT   recognize

placeholders   within   comments,   character   constants,  or  string

constants.  Note, however, that a placeholder appearing between  quote

marks  in  a  #include directive WILL be recognized, since this use of

quote marks does not denote a string constant.





Note also that placeholders will be recognized as such  regardless  of

whether   /DESIGN=PLACEHOLDERS   or  /DESIGN=NOPLACEHOLDERS  has  been

specified.  In the latter case,  however,  an  Error-level  diagnostic

message will be issued against any placeholder encountered.







2.2.2.2  Contexts in which placeholders may not appear -



Some users may want to use placeholders in the context of  a  complete

declaration  inside  a  block.  In C, if declarations are present in a

block, they must precede any executable statements in the  block.   In

this  context,  declarations  are recognized as such only by virtue of

starting with a reserved word that indicates a storage class  or  data

type, or with a typedef-name.  Anything else (including a placeholder)

is interpreted as the beginning of an executable statement.


Thus, any placeholders that are intended to stand for declarations  in

this  context  must  follow  all  other  real declarations that may be

present in the same context, or  the  compiler  will  issue  a  syntax

error.   Of  course,  such  placeholders  will  be  interpreted by the

compiler as virtual statements (and will actually be ignored) so  this

should not constitute a significant restriction.



There may also be  situations  where  a  user  might  want  to  use  a

placeholder in the context of one or more of the storage class or data

type specifiers in a declaration.  These specifiers are  all  reserved

words in C, however, and allowing placeholders in these contexts would

render the VAX C grammar ambiguous.  Thus, any use of a placeholder in

such contexts will elicit a syntax error.







2.2.2.3  Examples -



The following examples show some valid contexts  for  placeholders  in

VAX C.



        #module {@identifier@} "{@31_char_string@}"



        # <@some preprocessor directive@>



        #include <{@file_spec_file@}>

        #include "{@file_spec_string@}"
        #include {@include_module_name@}























































                                                                Page 7





        #define {@identifier@}[@(parameter list)@]  {@token_string@}

        #define {@identifier@}([@parameter@]...)    {@token_string@}



        if {@constant_expression@}

        #elif defined {@identifier@}

        #else

        #endif



        extern int      {@declarator@}...;



        [@external_definition@]...;



        main ([@parameters@]...)

        {

                static int      x = {@init_constant_expression@},

                                y [[@constant_expression@]],

                                [@init_declarator@]...;

                int     f ([@parameters@]...),

                        g (int, <@parameter2@>, float);

                [@block_decl@]...;



                <@statement@>;

                f ([@parameters@]...);

                g (0, [@parameter2@], 7.4);


                if ({@expression@})

                        {@statement@};

                [@else if (expression) statement@];

                [@else statement@];



                while ({@expression@})

                        {@statement@};



                do

                        <@statement@>;

                while ({@expression@});



                for ([@expression@];  [@expression@];  [@expression@])

                        <@statement@>;



                switch ({@expression@})

                {

                {@case constant_expression: statement@}...;

                case {@constant_expression@}:

                [@case constant_expression:@]...;

                        {@statement@}...;

                [@default: statement@];

                }

                return [@expression@];

        }







                                                                Page 8





2.2.3  VAX C Support for PDF Comment Processing -



VAX C now contains support for PDF comment processing.   The  comments

in  your  source  code  are analyzed for the presence of comment tags,

such  as  FACILITY,  ABSTRACT,  and  AUTHORS  in  the  example  below.

Information about the presence of these tags and the descriptions that

follow them is output to the .ANA file if the /ANALYSIS_DATA qualifier

is  used.   Refer  to  the documentation for LSE V3.0 and SCA V2.0 for

information on how to perform queries on the comments in  your  source

code.



        /*

        **++

        **  FACILITY:

        **

        **      Test System

        **

        **  ABSTRACT:

        **

        **      This module belongs to the test system for XYZ.

        **

        **  AUTHORS:

        **

        **      John Q. Smith

        **
        **--

        */



PDF comment processing in VAX C is performed only for comments  within

declaration sections of your program.  Any comments which occur within

an executable portion of your program will not be processed.







2.3  RMS Header Files





The RMS header files have been updated to the latest version  of  VMS.

The files that have been updated are:



        FAB.H           NAM.H           RAB.H

        XAB.H



Each different type of XAB is now defined  in  its  own  header  file.

However,  XAB.H  #includes  all  of the separate XAB definition files.

The new header files are:



        XABALLDEF.H     XABCXFDEF.H     XABCXRDEF.H

        XABDATDEF.H     XABDEF.H        XABFHCDEF.H

        XABITMDEF.H     XABJNLDEF.H     XABKEYDEF.H

        XABPRODEF.H     XABRDTDEF.H     XABRUDEF.H

        XABSUMDEF.H     XABTRMDEF.H


























































                                                                Page 9





2.4  Support for mixing /GFLOAT and /NOGFLOAT modules





Since you should now be using V5.2 or later of VMS, you  can  now  mix

DFLOAT  and  GFLOAT modules in a single program.  In particular, it is

possible to link modules using GFLOAT with the DECWINDOWS utilities.



In order to mix DFLOAT and GFLOAT modules, all modules which are to be

compiled  with  /GFLOAT  should  include  the  header  files  STDIO.H,

STDLIB.H, MATH.H, and UNIXLIB.H.  Also, you should  compile  all  such

modules  with  the additional qualifier /DEFINE="CC$mixedfloat".  Note

that the quotation  marks  and  alphabetic  case  are  significant  in

"CC$mixedfloat".



Modules compiled in this way may then be linked against VAXCRTL alone,

and  should  not  be  linked  against  VAXCRTLG.   If you link against

VAXCRTLG.EXE, you cannot safely  link  against  VAXCRTL.EXE.   In  the

past,  that  has  meant that GFLOAT and DFLOAT could not be mixed in a

single program.  The method described here allows the mixing of GFLOAT

and  DFLOAT  only  if  you  link  all  modules  against VAXCRTL.EXE or

VAXCRTL.OLB and not against VAXCRTLG.EXE or VAXCRTLG.OLB.



If you are linking against VAXCRTL.OLB, you will find a  reduction  in

executable  size  and  a  slight  performance  improvement if you also

compile all  of  your  DFLOAT  modules  according  to  the  guidelines
described above for GFLOAT modules.



Note also that there  is  still  no  way  to  mix  DFLOAT  and  GFLOAT

operations  within  a  single module.  This change only allows modules

compiled with /DFLOAT to be mixed with modules compiled with /GFLOAT.









3  BUG FIXES





VAX C V3.1 and V3.2 contain several bug fixes and SPR fixes.   Details

of  changes  made as a result of SPRs since V3.0 of VAX C can be found

in the file SYS$LIBRARY:VAXCSPR.DAT.



Several inlining bugs present in VAX C V3.0 are fixed.



VAX C V3.0 used large  amounts  of  memory  when  the  source  program

contained many macro expansions.  This problem has been fixed in V3.1.

However you may continue to notice that the version  3  compilers  use

more  memory than the version 2.4 compiler for certain programs.  This

increased memory usage is a side effect of a performance  optimization

called  inlining which was added at V3.0.  The inline optimization may

be turned off with the command qualifier /OPTIMIZE=NOINLINE.



The unmoved_src argument to the _MOVC5 builtin  is  now  optional.   A

last  minute  bug  in  VAX C  V3.0  caused  the compiler previously to
require that argument.  This problem is fixed in V3.1.























































                                                               Page 10





The value of RANDMAX in the header file STDLIB.H was incorrect due  to

a  typographical error.  The corrected value is 2147483647, or 2**31 -

1.  This problem is fixed in V3.1



The haddr field of the hostent structure in the  header  file  netdb.h

has  been  changed to be char **haddrlist to conform to the actual use

of the field.  You can still use  haddr,  though,  since  netdb.h  now

defines  haddr  as a macro for haddrlist[0].  This problem is fixed in

V3.1.



The include file tcp.h was omitted from the  release  3.0  of  VAX  C.

This  header  file  is  needed  for use with the VMS/Ultrix Connection

product.  It is included in version 3.1.



In version 3.1 header files now contain a  macro  which  will  prevent

reloading of an include file which has already been included.



The compiler was sometimes bugchecking while processing large  macros.

This problem has been fixed in V3.2.



The compiler would sometimes go into an infinite loop when  processing

old-style  parameters  declared to be an array.  This problem has been

fixed in V3.2.



The following code would incorrectly result in the error that "bar" is
undeclared at the line where "bar" is assigned to "bar2".



typedef int (*template)( int bar );



int foo( int bar )



{



int bar2;



template t;



bar2 = bar;



} This problem is fixed in V3.2.



If the command line qualifier /OPTIMIZE=NOI  was  specified,  inlining

was not disabled.  This problem is fixed in v3.2.



In cases where the branch  displacement  for  the  _BBCCI  and  _BBSSI

builtins  was  greater  than  a  byte,  the  builtin  instruction  was

incorrectly replaced by a bogus bsbb instruction.  This  is  fixed  in

v3.2.



Too much stack space was allocated by the  compiler  when  calls  were

made  to functions that return a value, but the return value was never

referenced.  This is fixed in v3.2.


When the _FFS or _FFS builtin was used in a conditional statement, the

the  builtin  status  value  was  not correctly assigned to the status





















































                                                               Page 11





variable.  This is fixed in v3.2.





The following problems related to  the  /ANALYSIS_DATA  qualifier  are

fixed in V3.2:



The reference  class  (store,  fetch,  call,  address-of)  of  members

referenced  was  incorrectly  propagated to the the structure or union

that the member belonged to.  For instance, for the code sample:



(*(x.y))()



both x and y were given the reference class of "call".   This  problem

may result in errors during the SCA INSPECT command.



Casts to pointers to functions resulted in invalid ANA files.



When a prototype was in scope that declared a parameter to be of  type

char,  and  the  actual  argument was a char, the argument was instead

described to be of type int.  The same problem was existed for  floats

and doubles.



When a  header  file  was  included  multiple  times,  the  inclusions

subsequent to the first were not reported in the ANA file.


When a  include construct was the last construct of an  include  file,

the  resulting  ANA file was characterized as having the "Old ANA File

Format".



A cast to a pointer to an undeclared struct or union would result in a

compiler bugcheck.



If the return value of a function is a pointer to an undeclared struct

or union, the compiler would bugcheck.



The function prototype and function definition for a  static  function

were not reported as two declarations of the same symbol, resulting in

two symbols found for queries such as "FIND <staticfunction>".



The following problems related to  the  /DESIGN  qualifier  have  been

fixed in V3.2:



When /DESIGN=COMMENTS was specified on sources where a comment was the

last  construct  of  an   include  file,  the  resulting  ANA file was

characterized as having the "Old ANA File Format".



For  a  declaration  of   the   form   "<storageclass>   <typedefname>

<declarator>;"  the  lexical  range for the declaration would begin at

<typedefname> instead  of  at  <storageclass>,  providing  potentially

erroneous comment association when /DESIGN=COMMENTS was used.



The source location marked as the beginning of the executable  portion

of  a  function  body  was  the  semicolon  at  the  end  of  the last
declaration.  This resulted in  the  body  portion  of  PDF  INTERNALS

REPORTS  beginning  with  the  last  declaration, instead of the first





















































                                                               Page 12





executable statement.



When /DESIGN=COMMENTS  was  specified  on  sources  that  contained  a

comment  between  a  reference  to  a  macro  and  its  arguments, the

DESCOMSPR error message would be generated.



When /DESIGN=COMMENTS  was  specified  on  sources  that  contained  a

comment  within  the  test expression of a if directive, the DESCOMSPR

error message would be generated.









4  Documentation Errata





This section contains information on errors  and  missing  information

from the manuals.







4.1  Guide to VAX C





Chapter 3 specifies that when you are compiling a  VAX  C  compilation
unit  containing  the main function, you must link the program against

the VAXCPAR.OLB object module library.  As  of  VMS  V5.2,  it  is  no

longer necessary to link against VAXCPAR.OLB.



In section 9.8.3, the description of  the  the  _align  storage  class

modifier  does  not  document the restrictions on its use.  The _align

storage-class modifier  may  not  be  used  in  conjunction  with  the

storage-classes register and globalref, or in a parameter declaration.

It also may not be used with  the  const  data-type  modifier  or  the

noshare  storage-class  modifier.   If  _align  is  used with the auto

storage class, then the alignment  boundary  cannot  be  greater  than

longword.



In section 11.2.14, the description of the  "unmoved_src"  operand  of

the  _MOVC5 builtin says that it "Is a pointer to a short integer..."

The description should say that it "Is a pointer to an unsigned  short

integer..."   The  function  prototypes  at  the  start  of the _MOVC5

section do show the correct type for this argument.



In Appendix B, the text of the UNSUPPORTOP  informational  message  is

wrong.  The correct text is:



        Variable "****" has post/pre increment/decrement operator, which

        inhibited decomposition at loop control variable "****".



In Appendix B, the MISWIDETYPE  message  is  missing.   The  following

description should be included:


        MISWIDETYPE, The prototype for this function does not specify

                     the default widened type for the parameter "****".





















































                                                               Page 13







        Error.  You have coded an "old-style" function definition for

        which an earlier prototype declaration is in scope, and the data

        type specified in the prototype corresponding to the indicated

        parameter does not match the widened type of the parameter.

        For example:



                int f(float);

                    :

                int f(x)

                float x;

                {

                    :

                }



        The prototype should specify the data type "double", even though

        the declaration of "x" specifies "float".  The "old-style" function

        definition still expects its argument to have been promoted to

        "double", and will convert it back to "float" upon accessing the

        parameter "x".



        User Action.  Either specify the correct widened data type in the

        prototype declaration, or use a prototype form of the definition.








4.2  VAX C Run-time Library Reference manual.







The index shipped with Version 3.1 and Version 3.2 of VAX  C  contains

errors.   The  page  numbers  listed  for  certain  functions  may  be

incorrect.  Since the functions are listed in alphabetical  order  you

may  find it more helpful to search for things alphabetically, than to

use the page numbers listed in the index.



On the reference page for VAXC$ESTABLISH, the format should read:



        void VAXC$ESTABLISH (int (*exception_handler)( void *sigarr,

                                void *mecharr));



On the reference pages for brk, chdir, chmod, chown, ctermid, cuserid,

mkdir, nice, sbrk, and umask, under format, the line



        #include stdlib



should be removed.



On the reference pages for fstat and stat, under format, the lines



        #include stat

        #include statbuf


should be changed to:





















































                                                               Page 14





        #include unixio

        #include stat



On the reference pages for rand and srand, under format, the line



        #include math



should be changed to:



        #include stdlib







5  Additions and Changes to Compiler Diagnostic Messages





The severity of the UNRECCHAR diagnostic has been changed from Warning

to Error.



The following messages are new in V3.1:





        DEFAULTLONG, Alignment boundary for an auto variable cannot be

                     greater than longword; boundary defaulted to longword.


        Warning.  You have specified an alignment greater than longword

        for an automatic variable.



        User Action.  Choose an alignment boundary less than or equal to

        longword for the automatic variable.





        DESCOMABORT, /DESIGN=COMMENTS processing has been aborted.



        Warning.  An error has occurred during /DESIGN=COMMENTS

        processing.  /DESIGN=COMMENTS processing cannot continue.



        User Action.  Correct the problem described in the error message

        that follows the DESCOMABORT message.





        DESCOMERR, Error in processing design information.



        Warning.  An error has been found while processing the contents of

        a comment.



        User Action.  Correct the problem described in the error message

        that follows the DESCOMERR message.





        DESCOMSEVERR, A serious error has occurred processing /DESIGN=COMMENTS.

                      Please submit an SPR.


        Warning.  A serious but recoverable error has occurred during

        /DESIGN=COMMENTS processing.  Comment processing will continue.





















































                                                               Page 15







        User Action.  Submit an SPR which includes the source code that

        produces this error, and the version of LSE and SCA being used.





        DESCOMSPR, /DESIGN=COMMENTS processing has been aborted due to

                   an internal error.  Please submit an SPR.



        Warning.  An internal error has occurred during /DESIGN=COMMENTS

        processing.  Comment processing cannot continue.



        User Action.  Submit an SPR which includes the source code that

        produces this error, and the version of LSE and SCA being used.





        DESIGNTOOOLD, /DESIGN=COMMENTS processing routines are too old for

                      the compiler.  Please install a new version of LSE.



        Warning.  VAX C requires a newer version of the /DESIGN=COMMENTS

        processing routines.



        User Action.  Install a more recent version of LSE.





        INVPTRCVT, Invalid implicit conversion between a pointer and a
                   non-pointer type.



        Warning.  An implicit conversion (caused by assignment or by

        function prototype argument conversion) converted between

        a pointer and an integer too small to hold the pointer or

        between a pointer and a floating point number.



        User Action.  Verify that the assignment is being made to

        the correct variable or that the correct function argument

        is being passed.  If the suspicious operation flagged by

        this diagnostic really was intended, use an explicit cast

        to avoid the implied conversion.





        NESTEDDUPTAG, Duplicate definition of tag "****" is nested within

                      its definition.



        Error.  You have attempted to define a tag within a structure or

        union which also defines the same tag.



        User Action.  Use a different name for the nested tag.





        NONTERMPLACE, Nonterminated placeholder.



        Warning.  You have coded a placeholder that was not properly

        terminated before the end of the source line.


        User Action.  Make sure that the ending delimiter of the placeholder

        is present, and that it properly matches the opening delimiter.





















































                                                               Page 16









        PLACENOCONT, Continuation of placeholders is not allowed.



        Warning.  You have attempted to continue a placeholder onto the

        next source line, using the backslash-newline escape sequence.



        User Action.  Make sure that all placeholders are complete on

        one source line.  Break up long placeholders into a sequence of

        shorter placeholders;  the compiler will treat such a sequence

        as if it were a single placeholder.





        PLACENODESIGN, Placeholders are invalid without /DESIGN=PLACEHOLDERS.



        Error.  A placeholder has been encountered in the source, but you

        have not specified /DESIGN=PLACEHOLDERS on the command line.



        User Action.  Remove the placeholder or replace it with source code,

        or specify /DESIGN=PLACEHOLDERS.





        PLACENOOBJ, Placeholder(s) detected;  no object file generated.



        Warning.  You have specified both /DESIGN=PLACEHOLDERS and /OBJECT,
        and one or more placeholders appear in the source.  The presence of

        placeholders prevents the generation of object code.



        User Action.  Specify /NOOBJECT along with /DESIGN=PLACEHOLDERS,

        or remove or replace all placeholders.





        PLACENOREP, Repetition of pseudocode placeholders is not allowed.



        Warning.  You have terminated a pseudocode placeholder with an

        ellipsis.



        User Action.  Remove the ellipsis, or change the placeholder

        delimiters to indicate a list-type placeholder.





        PLACETOOLONG, Placeholder exceeds 255 characters.



        Warning.  An excessively lengthy placeholder has been encountered.



        User Action.  Break up the placeholder into a sequence of

        shorter placeholders.  The compiler will treat such a sequence

        as if it were a single placeholder.







6  RESTRICTIONS AND KNOWN BUGS




The following are restrictions in V3.1:





















































                                                               Page 17





      o  As of V3.1, the only supported means of accessing the environ

         variable  is  by  first  including  UNIXLIB.H, rather than by

         simply  declaring  char  **environ,  which  is  the   current

         practice.



The following are known bugs in V3.2:



      o  When using the /ANALYSIS_DATA qualifier,  the  compiler  will

         bugcheck  on the definition of an enum within the declaration

         of a struct or union.  As a workaround, the  enum  should  be

         defined   outside   of  the  stuct  or  union,  and  the  tag

         refereneced within the struct or union declaration.



      o  If multiple compilation units are specified  on  the  command

         line   along  with  the  /DESIGN  qualifier,  the  ANA  files

         generated for the compilation units subsequent to  the  first

         one will be invalid.



      o  For declarations that reference  typedefs  for  simple  types

         such as "int", PDF REPORTS will indicate that the type of the

         variable is "int" instead of reporting the typedef name.



      o  A bugcheck may occur when  a  function  is  inlined  that  is

         defined as returning a value and is then declared as void.




The following are known bugs in V3.1 and V3.2:



      o  When executing a  parallel  processing  application  multiple

         times  in  succession,  there  should  be a delay between the

         executions.  This is needed to  allow  VMS  to  complete  the

         unmapping of any global sections used by an application.  The

         unmapping is not completed when the image  is  executed.   If

         there  is  not  enough  time  between  executions of parallel

         applications, there  may  not  be  enough  global  resources,

         global  pages,  and/or  global sections available to properly

         execute additional invocations of parallel applications.



      o  Images using the VAX C parallel processing support cannot run

         from a detached process where there is no CLI.



      o  There is  a  known  interaction  problem  between  the  VAX C

         parallel   processing   support,   routines   compiled   with

         /PARALLEL, and the  run-time  library  PPL_$  routines.   The

         result  of this problem is that the VAX C parallel processing

         application completes, but the subprocesses that are  created

         during its execution are not properly deleted and are left in

         a spin loop, using up CPU time.  These subprocesses  must  be

         stopped  by  the  user.   The  easiest way to stop them is to

         either log out of the  account  that  executed  the  parallel

         application  or  to  explicitly  stop them by identifying the

         leftover  subprocesses  by  using  the   DCL   command   SHOW

         PROCESS/SUBPROCESSES  and  using the DCL STOP command on each
         of these subprocesses.























































                                                               Page 18





      o  PPL_$INITIALIZE cannot be called from within a  C  decomposed

         program.   When the C main program is compiled with /PARALLEL

         the routine PPL_$INITIALIZE is automatically called to set up

         the  parallel  processing environment for the parallel memory

         allocation routines.



      o  The SCA command EXTRACT MODULE  will  not  work  properly  on

         modules  compiled  by  VAX  C  when the source for the module

         #include's files from a text library.  The output  from  this

         command  will  not go to an .ANA file with the expected name,

         but will instead output to a file with the name of some  file

         associated  with the module's compilation, such as an include

         file or text library.



      o  The compiler may bugcheck  when  the  _FFS  builtin  is  used

         within a loop.



      o  When using the /ANALYSIS_DATA qualifier,  the  compiler  will

         bugcheck  on the definition of an enum within the declaration

         of a struct or union.  As a workaround, the  enum  should  be

         defined   outside  of  the  struct  or  union,  and  the  tag

         referenced within the struct or union declaration.



      o  If multiple compilation units are specified  on  the  command

         line   along  with  the  /DESIGN  qualifier,  the  ANA  files
         generated for compilation units subsequent to the  first  one

         will  be  invalid.   This  problem  will be fixed in the next

         major release of LSE after V3.1.



Typewritten Software • bear@typewritten.org • Edmonds, WA 98026