Part 4 266 Appendix 2 Number Message Text ansi strict warn 148use of incomplete struct/union/enum tag X "name" See line number file filename 149incomplete struct/union/enum tag in prototypeXX scope "name" 156operation/comparison of pointer to "int" andX pointer to "type" 159use of unary minus on unsigned valueXX 162non-ansi use of ellipsis punctuatorX XX 163initialization of auto struct, union, or XX array 164& applied to array XX 165use of narrow type in prototypeX 176implicitly promoted formal "name" conflicts X XX with prototype See line number file "filename" 178indirect call without indirection operator XX 179narrow type used in old-style definition XX 180no space between macro name and itsX XX replacement list 187negative value assigned to unsigned type XX 190#include ignored because header already X included See line number file "filename " 195nested comment detectedX 212item "name" already declared X See line number file "filename" 213empty argument to preprocessor macro X XX 220old-fashioned assignment operator XX 267 Appendix 3 Implementation-Defined Behavior 267 Introduction 268 F.3.1 Translation 268 F.3.2 Environment 268 F.3.3 Identifiers 269 F.3.4 Characters 269 F.3.5 Integers 270 F.3.6 Floating-Point 270 F.3.7 Arrays and Pointers 271 F.3.8 Registers 271 F.3.9 Structures, Unions, Enumerations, and Bit-Fields 272 F.3.10 Qualifiers 272 F.3.11 Declarators 272 F.3.12 Statements 272 F.3.13 Preprocessing Directives 273 F.3.14 Library Functions 278 F.3.15 Locale-Specific Behavior Introduction The American National Standard for Information Systems--Programming Language-C (ANSI Standard X3J11/90-013) allows an implementation to define its own behavior in certain areas. Implementation-defined behavior is defined by the ANSI Standard as "behavior, for a correct program construct and correct data, that depends on the characteristics of the implementation. . ." (p.3). This appendix describes the SAS/C Compiler behavior for those areas listed in Section F.3, "Implementation-Defined Behavior," of the ANSI Standard. This appendix is organized like Section F.3. 268 Appendix 3 F.3.1 Translation [] Diagnostics consist of a line printed to the standard output stream containing the following elements: filename line class number: text where: filename is the name of the file that caused the diagnostic line is the number of the line that caused the diagnostic class is either Error or Warning number is an integer identifying the diagnostic text is the diagnostic text. Some diagnostics contain additional information in a second line. If present, this second line is indented to the same position as the text portion of the first line. F.3.2 Environment [] The compiler conforms to the ANSI Standard for a hosted environment as documented in Section 2.1.2.2 of the ANSI Standard, plus the extension of accepting a WBStartup structure as described under main in the SAS/C Development System Library Reference, Version 6.0. [] The compiler recognizes the streams stdin, stdout, and stderr as interactive devices. F.3.3 Identifiers [] By default, the number of significant characters for identifiers without external linkage is 31. However, this number can be changed to any value up to 255 with the idlen compiler option. [] The number of significant characters for identifiers with external linkage is the same as the number for identifiers without external linkage. [] Case distinctions are significant in identifiers with and without external linkage. Implementation Defined Behavior 269 F.3.4 Characters [] The source and execution character sets consist of the characters required by the ANSI Standard. In addition, national characters (characters with accents) are accepted as valid alphabetic characters unless the ansi compiler option is used. See The AmigaDOS Manual, 3rd Edition (Commodore-Amiga, Inc. 1991) for a complete definition of the Amiga character set. [] No shift states are used for encoding multibyte characters. [] Each character in the execution character set consists of 8 bits. [] The source character set maps 1-to-1 to the execution character set. [] All wide character constants map directly into the execution character set. Thus, all wide character constants have the same value as their corresponding character in the execution character set. [] The C locale is used as the current locale. [] A plain char item is by default signed, but this default can be changed to unsigned with the unschar compiler option. F.3.5 Integers [] Integers are represented by two's-complement numbers. The range of possible values are specified in the header file limits .h and in Chapter 12, "How Does the Compiler Work?" The most-significant bit in the representation of signed integers is the sign bit and determines whether the number is positive or negative. [] When an integer is converted to a shorter signed integer, the high- order bytes are discarded. The bit pattern of the remaining bytes is unchanged. The bit pattern of an unsigned number is not changed when it is converted to a signed integer of equal length. [] The following list covers the results of bitwise operations on signed integers: ~ (bitwise NOT) The bits are inverted; that is, 1 bits are set to 0, 0 bits are set to 1. >> (shift right) The bits are shifted to the right. The sign bit (uppermost bit) is used to fill the vacated bit positions on the left. << (shift left) The bits are shifted to the left. The vacated bit positions on the right are filled with zeroes. & (bitwise AND) If the corresponding bits in both operands are 1, then the corresponding bit in the result is set to 1; otherwise, it is set to 0. 270 Appendix 3 | (bitwise OR) If either of the corresponding bits in the operands are 1, then the corresponding bit in the result is set to 1; otherwise, it is set to 0. ^ (bitwise XOR) If the corresponding bits in the operands are not alike, then the corresponding bit in the result is set to 1; otherwise, it is set to 0. [] In integer division, the remainder is either 0 or has the same sign as the dividend. [] In a right shift of a negative-valued signed integral type, the sign bit is used to fill the vacated bit positions on the left. That is, the result retains the sign of the left operand. F.3.6 Floating-Point [] Floating-point numbers are represented using the IEEE standard representation, unless the math= ffp option is on. In the latter case, the Motorola Fast Floating Point representation is used. The range of possible values for floating-point numbers is specified in the header file float.h and in Chapter 12, "How Does the Compiler Work?" [] If an integral number is converted to a floating-point number that cannot exactly represent the original value, the number is rounded for all math options except math=coprocessor. For math=coprocessor, the number is truncated. You can change the behavior for the math=coprocessor option by modifying the source code to the __fpinit.c function, located in sc:source/_fpinit. However, choosing another rounding mode affects the conversion from floating-point to integer such that the conversion does not adhere to the ANSI Standard. Specifically, the following statement might assign the integer value 6 to i if you specify math=coprocessor, and the coprocessor's rounding mode is not set to truncate: int i = (int)5.5; [] Conversions from double to float round or truncate in the same manner as conversions from integral types to floating-point types. F.3.7 Arrays and Pointers [] The type of integer required to hold the maximum size of an array is unsigned int. [] When a pointer is converted to integer, the resulting bit pattern is as if an object of type unsigned long with the same bit pattern as the pointer had been converted to the integer type. Implementation Defined Behavior 271 [] When an integer is converted to a pointer, the resulting bit pattern is the same as if the integer had been converted to an unsigned long. F.3.8 Registers [] Under normal circumstances, there can be up to 4 integer register variables, 3 pointer register variables, and 5 floating point register variables. Using the cover compiler option, the stackext compiler option, the __stackext keyword, or __aligned keyword on a function definition costs one pointer register variable. Using the data=faronly compiler option adds an additional pointer register variable. The reg i s ter keyword is ignored when the global optimizer is used because registers are allocated to variables by the global optimization phase. If you specify the autoreg option, the code generator selects additional register variables for you if registers are available after assigning your choices to registers. F.3.9 Structures, Unions, Enumerations, and Bit-Fields [] If a member of a union is accessed using a member of a different type, the result is undefined. If optimization is used, the compiler may attempt to keep the value stored in one member of a union in a register, and a subsequent access to a different member may get an old value. [] Structure members of type char can appear at any byte offset. Structure members of other simple types must be aligned on an even byte boundary, and padding is inserted if necessary. Any structure or union member declared with the __aligned keyword is aligned on a four-byte boundary, relative to the start of the structure or union, with padding inserted as necessary. Substructures and subunions have the same alignment requirements as their most restrictive members. Structures and unions are padded at the end to the boundary of their most restrictive member. For more information on structure padding, see Chapter 13, "Writing Portable Code." [] int bitfields are treated as unsigned int bitfields. [] The order of allocation of bitfields for an int is from left to right. Bitfields never cross storage unit boundaries. [] The values of an enumeration type are normally of type int. However, the SAS/C Compiler allows the declaration of char enum, short enum, and long enum types. Enumeration types so declared are of the specified type. For more information on using enumerated types, 272 Appendix 3 see Chapter 11, "Using Amiga Specific Features of the SAS/C Language." F.3.10 Qualiflers [] Any reference to an object whose type is qualified by the keyword volatile is considered an access to that object. F.3.11 Declarators [] There is no limit on the number of declarators that can modify an arithmetic, structure, or union type. F.3.12 Statements [] There is no limit to the number of case values in a switch statement. F.3.13 Preprocessing Directives [] The value of a single-character constant in a constant expression that controls conditional inclusion matches the value of the same character constant in the execution character set. Such a character can have a negative value unless the unschar compiler option is active. [] The compiler defines a search path for # include files that are included with angle brackets (<>) around their names. This path is defined as follows: 1. directories specified with the includedirectory compiler option 2. the logical assignment INCLUDE:. [] The compiler uses a slightly different search path for #include files that are included with double quotes ("") around their names. This path is defined as follows: 1. the current directory 2. the directory of the file containing the #include statement 3. directories specified with the includedirectory compiler option 4. the logical assignment INCLUDE:. [] Source file character sequences are not mapped. The string between the angle brackets (<>) or double quotes ("") is passed to the file system. Implementation Defined Behavior 273 [] The behavior of the libcall, syscall, and tagcall #pragma directives is described in the SAS/C Development System Library Reference. The behavior of the msg and flibcall #pragma directives is described in Chapter 11, "Using Amiga Specific Features of the SAS/C Language." [] The definitions for the __DATE __and __TIME __preprocessor macros contain the date and time as specified by the DateStamp AmigaDOS function. This function always returns a value, so the date and time are always available. F.3.14 Library Functions [] The NULL pointer constant to which the macro NULL expands is OL. [] The diagnostic printed by the assert function is of the form: Assertion (condition) failed in file filename at line number where: condition is the condition passed to the assert macro filename is the current value of __FILE__ number is the current value of__ LINE__. The assert function calls abort after printing the above line. For more information, refer to the description of the assert function in the SAS/C Development System Library Reference. [] The sets of characters tested for by the isalnum, isalpha, iscntrl, islower, isprint, and isupper functions is defined by the entries in the external array __ctype. The following table lists the hexadecimal values for each of the characters tested for by these functions. Function Name Character Type Hexadecimal Values isalnum alphabetic or0x30 to 0x39, 0x41 to 0x5a, numeric0x61 to 0x7a isalpha alphabetic0x41 to 0x5a, 0x61 to 0x7a iscntrl control0x00 to 0x1f, 0x7f (continued) 274 Appendix 3 Function Name Character Type Hexadecimal Values islowerlowercase0x61 to 0x7a isprintprintable0x20 to 0x7e isupperuppercase0x41 to 0x5a [] The mathematics functions return zero on domain errors. [] On underflow range errors, the mathematics functions set the integer expression errno to the macro ERANGE. [] Zero is returned when the fmod function has a second argument of zero. [] The set of signals for the signal function are the minimum set defined by the ANSI Standard: SIGABRT, SIGFPE, SIGILL, SIGINT, SIGSEGV, and SIGTERM. [] Refer to the description of the signal function in the SAS/C Development System Library Reference for the semantics of the signals. [] By default, the SIGINT signal results in calling the _ CXBRK function, which terminates the program. Also by default, the SIGFPE signal results in calling the _ CXFPE function, which sets errno and returns to the caller causing the exception. By default, all other signals are ignored. [] The default handling is reset if the SIGILL signal is received by a handler specified to the signal function. [] The last line of a text stream does not require a terminating newline character. No newline character is generated if one is not explicitly written. [] Space characters that are written out to a text stream immediately before a newline character appear when read in. [] The implementation does not append any NULL characters to data written to a binary stream. [] The file position indicator of an append mode stream is initially positioned at the beginning of a file. [] A write on a text stream does not cause the associated file to be truncated beyond that point (see Section 4.9.3 of the ANSI Standard). However, some of the modes truncate the file upon open. The following table lists whether a file is truncated after a write. Implementation Defined Behavior 275 File Mode Truncated? Comments "r" or "ra" N/A No writes allowed. "w" or "wa" No The file is truncated at open time only. "a" or "aa" No All data are written after EOF. "r+" or "ra+" No "w+" or "wa+" No "a+" or "aa+" No All data are written after EOF. "rb" N/A No writes allowed. "wb" No The file is truncated at open time only. "ab" No All data are written after EOF. " rb+ "No "wb+ " No "ab+"No All data are written after EOF. [] A call to the fopen function opens a buffered I/O stream. For writes, data are stored into the buffer until it is full, and then the data are written out. A call to the fflush function forces a write of any buffered data. You can use the library routines setbuf and setvbuf to change between buffered, unbuffered, and line buffered modes. For more information, refer to the description of these functions in the SAS/C Development System Librar,v Reference. [] A zero-length file can be created by either creating a file and not writing anything to it or by truncating an existing file. [] In general, a file can be opened multiple times as long as a previous call to open the file did not physically create the file. However, some devices or file-handlers may prevent multiple opens. Refer to the documentation for the device or file handler that you are using. [] A file cannot be deleted if there are any outstanding locks or file handles on the file. In this case, the remove function sets errno and OSERR and returns a nonzero value. [] The output for %p conversion specification for the fprintf function is the pointer's value in hexadecimal. 276 Appendix 3 [] The input for the %p conversion specification for the fscanf function is a hexadecimal pointer, optionally preceded by 0x or 0x. [] A minus (--) character that is neither the first nor the last character in the scanlist for a % [ conversion specification in the fscanf function is treated as a subrange specifier. That is, %[a-d] is equivalent to %[abcd]. [] The functions fgetpos and ftell set the variable errno to the value of EBADF for a bad file handle. Otherwise, errno is set as described in the SAS/C Development System Library Reference for the function lseek. [] The perror function generates the following messages: errno Value Description __________________________________ 0Unknown error code EPERM User is not owner ENOENT No such file or directory ESRCH No such process EINTR Interrupted system call EIO I/O error ENXIO No such device or address E2BIG Arg list is too long ENOEXECExec format error EBADF Bad file number ECHILD No child process EAGAIN No more processes allowed ENOMEM No memory available EACCES Access denied (continued) Implementation Defined Behavior 277 errno Value Description ___________________________ EFAULT Bad address ENOTBLKBulk device required EBUSY Resource is busy EEXIST File already exists EXDEV Cross-device link ENODEV No such device ENOTDIRNot a directory EISDIR Is a directory EINVAL Invalid argument ENFILE No more files (units) allowed EMFILE No more files (units) allowed for this process ENOTTY Not a terminal ETXTBSYText file is busy EFBIG File is too large ENOSPC No space left ESPIPE Seek issued to pipe EROFS Read-only file system EMLINK Too many links EPIPE Broken pipe EDOMMath function argument error ERANGE Math function result is out of range [] If the functions calloc, malloc, or realloc are passed a size of zero, the allocation fails, and the function returns a NULL pointer. errno is set to the value of EINVAL. [] The abort function closes all open and temporary level 2 I/O files. The value passed to the exit function is the value that is passed back to the system. For EXIT _ SUCCESS, the value returned is 0. For EXIT _ FAILURE, the value returned is 20. 278 Appendix 3 [] The list of environment names are in the system file-handler ENV:. Environment name values are modified through the putenv function. [] The contents and mode of execution of the string passed to the AmigaDOS system by the system function is as follows: [] Under AmigaDOS Version 1.3, the AmigaDOS function Execute is called. [] Under AmigaDOS Version 2.0 or higher, the AmigaDOS function System is called. [] The system function returns the value returned from the AmigaDOS Execute or System function. If the command processor cannot be invoked, system returns a -1. [] The strerror function returns the same error messages as the perror function. The messages returned by the perror function are listed above. [] The default time zone is CST6, and the default for Daylight Savings Time is 0. [] The era for the clock function is based on the first call to the clock function. The first call returns a value of zero, and subsequent calls measure the processor time from that starting point. For more information, refer to the description of the clock function in the SAS/C Development System Library Reference. F.3.15 Locale-Specific Behavior [] The execution character set contains all ASCII characters in all locales. [] The direction of printing is from left to right. [] The period (.) is the decimal-point character. [] Refer to the description of the i s ..functions in the SAS/C Development System Library Reference for information on the implementation-defined aspects of character-testing and case-mapping functions. [] The collation sequence for ASCII characters is used as the collation sequence of the execution character set. [] The SAS/C Development System uses the normal U.S. time and date conventions for the C locale. Implementation Defined Behavior 279 Type Values ____________________________________________ Weekday name Sun Mon Tue Wed Thu Fri Sat Month nameJan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec Date/TimeDDD MMM dd hh:mn:ss YYYY formatTue Jun 16 14:12:22 1992 280 281 Appendix 4 Converting From Aztec C Options to SAS/C Options Table A4.1 lists each of the Aztec 5.0 options and their equivalent SAS/C options (if available). Some Aztec C options do not have equivalent SAS/C options. Also, for some SAS/C options listed in this table, you must specify additional options before the ones listed in this table will take effect. For example, you must specify the genprotos option before the genprotoparms option will take effect. Table A4.1 Converting From Aztec C Options to SAS/C Options Aztec C OptionSAS/C OptionComments __________________________________________________________________________________________ -3 no equivalent -5 no equivalent -a disasm=filenameThese options generate assembly output. noobjname -atdisasm=filenameThe debug option adds C source to the debug = lineassembly output. noobj name -bdstackcheckstackcheck is the default setting. You can turn off stack checking with nostackcheck. -bsdebug=levelYou can specify one of five levels of debug information. -c2cpu=68020 -d define symbol=value -famath=ieee You must also link with the appropriate math library. -ffmath=ffpYou must also link with the appropriate math library. -fmmath=standard You must also link with the appropriate math library. (continued) 282 Appendix 4 TableA4.1 (continued) Aztec C OptionSAS/C OptionComments ____________________________________________________________________________________________ -f8math=68881 You must also link with the appropriate math library. -higst=gst-filename -homakegst=gst-filename -i includedirectory=filename -k no equivalent -maThis option is on by default. -mbno equivalent -mccode=far -mddata=far -meno equivalent -mmstringmergestringmerge forces the compiler to have only one copy of identical strings and places these strings in the code section. stringmerge also places data declared static const into the code section. -msnostringmerge -o objectname=filename -paansi trigraph -pbBitfields are unsigned by default. Use the signed keyword to declare a signed bitfield. -pcignore= 132This option suppresses the warning for tokens after #endif. -peno equivalent -plnoshortint -pooldpp -ppunsignedchar (continued) Converting From Aztec C Options to SAS/C Options 283 TableA4.1 (continued) Aztec C OptionSAS/C OptionComments _____________________________________________________________________________________________ -psshortintegers -pttrigraph -puno equivalent -qagenprotoparms -qferrorrexx -qpnogenprotostatics -qqnoverbose noversion -qsnogenprotoexterns -qvno equivalent -r4data = faronly This option uses register A4 for register variables. Do not use the __near or __chip keywords if you use this option. -saThis option is always on. -sbno equivalent Include string.h in your source code. -sfoptimize -smno equivalent Include the appropriate header file in your source code. -snThis option is always on. -sooptimize -spThe cleanup overhead reduction enhancement is always on unless you specify debug=sf or debug=ff. -sroptimize -ssstringmerge -suThis option is the default setting. You can disable this option with the noautoreg option. (continued) 284 Appendix 4 Table A4. 1 (continued) Aztec C OptionSAS/C OptionComments __________________________________________________________________________________________ -waThis option is the default setting. You can disable this option with the ignore=88 option. -wd -weerror=all This option turns all warnings into errors. To make a specific message n an error message, specify error=n. -wlThis option is the default setting. -wnignore=225 -woThis option is the default setting. -wpThis option is the default setting. You can disable this option with the ignore= 100 option. -wqno equivalent Use command line redirection. -wrThis option is the default setting. You can disable this option with the nowarnvoidreturn or ignore=85 option. -wsignore=allThis option turns off all warnings. -wuThis option is the default setting. You can disable this option with the ignore=93 option. -wwmaxerr=nThe number n specifies the new error limit. 285 Appendix 5 Converting from Version 5 to Version 6 285 Introduction 285 Upgrading from Previous Versions 286 Converting Compiler Options 294 Specifying Version 6 Libraries Introduction This appendix lists the Version 6 options and libraries that are equivalent to the Version 5 options and libraries. Upgrading from Previous Versions You should install Version 6 in a separate location from previous versions of the compiler. Modify your startup sequence files to either remove the LC: directory from your path or ensure that the directory SC: C is on your search path before LC: . In addition, make sure that include: and lib: get assigned to the correct include and link library directories for Version 6. The compiler for Version 6 does not use the QUAD: device used by previous versions. In general, it is a good idea to recompile all your code when you convert to Version 6. However, because the Version 6 libraries are ANSI- compliant, your old programs may not compile or may generate many warning messages. Appendix 1, "Solving Common Problems," provides solutions to some of the problems you may encounter in converting to Version 6. You may want to use the sc5 command to convert older, seldom-used projects. The sc5 command accepts Version 5 options and reads default options from the file sascopts. However, it is recommended that you become familiar with and begin using Version 6 as soon as possible. You can use the lctosc conversion utility to convert your Version 5 sascopts file to a Version 6 scoptions file and to determine quickly the Version 6 equivalent of a Version 5 option. The lctosc utility reads the sascopts file in the current directory, reads any command-line 286 Appendix 5 options, converts the options to Version 6 options, and writes the results to standard output. For example, to convert the sascopts file in the current directory to a Version 6 scoptions file, enter the following command at the Shell prompt: lctosc >scoptions To determine the Version 6 equivalent of the Version 5 option -cs, enter the following command: lctosc -cs For code compiled with previous versions of the compiler, the new version of CodeProbe can read the line number information but cannot read the symbol information from the executables. Recompile your code with the Version 6 compiler to produce usable debugging information for symbols. If you get unresolved symbols when you link your application, you may be referring to symbols whose name has changed so as to make the compiler conform to the ANSI Standard. In this case, look up the symbol name in the SAS/C Development System Library Reference, Version 6.0 to determine the new name, and change any references to the symbol name in your code to the new name. Alternatively, you can choose to use the define linker option to force all references to the old name to refer instead to the new name. Converting Compiler Options Table A5.1 lists each of the Version 5 options and the equivalent Version 6 option (if available). Some Version 5 options do not have equivalent Version 6 options. Also, for some Version 6 options listed in this table, you must specify additional options before the ones listed in this table will take effect. For example, you must specify the link option before any of the math=type options will take effect, and you must specify the genprotos option before the genprotoparms option will take effect. Converting from Version 5 to Version 6 287 Table A5.1 Converting Version 5 Options to Version 6 Options Version 5 OptionVersion 6 Option Description ____________________________________________________________________________________ -+ verbose Display commands as executed -. noversion Suppress execution message -abbss=chipForce all uninitialized data (BSS) to chip memory -accode=chip Force all code to chip memory -addata=chip Force all initialized data to chip memory -b data=near Base relative data (16-bit offsets) -b0data=farNon-base relative data (32-bit offsets) -b1data=near Base relative data (same as -b) -badata=auto Automatic non-base relative on data overflow -c+idlen=100 Allow longer identifiers for C++ -caansiMaximize ANSI compatibility -cccommentnestAllow nested comments -cdignore=77 Allow $ in identifiers -cenoerrorsource Suppress source line printing for errors -cfRequire function prototypes [1] -cinomultipleincludesSuppress multiple includes of same file -ckansiSuppress non-ANSI keywords (chip, far, near) -c1Use __aligned keyword [2]Align all externs on longword boundary -cmmultiplecharconstants Allow multiple character constants -cooldppEnable old style preprocessor -cpAllow #if to span files -cqstructequivalenceAllow passing of equivalent structure silently (continued) [1]sc5 did not require function prototypes. By default, Version 6 requires function prototypes. To suppress the Version 6 messages dealing with prototypes, specify ignore=100+161+154. [2]Use the __aligned keyword to force individual objects to longword boundaries. 288 Appendix 5 TableA5.1 (continued) Version 5 OptionVersion 6 Option Description ______________________________________________________________________________________________ -crDisallow __asm keyword on function definitions -csstringmergeCreate only one copy of identical strings -ctObsolete - does nothing -cuunsignedcharForce all char declarations to unsigned char -cwnowarnvoidreturn Shut off warning for return without a value -cxnoexternaldefs Treat all global declarations as externs -C onerror = continueContinue on error -d debug=lineEnable debugging -d0nodebug Disable debugging -d1debug=lineEnable debugging - dump line table -d2debug=symbolGenerate symbol information -d3debug=symbolf lushGenerate symbol information and flush registers at every line -d4debug=fullGenerate full symbol information -d5debug= fullflush Generate full symbol information and flush registers at line -dsym=val define sym=val Define preprocessor symbol to a value -E errorrexx Invoke Editor on error -EfilenameInvoke Editor on error, filename is an errorfile name -eEnable Asian character set (default is Japanese) -e0Enable Japanese character set (same as -e) -e1Enable Chinese character set -e2Enable Korean character set -f math=ffpUse Motorola FFP (forces -fs) -f8math=68881Generate code for Motorola 68881 (continued) Converting from Version 5 to Version 6 Z89 TableA5.I (continued) Version 5 OptionVersion 6 Option DescFiption _____________________________________________________________________________________________ -fdprecision=double Use double precision for both float and double -ffmath=ffpUseMotorolaFFP -fimath=ieee Generate code for IEEE libraries -f1math= standard Use standard SAS/C floating point library -fmprecision=mixedUse single precision for float, double for double -fsUse single precision for both float and double -gcxref systemCross-reference compiler-provided files -gdxrefmacrosCross-reference defined symbols -geList excluded lines -ghlistheadersList header files -gilistsystemList included files -gmlistmacrosList macro expansions -gnlistnarrowPrint narrow lines -goerrorlistingPut errors and warnings to both stderr and errorconsolelisting file -gslistList source -gxxreferenceProduce cross reference listing -g=filename listfile=filenameGenerate listing file with name filename -Hnamegst=gst-filename Read in precompiled header file name -hbbss=fastForce all uninitialized data (BSS) to fast RAM -hccode=fast Force all code to fast RAM -hddata=fast Force all initialized data to fast RAM -ixincdirectory=filename Specify directory to search for includes -jnignore=nDisable message number n (conhnued) 290 Appendix 5 Table A5.1 (continued) Version 5 OptionVersion 6 Option Description __________________________________________________________________________________________ -jne error=n Make message number n an error instead of a warning -j*e error =allTurn all warnings into errors -jni ignore=nDisable message number n (same as - jn) -j*i ignore=allDisable all warnings -jnw warn=n Enable message number n as a warning -janoerrorhighlight Suppress ANSI escape codes from error line output -L+ob ject=object-fileSpecify additional linker objects library = link-library -Laaddsym Add symbol information when linking -Lcsmallcode Use small code memory model (16bit jumps) -Ldsmalldata Use small data memory model (16-bit data offsets) -Lfmath=ffpLinkwithFFPmathlibrary -Lhmaphunk Produce linker hunk map -ListdioLink with _ tinymain instead of _ main -L1maplib Produce linker library map -Lmmath=math-type Link with appropriate math library -LnstripdebugSuppress debugging information in executables -LomapoverlayProduce linker overlay map -Lsmapsym Produce linker symbol map -Ltsmallcode Use typical link options (same as -Lc, -Ld, -Lv, smalldata or -Lcdv) verbose -Lvverbose Print verbose linking information -Lxmapxref Produce linker cross-reference (continued) Converting from Version 5 to Version 6 291 TableA5.1 (conhnued) Version 5 OptionVersion 6 Option Description _______________________________________________________________________________________ -l Use __aligned keyword. [1] Align objects on longword boundaries -M modifiedCompile only modified source files -m cpu=any Generate code for Motorola 68000 -mOcpu=68000 Generate code for Motorola 68000 (same as -m) -m1cpu=68010 Generate code for Motorola 68010 -m2cpu=68020 Generate code for Motorola 68020 -m3cpu=68030 Generate code for Motorola 68030 -macpu=any Generate code for all Motorola processors (same as -m) -mcDisable cleanup overhead reduction enhancement -mllibcode Generate code for resident library use -mpabsfuncpointer Generate 32bit references to functions -mrnoautoregister Disable automatic registerization -msoptsize Generate code optimized for space optimize -mtopttime Generate code optimized for time optimize -NDisable linking from editor -n identifierlength=8Retain only 8 characters for identifiers -nnidentifier length=nSpecify maximum length for identifiers -O optimizeInvoke global optimizer -oxobjectname=filenamePlace object file in filename -Pxprogramname=filename Use filename as the name of the final executable module (continued) [1] Use the __aligned keyword to force individual objects to longword boundaries. 292 Appendix 5 TableA5.1 (continued) Version 5 OptionVersion 6 Option Description _________________________________________________________________________________________ -p preprocessonly Preprocess only -penogenprotostaticsGenerate prototypes for external functions -phmakegst=filename Generate precompiled header file -piInclude identifier names in generated prototypes -ppgenprotoparms Generate prototypes with __PARMS for portability -prgenprotoGenerate prototypes for external and static functions -psnogenprotoexternsGenerate prototypes for static functions only nogenprotodataitems -ptnogenprototypedefsSuppress use of typedefs when generating prototypes -qxPlace quad file in location x -qne maxerr=nQuit compilation after n error/warnings -qnw maxwarn=n Quit compilation after n warnings -q maximumwarn= 1 Quit after 1 error or 1 warning (same as maximumerrors=1-q1e1w) -r code=near Default function calls to near (PC-relative) -r0code=farDefault function calls to far (Absolute) -r1code=near Default function calls to near (Same as -r) -rrparms=register Pass and receive parameters in registers -rsparms=stackPass and receive parameters on the stack -rbparms=bothGenerate code for both register and stack conventions -Rfilenameobjectlib=filenamePlace compiled objects into library filename (continued) Converting from Version 5 to Version 6 293 Table A5.1 (conhnued) Version 5 OptionVersion 6 Option Description _____________________________________________________________________________________________ -sUse default segment names text, data, and udata -sb=name bssname=nameSpecify a name for uninitialized data (BSS) segment -sc=name codename=name Specify a name for code segment -sd=name dataname=name Specify a name for data segment -t startup= cback Link with cback.o instead of c.o -tbstartup=cback Link with cback.o instead of c.o (same as -t) -tcstartup= catch Link with catch.o instead of c.o -tcr startup=catchres Link with catchres.o instead of c . o -trstartup=cresLink with cres.o instead of c.o -t=x startup=filename Link with filename instead of c.o -uUndefine all preprocessor symbols -v nostackcheckDisable stack checking code -w shortintegers Default to short integers -x noexternaldefsTreat all global declarations as externals (same as -cx) -y saveds Load A4 with base address at start -znnn ppbuf=nnn Set preprocessor expansion buffer size to nnn 294 Appendix 5 Specifying Version 6 Libraries Table A5.2 lists each of the Version 5 libraries and the equivalent Version 6 library. In Version 6, the standard libraries provide support for registered parameters. To use registered parameters, you must compile with the params=registers option, but you do not need a special library. Table A5.2 Version 5 Library Version 6 Library _____________________________________________ lc.libsc.lib lcm.libscm.lib lcmieee.lib scmieee.lib lcmffp.lib scmffp.lib lcmr.lib scm.lib lcms.lib scms.lib lcmsr.lib scms.lib lcm881.lib scm881.lib lcmr881.lib scm881.lib lcnb.lib scnb.lib lcr.libsc.lib lcs.libscs.lib lcsnb.lib scsnb.lib lcsr.lib scs.lib 295 Index A __ aligned keyword 155-156 __ asm keyword 157-158 .a filename extension 78__ chip keyword 156-157 abbreviated menus 50 __ far keyword 156-157 abort function 277__ Inline keyword 159 absfuncpointer compiler option 85, 177__ interrupt keyword 157 accelerator keys 50__ near keyword 156-157 addressing data 176-177 __ regargs keyword 157-158 chip data 176 __ saveds keyword 158-159 modifying access to program code and __ stackext keyword 160-161 data 176-177__ stdargs keyword 157-158 reentrant and non-reentrant programs amigaguide.se, AREXX macro 69 176 AmigaGuide, invoking 28 addsym linker option 121ANSI compiler option 85, 181 addsymbols compiler option 85 ANSI Standard __ aligned keyword 155-156See also implementation defined affecting definitions of functions 155 behavior automatic variable problems 156See also portable code, v.~riting ensuring stack alignment 156default argument promotion rules 187 example 156format for incoming command line 140 pointer register variables 161ANSI compliant C compilers 182 Alt keys AREXX interface 65-73 equivalence 60 AREXX port 68 independent operation 60command summary 70-73 Amiga keys commands without keystroke equivalents caution against redefining 6070-73 Amiga-specific features of SAS/C languagecommunicating with external programs 153-169 68-69 C++ style comments 168 definition 73 comma (,) operator 168executing a series of editor commands common model external data 168-169 65-68 enumerated types 167 keystroke equivalents for commands equivalent structures 164-166 70-73 implicit structure references 164 AREXX macros managing stack space 160-161amigaguide.se 69 national characters in variable namesassigning to keys 66 168definition 73 nested comments 168deletetabs.se 69 #pragma statements 161 163examples 66-68, 69 sizeof operator 168findsym.se 69 special keywords 154 159 indent.se 70 unnamed unions 163-164newline character (\n) 65 zero-length arrays 163-164 provided with the compiler 69-70 296 Index AREXX macros (conhnued)autotermination function 145-147 .se suffix required 65 definition 145 tolower.se 70 example 146 toupper.se 70 level 1 or 21/O functions not used 147 unindent.se 70order in which modules called 147 argc and argv _STD preceding function name 145 ANSI Standard requirement 140 __dtors array 146, 147 Shell environment 135-136 Autowrap option 61-62 Workbench environment 136Aztec C options, converting 281-284 arguments raising argument limits 140-141 argumentsize= compiler option 85-86 B See also memorysize= compiler option arrays__BackGroundlO external definition 143 SAS/C Compiler behavior 270-271 backslash (\) asctime function 200-201 preceding comment character 62 .asm filename extension 78_Backstdout external definition __asm keywordAmigaDOS functions requirements 143 affecting caller and callee 155definition 143 Amiga-specific features 157-158NULL file handle 143 Asm modes 61-62printing messages in the Shell 143 assembler= compiler option 78, 86backup copies of installation diskettes 3 assert function 273Backup File Mode option, Options pull down assign statements, adding to startup file 10menu 63 asterisk (-)backward searching 42 Asm mode 62batch compiler option 86 indicating depth of overlay tree 129 batch linker option 121 indirection operator 155 Beginning option at sign (@)Block pull down menu 53 preceding linker symbols 122, 158Beginning option, Block pull down menu /AUTO keyword 13851 Auto Indent Mode, Options pull down menu bitfields 62-63SAS/C Compiler behavior 271 autoinitialization function 145-147bitwise operations 269-270 definition 145 BIX (Byte Information Exchange) 31 example 146block operations 43-44, 53 level 1 or 2 I/O functions not used147 marking blocks 43 library bases automatically initialized unmarking blocks 44 148-149Block pull down menu order in which modules called 147 Beginning 51, 53 _STI preceding function name 145Copy 53 __ctors array 146, 147Delete 52, 53 automatic storage class 180 End 51, 53 automatic variables Move 53 stack alignment problems 156Print 53 _autoopenfail functionRead 53 calling when autoimtialized libraries Write 53 cannot open 150-151braces ({ }) source code 151 Auto-lndent Mode 62-63 autoregister compiler option 86, 180, 271bssmemory= compiler option 86, 177 Index 297 bssname= compiler opvion 87chip data bufsize linker option 121reentrant and non-reentrant programs Build icon176 compiling and linking programs 18-19chip hunk 172 definition 14__chip keyword 156-157 declaring data items 176 overriding data=auto compiler option C90 purpose and use 156-157 c directory 6 chip linker option 121 .c filename extension 78chip memory 157 c.o startup module clock function 278 default module 142 /CLOSE keyword 138 definition 140Close Window option C+ + style comments 168Project pull down menu 47 calloc function 141, 277Windows pull-down menu 54 Case Sensitive Characters option, Optionscode= compiler option 87, 177 pull-down menu 63-64code hunk 172 case sensitive searches 42 codememory= compiler option 87, 177 casting results of short integers 179codename= compiler option 87 catch.o startup moduleCodeProbe creating snapshot files 142See debugging programs definition 140colon (:) catchres.o startup moduleAsm mode 62 debugging residentable programs 144 colors, changing 54 definition 140Column Display option, Options pull down saveds compiler option and __saveds menu 63 keyword not allowed 159 comma (,) snapshot files 142, 144separating filenames for sc command 78 cback.o startup modulecomma (,) operator in preprocessor char *__procname external definition directives 168 142commentnest compiler option 87-88, 168 creating detachable programs 142-143comments definition 140 C++ stylecomments 168 extern BPTR _ Backstdout external comment characters, Asm mode 62 definition 143 comment start sequence (/') 168 long _ BackGroundlO external nested comments 168 definition 143 nested comments not allowed by ANSI long __priority external definition 142 168 long _stack external definition 142 slashes (//) defining comment blocks 168 uses 142common compiler option 88, 169 char *__procname external definition 142 common model external data 168-169 character constants 104compiler options 79-119 character strings, replacing See also compiler options, setting See replacing character stringsabbreviations 80 character strings, searching absfuncpointer 85, 177 See searching for character stringsaddsymbols 85 charactersANSI 85, 181 locale specific behavior 278-279argumentsize= 85-86 SAS/C Compiler behavior 268 assembler= 78, 86 298 Index compiler options (continued)genprototypedefs 95 autoregister 86, 180, 271globalsymboltable= 96 batch 86GSTimmediate 96 bssmemory= 86, 177icons 96-97 bssname= 87 identifierlength= 97 case-insensitivity 80ignore= 97 code= 87, 177includedirectory= 97 codememory= 87, 177 keepline 97 codename= 87 keyword options 79 commentnest 87-88, 168libcode 98, 159 common 88, 169library= 78, 98 constlibbase 88link 16, 17, 24, 98 converting from Aztec C options linkeroptions= 98-99, 120 281-284 list 99 converting Version 5 options to Version 6 listfile= 99 286-293 listheaders 99 coverage 88-89, 271 listinclude 99-100 CPU= 89listmacros 100 csource= 78 listnarrow 100 data= 89-90, 132, 157, 177 listsystem 100 data=auto 90 makeglobalsymboltable=100 data=far 89, 182 map 100 data=faronly 90, 161, 182mapfile= 100 datamem= chip 172 maphunk 101 datamemory= 90, 177 maplib 101 dataname= 91 mapoverlay 101 data=near 89, 172 mapsymbols 101 debug= 91, 173mapxreference 101 debug=full 91math= 102 debug = fullflush 91math = coprocessor 2 70 debug = line 91math = ffp 2 70 debug=symbol 91 math=ieee 270 debug=symbolflush16, 17, 91 math=standard 16, 17 define= 92 maximumerrors= 102 disassemble= 92maximumwarnings= 102 error= 92 memorysize= 103 errorconsole 92modified 104 errorhighlight 93 multiplecharacterconstants 104-105 errorlist 93 multipleincludes 105 errorrexx 16, 17, 93noautoreg 180 errorsource 93object= 78, 105 externaldefs 93objectlibrary= 106 findsymbol= 93objectname= 106 from 94oldpreprocessor 106-107 genprotodataitems 94onerror= 107-108 genprotoexterns 94optimize 108 genprotofile= 94 optimizealias 108 genprotoparameters 94optimizercomplexity= 108 genprotos 94-95optimizerdepth= 109 genprotostatistics 9Soptimizerglobal 109 Index 299 optimizerinline 109xreferenceheaders 118 optimizerinlocal 109 xreferencesystem 119 optimizerloop 109compiler options, setting optimizerpeephole 109gadgets for selecting options 17 optimizerrecurdepth= 110 saving settings 17 optimizersize 110 scopts screens 23 optimizertime 110 scopts utility 16-18 overriding settings in scoptions file 79Shell method 23 parameters= 110-111specifying from screen editor (se) 26 parameters=both 202specifying on command line 23 parameters=register 202Workbench method 16 18 precision= 111compiling programs 77 78, 171-173 preprocessor symbols defined 120 See also compiler options preprocessorbuffer= 111See also sc command preprocessoronly 111-112 Build icon 18-19 programname= 112hunks 171-173 resetoptions 79, 112 numbered compiler messages 206-257 SAS/C Compiler Options Index screen portability considerations 181-182 17 sc command 24, 77-78 saveds 112, 144screen editor (se) 48 scoptions file 79 Shell method 22-24 shortintegers 112, 178, 179, 183 solving problems 195-197 smallcode 113, 132, 177unnumbered compiler messages204-205 smalldata 113, 132, 177Workbench method 18-19 solving problems 196CON: keywords 138 sourceis= 113Configuration Window, screen editor (se) specifying 79-8057-64 stackcheck 113, 160, 161 Asm modes 61-62 stackextend 113, 160, 161 AutolndentModeoption 62-63 standardio 114Autowrap option 62 startup= 114 Backup File Mode option 63 strict 114, 181-182, 183 Case Sensitive Characters option63-64 stringconst 114Column Display option 63 stringmerge 114-115, 132, 177, 180 displaying 57-58 stripdebug 116illustration 58 structureequivalence 116, 164, 275 Input processing option 61-62 summary of options 80-84 key definitions, displaying 59 60 switch options 79 key definitions, setting 60-61 to= 116Keys 14 pull down menu 58 trigraph 116 No processing option 61-62 underscore 116Options pull down menu 58 unschar 272 Project pull-down menu 58 unsignedchar 116, 177Prompt Before Undo option 63 utilitylibrary 117 reusing saved settings 64 verbose 117, 173saving new settings 64 version 117 Searches Method option 41, 63 warn= 117-118, 183, 265Tab Expansion Method option 62 warnvoidreturn 118 tab stops, setting 61 with= 118 console window 138 xreference 118 const keyword problems 196-197 300 Index constlibbase compiler option 88purpose and use 89-90 control characters, entering 46using in overlays 132 Control-\ escape character 46 data storage classes 179-180 conversion of data types 178-179data types and sizes 177-179 Convert Macro to Key option, Project pull- casting results of short integers 179 down menu 55 conversion 178-179 converting compiler options effect of shortint option 178, 179 Aztec C options 281 284narrow types in pre ANSI function Version 5 options to Version 6 286-293 declarations 187-188 converting from Version 5 to Version 6 pointer length 178 285-294portability considerations 183 compilation errors 195-196 signed and unsigned objects 177 compiler option conversion 286-293 sizes and values 177-178 installing Version 6 285widest operand 178 recompiling code 285data=auto compiler option 90 sascopts file conversion 285-286 data=far compiler option 89 182 specifying Version 6 librarieS 294data=faronly compiler Option 90 161 symbol information 286 182 Copy option, Block pull down menu 53 datamem=chip compiler option 172 Correcting errors in source file 16, 19, 24 datamemory= compiler Option 90 177 erage compiler Option 88-89, 271 dataname= compiler Option 91 cpr (Codeprobe) command 25 data=near compiler option 89 143 172 cpr.guide help database 28__DATE preprocessor macro 273 CPU= compiler option 89locale specific behavior 278-279 crashing the machine 200daylight savings time, default278 Create New CLI option, Windows pull-downdebug compiler option 91, 173 menu 54 Debug icon cres.o startup module definition 14 creating residentable programs 143-144 starting the debugger 20 definition 140 saveds compiler option and __saveds debug=fullflush compiler option 91 keyword not allowed 159debugging programs csource= compiler option 78 cpr (CodeProbe) command 25 __ctors array 146, 147 Dialog window 20-21, 25 customizing screen editor (se) display command 21 See Configuration Window, screen editorgo command 21, 25 (se) problems with CodeProbe 197 __CXBRK function 274 quit command 21, 25 __CXFPE function 274 Source window 20-21, 25 __CXOVF stack overflow routine 160 stepping through programs 21 using Shell 25 using Workbench 20-21 D debug =line compiler option 91 debug=symbol compiler option 91 d commanddebug=symbolflush compiler option 16, See display command17, 91 d option, se command 38declarators data= compiler option SAS/C Compiler behavior 272 changing data addressing methods 177 def _ changing default data section 157beginning of names for icons 25-26 Index 301 default icons for tools 26 End option, Block pull-down menu 51, 53 define= compiler option 92 enumerated types, specifying size 167 define linker option enumerations eliminating standard 1/0 window 137SAS/C Compiler behavior 271 forcing symbol name references Z86 env directory 7 purpose and use 121-122ENV: logical device 10 Delay function (AmigaDOS) 20ENV:sc subdirectory 11 Delete option, Block pull down menu 52,environment 53SAS/C Compiler behavior 268 deletetabs.se, AREXX macro 69 environment names 278 deleting text 41, 52 environment variables setting 10 11 See also undoing changes equivalent structures 164 166 detachable programs 142-143 definition 164 See also residentable programsexamples 165,166 cback.o startup module 142- 143error and warning messages 203-266 creating 142 definition 142 eliminating informational messages 202 external definition requirements 142 143enabling suppressed messages 265 restricting to one copy running 143 diagnosticsnumbered compiler messages 206-257 SAS/C Compiler behavior 268 unnumbered compiler messages 204-205 Dialog window (CodeProbe) 20-21, 25 using error and warllmg messages directories created by installation program 6-8error compiler options c 6error= 92 errorconsole 92 env 7 examples 6errorhighlight 93 help 6errorlist 93 icons 6 errorrexx 16, 17, 93 Include 7errorsource 93 Lib 7 maximumerrors= 102 libs 7-8 onerror= 107-108 source 7errors in source file, correcting 16, 19, 24 starter _ project 6 escape character (Control-\) 46 disassemble= compiler option 92examples directory 6 diskcopy command (AmigaDOS) 3 executable module 172 display command 21exit function 277 Display Names option, Project pull-downExit SE option, Project pull-down menu menu 56 47, 56 DOSBase exiting screen editor (se) 46 47, 56 initialized by startup code 149extern BPTR _ Backstdout external __dtors array 146, 147 definition 143 external data, common model 168-169 external storage class 180 E external symbol information in hunks 172 externaldefs compiler option 93 Edit icon 14, 38 editor See screen editor (se)F Electronic Mail Interface to Technical Support (EMITS) 31-32fancy linker option 122 302 Index far BSS hunk 172 __fpinit.c function Z70 far data 172 !fprint problems 197 far data hunk 172 fprintf function 275 __far keyword 154, 156-157 __fpterm function affecting only calling function 155from compiler option 94 compatibility with previous releases 157 from linker option 122 declaring data items 176fscanf function 276 declaring far data 172 ftell function 276 overriding data=auto compiler option function pointers 90effect of keywords 155 purpose and use 156-157 functions fast linker option 122calling functions in overlays 128 faster linker option 122 function call problems 199 fax numbers for Technical Support 30writing replacement functions for SAS/C fflush function 275library functions 202 fgetpos function 276fwidth linker option 122 filename extensions options for specifying with sc command 78G recognized by sc command 78 files g command See also screen editor (xe)See go command editing new files 55genprotodataitems compiler option 94 maximum number of open files 39genprotoexterns compiler option 94 naming 56 genprotofile= compiler option 94 opening more than one 38genprotoparameters compiler option 94 saving 46-47genprotos compiler option 94-95 specifying multiple filenames with sc genprotostatistics compiler option 95 command 78genprototypedefs compiler option 95 switching between 38, 39geta4 function 159 truncation after a write 275getch function 198 FindPort function 143getchar problems 198 findsym.se, AREXX macro 69 global message port 143 findsymbol= compiler option 93 global optimization 159, 180, 271 flibcall #pragma statement 162 global symbol information in hunks 172 floating-point numbersglobalsymboltable= compiler option 96 conversion types 179 See also makeglobalsymboltable= SAS/C Compiler behavior 270 compiler option value limits 178go command floppy disk product installation 8-9 completing program execution 21, 25 disks created 9 grep Pretend to Install process 8-9 compared with screen editor (se) read.me file 9 searching 43 fmod function 274 GST= compiler option 96 fopen function 275GSTimmediate compiler option 96 formal storage class 180 formatted print functions %p conversion 275 276 H problems 197 __fpinit function 146.h filename extension 78 Index 303 H_DEBUG hunk 173I H_SYMBOL hunk 173 hard disk product installation 4-8icons 25-26 directories created 6-8contained in starter _ project directory 14 modifying startup files 5-6default icons for tools 26 Pretend to Install process 4modifying 26 header files naming conventions 25 function call problems 199 object file icons 26 incorrect characters at beginning 196preventing all icons 26 multipleincludes compiler option 105 preventing specific types 26 reasons for including incorrect file 199 representing SAS/C tools 14 heap area 175 templates in sc:icons drawer 25 height linker option 122 icons compiler option 96-97 help command 27icons directory 6 help directory 6identifierlength= compiler option 97 help system 27-29identifiers See also problem solvingSAS/C Compiler behavior 268 See also Technical Supportignore= compiler option 97 help databases 28-29 implementation defined behavior 267-279 installation procedure 4ANSI definition 267 invoking AmigaGuide 28arrays and pointers 270-271 menu bar of help screens 29bitfields 271 navigating through help databases 29 characters 269 sc command 78 declarators 272 screen editor (se) 48 enumerations 271 Screen Editor Help screen 28 hunk symbol records 121floating_point numbers 270 hunks 171-173 identifiers 268 changing hunk names 175integers 269-270 library functions 273-278 chip hunk 172 locale speclfic behavior 278-279 preprocessing directives 272-273 contained in primary (root) node 174 qualifiers 272 contents 171-1 72 far BSS hunk 172registers 271 far data hunk 172structures 271 H_DEBUG hunk 173translation 268 H_SYMBOL hunk 173unions 271 letters indicating hunks produced byimplicit structure references 164 compiler 173Include directory 7 near BSS hunk 172 #include files search paths 272 near data hunk 172include: device name, assigning 10 NTRYHUNK 133, 175 includedirectory= compiler option97 reserved section names 175incomplete structure tags 188-189 udata hunk 172indent linker option 123 __MERGED hunk 172, 175indent.se, AREXX macro 70 __NOMERGE hunk 175indirection operator (-) 155 hwidth linker option 123 __inline keyword 159 304 Index Input Processing option 61-62exiting screen editor (se) 56 Asm modes 61-62 inserting text 52 Autowrap 61-62 keystroke macros 55 No processing 61-62 managing windows 54 Insert File option, Project pull down menu moving around in files 40, 51 52qualifier keys 59 inserting text 40-41, 52saving files 56 installing SAS/C Development System 3-11searching for and replacing strings 53 assigning logical device names 10 Shift keys 60 directories created by installationundoing changes 56 program 6-8Keys pull down menu floppy disk installation 8-9definition 58 hard disk installation 4-8 determining functions of commands 59 modifying startup files 5-6keystroke equivalents for AREXX preparing for installation 3 commands 70-73 read.me file 5 keystroke macros 45-46 setting environment variables 10-11assigning macros to another key 46 integers creating 45 SAS/C Compiler behavior 268 keys 55 value limits 177-178 menu options 55 Interlace Toggle option, Windows pull down reloading 45-46 menu 54replacing 45 __interrupt keyword 155, 157 saving 45-46 IntuiMessage structure 165, 166keyword options 79 IOExtSer structure 166 keywords isalnum function 273-274affecting caller and callee 155 affecting definition of functions 155 isalpha function 273-274 iscntrl function 273 274affecting only calling function 155 islower function 273-274/CLOSE 138 isprint function 273-274CON: keywords 138 isupper function 273-274const 196-197 controlling standard 1/0 window 138 list of special keywords 154 K register 180, 271 signed 177, 183 keepline compiler option 97 specifying on function pointers 155 key definitions 59-61 unsigned 177 displaying 59-60/WAIT 138 qualifiers 60 __aligned 155-156, 161 raw code 60__asm 155, 157-158 setting 60-61 __chip 90, 156-157, 176 keyboard shortcuts 50__far 90, 155, 156-157, 172, 176 keys__inline 159 accelerator keys 50 __interrupt 157 Alt keys 60__near 90, 155, 156-157, 172, 176 assigning AREXX macros 66 __regargs 111, 155, 157-158, 202 block operations 53 __saveds 112, 144, 145, 155, changing colors 54 158-159 deleting text 41, 52 __stackext 155, 160-161 editing new files 55__stdargs 111, 155, 157-158 Index 305 Lstartup modules 141 using with sc command Z4, 120 lctosc conversion utility 285-286linker (slink) Lib directory 7See slink command .lib filename extension 78linker options 121-127 lib: device name, assigning 10addsym 121 libcode compiler option 98, 159 batch 121 libent.o module 144 bufsize 121 libfd linker option 123chip 121 libinit.o module 144define 121-122, 137, 286 libinitr.o module 144 fancy 122 libprefix linker option 123-124fast 122 librariesfaster 122 See also shared libraries from 122 problems creating resident libraries 201fwidth 122 Version 5 and Version 6 library height 122 equivalences 294 hwidth 123 library base pointers indent 123 See constlibbase compiler option libfd 123 library bases, initializinglibprefix 123-124 See system library bases, initializing library 124 library= compiler option 78, 98librevision 124 .library files libversion 124 library bases 149 map 124 library functionsmaxhunk 124 SAS/C Compiler behavior273-278noalvs 124 library linker option 124 nodebug 125 library revision numbers 150 nover 202 librevision linker option 124onedata 125 libs directory 7-8 overlay 125 scdebug.library 7 overlymgr 125 scgo.library 7plain 125 scgst.library 7prelink 125 schi.library 8pwidth 125 sckeymap.library 8 quiet 126 sclist.library 8root 126 scpeep.library 7smallcode 126 scspill.library 8 smalldata 126 sc1.library 7 stripdebug 126 sc2.1ibrary 7 swidth 126 libversion linker option 124 to 126 Line Number option, Search pull down verbose 126 menu 51verify 126 link compiler optionwidth 126 displayed in SAS/C Compiler Options with 127 Index screen 17xref 127 eliminating standard I/O window 137linker symbols nostdio option 137 absolute symbols not used with purpose and use 98residentable programs 159 running example.c program 16at sign (@) preceding 122 306 Index linker symbols (continued)M converting from Version 5 to Version 6 286 macros created for residentable programs 144 See AREXX macros extra underscores preceding 122See keystroke macros NEWDATAL 144 Main Menu key (F2) 50 RESBASE 144__main routine RESLEN 144converting incoming command to ANSI resolving undefined symbols 193 195format 140 __LinkerDB 144, 158opening standard I/O window 137 __LinkerDB symbol 144, 158raising argument limits 140-141 linkeroptions= compiler option 98-99, 120 makedir command (AmigaDOS) 22 linking programs 120-127, 173-174makeglobalsymboltable= compiler option See also linker options 100 See also sc commandSee also globalsymboltable= compiler See also slink commandoption eliminating standard I/O window137 malloc function 141, 277 entering slink command 121 map compiler option 100 linker messages 258-264map linker option 124 producing executable modules 173-174 mapfile= compiler option 100 sc compared with slink 120 startup modules 14l-l44maphunk compiler Option101 maplib compiler option 101 using Bulld Icon 18 19 mapoverlay compiler option 101 using Shell 24 mapsymbols compiler Option 101 list compiler option 99 mapxreference compiler option 101 listfile= compiler option 99 math= compller option 102 listheaders compiler option 99 math libraries listinclude compiler option 99-100including incorrect library 194 listmacros compiler option 100unresolved symbol problems 193-194 listnarrow compiler option 100 math=coprocessor compiler option 270 listsystem compiler option 100 mathematics functions 274 load and stay resident programsmath=ffp compiler option 102, 270 See detachable programsmath=ieee compiler option 102, 270 See residentable programsmath=standard compiler option 16, 17, load files 172102 Load Macros option, Project pull down math=68881 compiler option102, 158 menu 55math=68882 compiler option102 locale specific behavior 278-279MAXARG symbol 140 logical device names maxhunk linker option 124 ENV: 10 maximumerrors= compiler option 102 ram: 11 maximumwarnings= compiler option 102 logical device names, assigning 10 memory options include: 10bssmemory= 86 lib: 10codememory= 87 sc: 10 datamemory= 90 long __BackGroundIO external definition memorysize= 103-104 143 memorysize= compiler option 103-104 long __priority external definition 142See also argumentsize= compiler long __stack external definition 142 option Index 307 See also preprocessorbuffer= compileroverriding data=auto compiler option option 90 default values for argumentsize and purpose and use 156-157 preprocessorbuffer options 104 nested comments 168 size specifications 103See also commentnest compiler option menusNEWDATAL symbol 144 See also specific menusnewline character (\n), AREXX macros 65 abbreviated menus 50 \n (newline character) 65 block operations 53No processing option 61-62 deleting text 52noalvs linker option 124 editing new files 55 noautoreg compiler option 180 exiting screen editor (se) 56nodebug linker option 125 inserting text 52 __NOMERGE hunk 175 keystroke macros 55non-reentrant programs 176 managing windows 54nostdio option 137 moving around in files 51 nover linker option 202 naming files 56NTRYHUNK code hunk 133, 175 saving files 56 searching for and replacing strings 53 selecting menu options 50 O undoing changes 56 __MERGED hunk 172, 175.o filename extension 78 message browserobject= compiler option 78, 105 See scmsg (message browser) object file icons 26 messagesobjectlibrary= compiler option 106 See error and warning messagesobjectname= compiler option 106 modified compiler option 104 oldpreprocessor compiler option 106-107 Move option, Block pull down menu 53 onedata linker option 125 moving around in files 40, 51onerror= compiler option 107-108 msg statement online help See #pragma msg statement See help system multiplecharacterconstants compiler option Open New Window option, Project pull- 104-105 down menu 55 multipleincludes compiler option 105 Open Window option Project pull down menu 55 Windows pull-down menu 47, 54 Noperands conversion types 179 naming files 56 widest operand 178 narrow types in pre-ANSI function optimize compiler option 108 declarations 187-188optimizealias compiler option 108 national characters in variable names 168optimizercomplexity= compiler option 108 near BSS hunk 172optimizerdepth= compiler option 109 near data 172 optimizerglobal compiler option 109 near data hunk 172 optimizerinline compiler option 109 __near keyword 154, 156-157optimizerinlocal compiler option 109 affecting only calling function 155 optimizerloop compiler option 109 compatibility with previous releases 157optimizerpeephole compiler option 109 declaring data items 176 optimizerrecurdepth= compiler option declaring near data 172 110 308 Index optimizersize compiler option 110 parameters=register compiler option 110, optimizertime compiler option 110157-158, 202 Options pull down menuparameters=registers option 294 Auto-lndent Mode 62 63parameters=stack compiler option110, Backup File Mode 63158 Case Sensitive Characters 63-64 patterns, searching for 43 Column Display 63 perror function messages 276-277 Configuration Window 57plain linker option 125 definition 58 plus sign (+) Input Processing 61-62continuing lines of filenames for Prompt Before Undo 63overlays 129 Searches Method 63 separating filenames for overlays 129 Tab Expansion Method 62separating filenames for sc command 78 __OSlibversion external long integer 150 pointers overlay linker option 125 declaring 155 overlay manager default length 178 customizing 133SAS/C Compiler behavior 270-271 definition 127portable code, writing 181-189 overlay tree See also implementation defined asterisks indicating depth 129 behavior definition 127 compiling with strict or ANSI options examples 128,130-131,132181-182 terminating with pound sign (#) 129 data and type sizes 183 overlays 127 133defining __STRICT__ANSI preprocessor data=near compiler option 132 symbol 182 definition 127 guidelines for avoiding problems functions in overlays 128 182 183 listing filenames 129incomplete structure tags 188-189 maximum number 129 narrow types in pre ANSI function nodes in executable module 174 declarations 187-188 overlay option 129structure size and padding 493 root node 127, 128-129writing structures to disk file 184-186 smallcode compiler option 132pound sign (#) smalldata compiler option 132terminating overlay tree 129 specifying compiler options 132-133 #pragma msg statement 162, 162-163 stringmerge compiler option 132error 162 using mu]tiple shared libraries instead example 163 12, ignore 162 with files 129 130 pop 162 overlymgr linker option 125 push 162 overwrite mode 41warn 162 __ovlymgr global symbol 133 #pragma statements 161-163 flibcall 162 types of #pragma statements 161 P using in residentable programs 143 precision= compiler option 111 .p filename extension 78 prelink linker option 121, 125 padding structures 183preprocessing parameters= compiler option 110-111 comma (,) operator 168 parameters=both compiler option 110, oldpreprocessor compiler option 106-107 158, 202sizeof operator 168 Index 309 preprocessing directivesPrompt Before Undo option, Options pull- SAS/C Compiler behavior 272-273 down menu 63 preprocessor symbolsprototype generation 94 95 defined by compiler 119PutMsg exec function 165 defined by compiler options 120 pwidth linker option 125 __STRICT__ANSI 85, 182 preprocessorbuffer= compiler option 111 preprocessoronly compiler option 111-112 Q primary node 174 Print option, Block pull down menu 53q (quit) command 21, 25 printing messages in the Shell 143qualifier keys 59, 60 __priority external definition 142 problem solving 193-202qualifiers See also Technical Support SAS/C Compiler behavior 272 asctime function 200-201 question mark (?) CodeProbe problems 197getting help for sc command 78 compilation errors 195-197quiet linker option 126 crashing the machine 200 quit command (debugger) 21, 25 eliminating informational messages 202 formatted print functions 197-198 getchar problems 198 R incorrect results from function calls 199 resident programs or libraries 201 ram: logical device 11 resolving undefined symbols 193-195 raw code for key definitions 60 standard I/O window 201rawcon function 198 writing replacement functions 202Read option, Block pull-down menu 53 proceed commandread.me file 5, 9 equivalent to Return key 21 realloc function 277 process restrictions using startup modules recompiling and linkillg (rebuilding) 141programs 19, 24 processor-specific codereentrant and non-reentrant programs 176 See CPU= compiler optionregargs keyword 157 158 programname= compiler option 112affecting caller and callee 155 Project pull down menu purpose and use 157 158 Close Window 47 Convert Macro to Key55 usmg with user-written replacement definition 58 functions 111,202 Display Names 56register keyword 180, 271 Exit SE 47, 56register storage class 180 Insert File 52registerized parameterS 294 Load Macros 55registers Open New Window 55 SAS/C Compiler behavior 271 Open Window 55regular expressions Rename 56definition 41 Save & Close 19, 24, 47, 56entering in searches 43 Save & Continue 47, 56Use Regular Expressions option 63 Save & Reopen 47, 55, 56 relocation records 172 Save Macros 55remove function 275 Undo Last Change 56Rename option, Project pull-down menu projects, setting up 14-1556 310 Index replacing character strings 42-43 s:user startup file entering regular expressions 43 modifying 5-6 keys 53solving problems 195 menu options 53 SAS/C language options 43 See Amiga-specific features of SAS/C prompted replacements 42language RESBASE symbol 144sascopts file, converting 285-286 resetoptions compiler option 79, 112Save & Close option, Project pull-down resident command (AmigaDOS) menu 19, 24, 47, 56 not used with detachable programs 143 Save & Continue option, Project pull-down using with residentable programs 143menu 47, 56 resident libraries, creating 201Save & Reopen option, Project pull down resident programmenu 47, 55, 56 definition 143Save Macros option, Project pull-down residentable programs 143-144 menu 55 See also detachable programssaveds compiler option 112, 144, 158 creating 143-144 __saveds keyword 112, 158-159 cres.o startup module 143, 144 affecting definitions of functions 155 debugging with catchres.o startup Amiga-specific features 158-159 module 144applications without startup modules requirements 144 145 solving problems 201compared with saveds compiler option symbols created by slink 144 158 unable to reference absolute symbolsequivalent to geta4 function 159 159not used with cres.o and catchres.o RESLEN symbol 144 startup modules 144, 159 resolving undefined symbols 193-195purpose and use 112 restoring textsaving See undoing changes compiler options 17 Return key files 46-47, 56 equivalent to proceed command 21keystroke macros 45-46 reusing saved configuration settings 64 new settings in Configuration Window root linker option 126 64 root node sc command 77-78 contents 128-129, 174See also compiler options definition 127compared with slink command 120 running programs 174-175 compiling and linking programs24 heap area 175default icons 26 Shell method 24-25filename extensions 78 stack area 174link compiler option 24, 120 Workbench method 19-20 options for specifying filename extensions 78 specifying multiple filenames 78 Sspecifying startup modules 141 startup option 141 .s filename extension 78 syntax 77 s:startup-sequence file sc.guide help database 29 modifying 5-6sclib.guide help database 29 solving problems 195 sc util.guide help database 28 s:startupII file, modifying 5 sc: device name, assigning 10 Index 311 scdebug.library 7status line 39-40 scgo.library 7 substituting another editor 14 scgst.library 7 switching between windows 38, 48 schi.library 8 undoing changes 44, 56 sckeymap.library 8window display size 39 sclist.library 8window management 47-48, 54 scmsg (message browser)screen editor (se), controlling 49-56 correcting source file errors 18, 24 block operations 43-44, 53 SAS/C Message Browser window 18changing colors 54 specifying errorrexx compiler option 16, deleting text 41, 52 17 editing new files 55 scmsg.guide help database 28exiting the editor 47, 56 scoptions file inserting text 40-41, 52 converting sascopts file 285-286 keystroke macros 45-46~ 55 overriding settings 79managing windows 47-48, 54 saving options 16, 23 moving around in files 40, 51 SCoptions icon 14naming files 56 scopts utility replacing character strings 42-43, 53 gadgets for selecting options 17 saving files 46 47, 56 running from screen editor (se) 48searching for character strings 41-42 setting compiler options 16-1843, 53 specifying options on command line 23selecting menu options 50 starting with SCoptions icon 14, 16 undoing changes 44, 56 using scopts screens 23screen editor (se), customizing See Configuration Window, screen editor scpeep.library 7(se) screen editor (se) 37-48 See also AREXX interface screen editor (se), startmg 38 39 See also se command block operations 43-44 53 specifymg more than one filename38 compiling programs 8 using Edit icon 14, 38 setup command control characters 46default icons 26 creating source files 15-16, 22 setting up projects 14-15 deleting text 41, 52scspill.library 8 Edit window, illustration 19sc1.library 7 editing text 40 46 sc2.library 7 entering text 40-46sc5 command exiting 46-47, 56 converting old code to Version 6 285 getting help 48 se command insert mode 40-41, 52See also screen editor (se) keystroke macros 45-46, 55-d option 38 maximum number of open files 39 default icons 26 moving around in files 40, 51syntax 38 overwrite mode 41 -v option 38 replacing character strings 42-43, 53 se.dat file 38 saving files 46-47, 56 se.guide help database 28 Screen Editor Help screen 28Search pull down menu searching for character strings 41-42,Line Number 51 43, 53Search Again 53 split-screen mode 48Search and Replace 53 starting 14, 38-39 String Search 53 312 Index Searches Method optioncompared with sc command 120 Options pull-down menu 63 default icons 26 String Matching 41, 63define linker option 137 Use Regular Expressions 63eliminating standard I/O window 137 searching for character strings 41-42invoked by smake utility 19 See also replacing character stringslinker messages 258-264 backward searching 42specifying startup modules 141 case sensitivity 42symbols created for residentable entering regular expressions 43 programs 144 forward searching 41 syntax 121 keys 53smake utility menu options 53compiling programs 18-19 regular expressions 41definition 14 String Matching option 41 starting with Build icon 14 semicolon (;) smallcode compiler option 113, 132, 177 Asm mode 62 smallcode linker option 126 setbuf funnion 275 smalldata compiler option 113, 132, 177 setbufv function 275 smalldata linker option 126 setenv command 11 snapshot files shared librariescreating 142, 144 creating 144 hard drive corruption 142, 144 using instead of overlays 127 Shell solving problems environment for argv and argc 135-136See problem solving printing messages in the Shell 143 source code programs linked with startup module not placed in sc dlrenory tree 8 141source directory 7 using SAS/C tools 22-25 source file errors, correning 16, 19 24 Shift keys source files, creating equivalence 60screen editor (se) 15-16, 22 independent operation 60 Shell 22 short integers Workbench 15-16 problems with casting results 179 Source window (CodeProbe) 20-21, 25 shortintegers compiler option112, 178, sourceis= compiler option 113 179, 183 special keywords SIGILL signal 274See keywords SIGINT signal 274 stack signal funnion 274alignment problems 156 signed data typesdefinition 160 See data types and sizesmanaging stack space 160-161 signed keyword 177, 183purpose and use 174 sizeof operator running out of stack space 161 portability of structures 183__stack external definition 142 preprocessor direnives 168__stack external long integer 160, 161 slash (/)stack overflow routine (__ CXOVF) 160 comment start sequence (/*) 168 stackcheck compiler option 113, 160, 161 slashes (//) defining comment blocks 168__stackext keyword 160-161 slink command affecting definitions of functions 155 See also linker optionsmanaging stack space 160-161 See also linking programs pointer register variables 161 Index 313 stackextend compiler option 113 stepping through programs 21 managing stack space 160, 161_STI preceding function name 145 pointer register variables 161 __STKNEED external long integer 160, purpose and use 113 161 standard I/O windowstorage classes 179-180 changing window attributes 137-138 automatic 180 declaring _ stdiowin external variable external 180 137formal 180 eliminating 137, 201 register 180 keeping open 20static 180 keywords for controlling 138strerror function 278 program crashes caused by eliminating __STRICT __ANSI preprocessor symbol 138 85, 182 standard programs, creating 142 strict compiler option 114, 181-182, 183 standardio compiler option 114strict reference-definition model 169 starter _ project directory 6, 14String Search option, Search pull-down startup= compiler option 114 menu 53 startup files, modifying stringconst compiler option 114 adding assign statements 10stringmerge compiler option 114-115 s:StartuP sequence file 5-6 declaring data items 177 s:startupll 5 effect on static objects 180 s:user-startup file 5-6purpose and use 114-115 startup modules 140-145using overlays. 132 . See also autoinitialization functionstripdebug compiler option 116 stripdebug linker option 126 See also autotermmahon functlon struct IntuiMessage 165, 166 argument hmut, changmg 140-141 struct Message 166 detachable programs (load and stay struct WBStartup 136 resident) 142-143 linking with startup modules 141-144Structureequivalence compiler option 116, 154,275 list of modules 140 structures modifying __main 140-141 determining size and padding 183-184 residentable programs 143-144equivalent structures 164-166 shared libraries 144implicit structure references 164 Shell process restrictions 141 incomplete structure tags 188-189 standard programs 142 IntuiMessage structure 165, 166 tasks performed by all modules 140 IOExtSer 166 writing applications without startupportability guidelines 185-186 modules 145SAS/C Compiler behavior 271 startup option 141 writing to disk file 184-186 statements __stub library function 121 SAS/C Compiler behavior 272suppressed messages, enabling 265 static storage class 180 swidth linker option 126 status line, screen edhor (se) 39-40switch options 79 _STD preceding function name 145 Switch Windows option, Windows pull-down __stdargs keyword 111 menu 39 affecting caller and callee lSS Switch windows option, Windows pull-down purpose and use 111, 157-158menu 54 __stdiov37 external variable 138 switching between windows 38, 39, 48 __stdiowin external variable, declaring symbols 137-138See linker symbols 314 Index SYSBase tolower.se, AREXX macro 70 initialized by startup code 149 toupper.se, AREXX macro 70 system function 278 translation (diagnostics) system library base pointersSAS/C Compiler behavior 268 See constlibbase compiler optiontrigraph compiler option 116 system library bases, initializing 147-151 automatically initialized library bases 148-149 U defining library bases in your code 149 examples 148, 149-150udata hunk 172 failure of libraries to open 150-151undefined symbols, resolving 193-195 library bases for .library files 149underscore ( _ ) library revision numbers 150default prefix for functions 123 preceding linker symbols 122 Tunderscore compiler option 116 undo command 44 Undo Last Change option, Project pull down Tab Expanslon Method opbon, Optlons pull-menu 56 down menu 62undoing changes 44, 56 tab stops, setting 61 tb utility 142, 144 fifty line limit 44 Technical Support 29-34keys 56 See also problem solvinglast line of text deleted 41 BIX support 31 menu options 56 contacting 29-34Prompt Before Undo option 63 ITS (Electronic Mail Interface tounindent.se, AREXX macro 70 Technical Support) 31-32unions information required 33-34 SAS/C Compiler behavior 271 Internet support 31-32unnamed unions 163-164 phone number requirement 33 unschar compiler option 272 phone, mail, and fax support 30 unsigned data types problem description requirement 33_34See data types and sizes registration number requirement 3, 33unsigned keyword 177 return address requirement 33unsignedchar compiler option 116, 177 Usenet support 31-32 utilitylibrary compiler option 117 version number requirement 33 when to call 29-30 telephone numbers for Technical Support V 30 text hunk 172 -v option, se command 38 time and date variables locale specific behavior 278-279 displaying values 21 __TIME preprocessor macro 273 national characters in variable names time zone, default 278168 __tinymain routine 290verbose compiler option 117, 173 to= compiler option 116verbose linker option 126 to linker option 126verify linker option 126 Toggle Display Size option, Windows pull-version compiler option 117 down menu 39, 54 Version 5, converting Toggle Screen Size option, Windows pull- See converting from Version 5 to down menu 48Version 6 Index 315 WX /WAIT keyword 138 _ XCEXIT function 151 warn= compiler option XDEFS in hunks 172 enabling suppressed messages 265xref linker option 127 enabling warnings 183 xreference compiler option 118 purpose and use 117-118 xreferenceheaders compiler option 118 warnings, enablingxreferencesystem compiler option 119 See also error and warning messages See also warn= compiler option incomplete structure tags 189Z narrow types 188 warnvoidreturn compiler option 118 zero-length arrays 163-164 widest operand 178 width linker option 126 windows Special Characters displaying two files 39 managing in screen editor (se) 47-48, 54{} (braces) switching between windows in screen See braces ({ }) editor (se) 38, 39\ (backslash) text window size in screen editor (se) 39See backslash (\) Windows pull down menu / (slash) Close Window 54 See slash (/) Create New CLI 54+ (plus sign) Interlace Toggle 54See plus sign (+) Open Window 47, 54* (asterisk) Switch Windows 39 See asterisk (*) Switch windows S4*__procname external definition 142 Toggle Display Size 39, 54; (semicolon) Toggle Screen Size 48 See semicolon (;) with= compiler option 118, (comma) with files See comma (,) asterisk (-) indicating depth of overlay_(underscore) tree 129See underscore ( _ ) examples 130-131 ? (question mark) format 129 See question mark (?) plus sign (+) separating filenames 129 : (colon) pound sign (#) terminating overlay tree See colon (:) 129# (pound sign) with linker option 127 See pound sign (#) Workbench 135-138 @ (at sign) environment for argv and argc 136See at sign (@) program structure, example 136 running programs 135-138 standard I/O window management 1 137-138 using SAS/C tools 14-21 16-bit address Write option, Block pull down menu 53 advantages and disadvantages 176 writing portable coderelative to program counter 176 See portable code, writingrelative to register A4 176 316 Index 16-bit references specifying with code = compiler option 87 __far keyword 156 __near keyword 156 3 32-bit address advantages and disadvantages 176 32-bit references chip data 176 specifying with code = compiler option 87 End Of Part 4