r~ BLS32047.Aʐ BLS32047.ABACKUP/COMMENT=VAX BLISS-32 Binary Kit/INTERCHANGE/LOG/VERIFY BLISS$:[BLISS32.V047.RN.EXTERNAL]BLS32047.RELEASE_NOTES;,BLISS$:[BLISS32.V047.COMMON]KITINSTAL.COM; BLISS$:[SACKS.WORK]BLS32047.A/LABEL=(BLISS)/SAVE/NOASSIST/IGNORE=LABELVAX BLISS-32 Binary Kit SACKS d iV6.0 _HANOI::  _$1$DUA23: V6.0 ~ 2*[BLISS32.V047.RN.EXTERNAL]BLS32047.RELEASE_NOTES;1+, .B/ 4QB@-%0123KPWOC56ri7)/ i89GHJ<* CHAPTER 13 BLISS-32 V4.7 RELEASE NOTESI This document contains information about the VAX BLISS-32 V4.7-9995 compiler. This compiler is for internal use only.& It is organized into four chapters:8 o Chapter 1 provides an overview of this file.I o Chapter 2 describes the changes since the last release of BLISS-32, V4.6-902.I o Chapter 3 describes incompatibilities and known deficiencies in this version.E o Chapter 4 describes how to install the BLISS-32 compiler.' 1-1 * CHAPTER 28 MAINTENANCE CORRECTIONS FOR BLISS-32A This chapter describes all changes made since the last release (V4.6-902). 2.1 BUG FIXES& The following bugs have been fixed.L o Incorrect code could be generated for compares of fields with similarH position, size and extension attributes, as in the example below:' .(.p1)<0,1> EQL .(.p2)<0,1>N o Incorrect code could be generated for SUBM when the destination operandI was the same as the first source operand, as in the example below:% SUBM(4, BLK[3], X, BLK[3])L o An error in the compiler caused it to look in the wrong directory forK the PDF (Program Design Facility) comment processing routines. ThisF error only showed up when invoking the compiler with /DESIGN orL /DESIGN=COMMENTS to process comments for PDF. The compiler now looks; in the SYS$LIBRARY directory, instead of PDS$PUBLIC.L o Very large BLISS programs could get an internal compiler error duringK the Final phase. It is unlikely that any human-written program willC ever be this big -- the program which found this problem was machine-generated.' 2-1 ' MAINTENANCE CORRECTIONS FOR BLISS-32K o When compiling very large programs (over 65000 bytes of instructionsL for a routine) the compiler could mistakenly truncate the offset of aL JMP instruction to a word. It would then issue a truncation warning.K o Very small programs on very fast machines could get a divide by zero> when the number of lines per CPU minute was calculated.F o ENABLE declarations may only appear in the outermost block of aJ routine. Although this restriction has always been in the Language? Reference Manual, it was not fully enforced in the past.G o The restrictions on ENABLE listed in section 13.3.2 of the BLISSN Language Reference Manual were not being enforced. Violations of thoseM restrictions now generate the warning message "Linkage conventions are- incompatible with ENABLE declaration."H o Declarations of global registers which did not specify a registerL number could lead to internal errors when a call using a linkage with0 that global register was being processed:/ linkage gg = call : global( g = 5 );( forward routine call_me : gg; :" routine do_call = beginC global register g; ! No register number specified.C call_me(); ! Used to cause internal error.J The user now gets only the warning message for the missing register number.M o BLISS incorrectly stored a fullword into non-fullword variables listedD as output parameters. This could over-write other variables: LINKAGE* FOO = JSB (; REGISTER = 1);. EXTERNAL ROUTINE BAR : FOO NOVALUE; OWN X : WORD, Y : WORD;4 BAR(; X ); ! Generated a fullword move2 ! and modified Y as well.' 2-2 I MAINTENANCE CORRECTIONS FOR BLISS-32N o The compiler did not issue a warning when a valued routine was declaredG as using a user-defined linkage which preserved the value-return register:* LINKAGE L = CALL : PRESERVE(0);6 ROUTINE R : L = 1; ! Should get a warningM A similar warning is already given when the value-returned register is declared NOTUSED.K o When a EXTERNAL LITERAL was also declared as a GLOBAL LITERAL in theH same module, correctly matching range attributes were incorrectly diagnosed.J o If a structure body contained a general structure reference, and anK access formal of the structure being defined was an access actual ofJ the general structure reference, the results were unpredictable for$ certain structure references.' 2-3 ' MAINTENANCE CORRECTIONS FOR BLISS-32 2.2 NEW FEATURES* The following features have been added.N o A new command-line qualifier has been added to allow new reserved words2 to be added in an upward-compatible manner. /SYNTAX_LEVEL=levelL To compile with the original set of reserved words (see Appendix A ofK the LRM) set the level to 1; to compile with the words QUAD, SHARED,J EXTERNAL_NAME, GRANULARITY, ALIAS and NOCHECK_ALIGNMENT as reservedM words (and thus having their specific BLISS meaning), set the level to 2.' Level equal to 1 is the default.K QUAD is an illegal allocation-quantity in BLISS-32. GRANULARITY andL SHARED are unimplemented. ALIAS, EXTERNAL_NAME and NOCHECK_ALIGNMENT0 are described elsewhere in this document.N o The predeclared structure BLOCK_BYTE has been added. This structure isB functionally equivalent to BLOCK[,BYTE]. The definition is STRUCTURE$ BLOCK_BYTE[O,P,S,E; BS] = [BS]' (BLOCK_BYTE + O);I BLOCK_BYTE is like BLOCK as regards the BLOCK_ALIGNMENT qualifier.K o BLISS now gives the informational message "Numeric literal overflow"J when it encounters numeric literals that cannot be represented in a fullword.H o BLISS now gives a better error message when output parameters areJ specified for machine-specific built-ins which do not expect output parameters.K o The error message for missing case label values has been improved to( list the values that are missing.M o An informational is now given for DECRU to 0, indicating that it is an infinite loop.' 2-4 I MAINTENANCE CORRECTIONS FOR BLISS-32F o The ALIAS attribute has been added for compatibility with otherN dialects. ALIAS indicates that variables that may change due to hiddenL effects of routine calls and indirect assignments. In this compiler,N it is equivalenced to VOLATILE. In order for the compiler to recognize> the ALIAS attribute, /SYNTAX_LEVEL=2 must be specified.K o BLISS has added new compiler-state lexicals and expanded old ones to support new dialects.G o %BLISS recognizes BLISS32M, BLISS32E, BLISS64E and BLISS32V.I o %BLISS32M, %BLISS32E, %BLISS64E and %BLISS32V have been added.L BLISS32 refers to both VAX, MIPS and Alpha 32-bit compilers and BLISSN languages. BLISS32M refers to MIPS-specific features. BLISS32E refersM to Alpha-specific features. BLISS32V refers to VAX-specific features.L The %BLISS lexical function now accepts unknown arguments. This willH allow backward compatibility of code written for future dialects.L o Two new lexical functions, %HOST and %TARGET, have been added to easeL porting BLISS programs to other targets. Their take as arguments oneG or two keywords representing the host or target architecture andtH operating system. %HOST returns 1 if its arguments represent theI system on which the compiler is running, and 0 otherwise. %TARGETeM returns 1 if its arguments represent the system for which the compilerh' generates code, and 0 otherwise. E The following keywords are recognized by these functions. ForbJ compatibility with future compilers, unrecognized keywords will notG generate a diagnostic, but will cause the functions to return 0.2 Architecture Operating System) VAX VMS, MIPS ULTRIX* ALPHA UNIX) OSFi) WNTK o There are three new lexical functions that return strings containingiF the compiler's state. %MODULE returns the current module name.M %ROUTINE returns the current routine name. %IDENT returns the currentl module ident.' 2-5t d' MAINTENANCE CORRECTIONS FOR BLISS-32sL o The LANGUAGE switch will now accept BLISS32V, BLISS32M, BLISS32E, and BLISS64E as values.M It is important to note that BLISS32 means the same as BLISS32V in the K LANGUAGE switch. It does not mean all 32-bit dialects as it does inpN the %BLISS32 predeclared macro or the %BLISS(BLISS32) lexical function.L The reason for this is that changing BLISS32 to mean all 32-bit could' break already existing programs.RK When there was only one 32 bit dialect (BLISS-32), LANGUAGE(BLISS32)uA meant only do transportabilty for BLISS-32. If we changedIF LANGUAGE(BLISS32) to mean all 32-bit dialects, transportabilityK checking would be done for BLISS-32 and BLISS-32M. This could causeC working programs to break (or at least get checking errors).RM o /LANGUAGE has been added as a command line qualifier. Its behavior isy/ identical to the module switch LANGUAGE.oK o Harmless duplication of attributes no longer gets a warning message.d@ The message can be re-enabled by use of /CHECK=REDECLARE.J The attributes which can be so duplicated are VOLATILE, NOVALUE and WEAK.I o Re-declaration of a GLOBAL REGISTER in a routine's linkage can nowrH generate an informational message if requested with the qualifier /CHECK=REDECLARE.3 LINKAGE L3 = CALL : GLOBAL( THREE = 3 );d! ROUTINE A : L3 = BEGINcD EXTERNAL REGISTER THREE; ! Normal case, uses the R3J : ! declared global in its caller.! ROUTINE B : L3 = BEGINsM GLOBAL REGISTER THREE = 3; ! Other case, creates a new global.G : ! Not the R3 from its caller.tJ Please note that the re-declaration is not a bug, unless you reallyH meant to use EXTERNAL REGISTER. More detail on the use of globalF registers is in the Language Reference Manual, in section 13.7.N o The limit on the number of actual parameters has been raised from 64 to 256.g' 2-6  I MAINTENANCE CORRECTIONS FOR BLISS-32aI o The attribute EXTERNAL_NAME and the new qualifier /NAMES (keywordseL UPPERCASE and LOWERCASE) have been added to support mixed-case names.J In order for the compiler to recognize the EXTERNAL_NAME attribute,) /SYNTAX_LEVEL=2 must be specified.B The EXTERNAL_NAME attribute can be applied to the followingI declarations: GLOBAL, EXTERNAL, GLOBAL ROUTINE, EXTERNAL ROUTINE,!J GLOBAL LITERAL, EXTERNAL LITERAL, GLOBAL BIND, GLOBAL BIND ROUTINE.N The string specified by this attribute is used as the external name forK the linker. THE EXTERNAL_NAME attribute treats its parameter as thee %STRING function does.aK The /NAMES command line qualifier that can be used to force externaleI names to upper or lower case. The qualifier only affects externalRK names which do not have the EXTERNAL_NAME attribute. It defaults toAM /NAMES=UPPERCASE or upper case names. /NAMES=LOWERCASE can be used tod! generate lower case names. I The name in the object file, printed in the listing records is theoK modified or external name. The name as described to the debugger is still the internal name.cF Please note that BLISS makes no promises about the treatment ofL lowercase names by VMS services, such as the librarian or the linker.A Examples of the use of the EXTERNAL_NAME attribute follow:cI GLOBAL ! Inside the module, the global XH X : EXTERNAL_NAME('xna') ! is referenced by the name 'X'.L INITIAL (2); ! Outside the module, the name 'xna'9 ! has to be used. L EXTERNAL ! Other string functions can be usedM Y : EXTERNAL_NAME(%CHAR(1)); ! inside the EXTERNAL_NAME attribute.iL ! In this case, the external name ofA ! 'Y' would be control-A. @ o A new CHECK option, /CHECK=[NO]ALIGNMENT, has been added.F When /CHECK=ALIGNMENT is specified, the compiler now checks theG alignment of field references and these declarations: EXTERNAL,lI GLOBAL, LOCAL, STACKLOCAL, OWN, MAP, BIND, GLOBAL BIND. A warningmE level message is issued when the compiler can determine that adJ declaration or field reference is poorly aligned. An informationalC message is issued when a data declaration is well aligned bytK coincidence (i.e. the alignment attribute is less than the default,[? but the segment happens to fall on the proper boundary).+, The default is no alignment checking.' 2-7 ' MAINTENANCE CORRECTIONS FOR BLISS-32a5 o The following on-off switches have been added:u [NO]CHECK_INITIAL 2 Equivalent to /CHECK=[NO]INITIAL. [NO]CHECK_ALIGNMENTo4 Equivalent to /CHECK=[NO]ALIGNMENT. [NO]CHECK_FIELDp0 Equivalent to /CHECK=[NO]FIELD. [NO]CHECK_OPTIMIZE3 Equivalent to /CHECK=[NO]OPTIMIZE.t [NO]CHECK_REDECLARE 4 Equivalent to /CHECK=[NO]REDECLARE. [NO]CHECK_SHAREp0 Equivalent to /CHECK=[NO]SHARE.H These switches are available both in the module header and in the SWITCHES statement.N o The ALIGN and VOLATILE attributes c6an now be placed between REF and theN structure name in data declarations. Placing them there indicates thatK the pointed-to structure (and not the pointer) has those attributes.o Examples: LOCALr) ptra: REF VOLATILE BLOCK,A) ptrb: REF ALIGN(0) BLOCK;IK Both ptra and ptrb have default alignment and are not volatile. ThetM BLOCK pointed to by ptra is volatile, and the BLOCK pointed to by ptrb  is byte-aligned.%N If these attributes are placed either before REF or after the structureL name, the behavior is unchanged from previous BLISS compilers: ALIGNF applies to the pointer only (not the pointed-to structure), andI VOLATILE applies to both the pointer and the pointed-to structure.L o The ALIGN attribute is now allowed on EXTERNAL, BIND, and GLOBAL BINDF declarations. On these declarations, it indicates the expected alignment.x' 2-8  eI MAINTENANCE CORRECTIONS FOR BLISS-32oM o Built-in functions for dynamic condition handlers are now implemented. F ESTABLISH(handler) is equivalent to .FP = handler. REVERT() isJ equivalent to .FP = 0. ESTABLISH and REVERT may not be used in the same routine as ENABLE.G o Attributes have been added to field declarations. The supportedrG attributes are VOLATILE and NOCHECK_ALIGNMENT. In order for the.M compiler to recognize the NOCHECK_ALIGNMENT attribute, /SYNTAX_LEVEL=2nM must be specified. All stores and fetches of fields with the VOLATILEF attribute are treated as VOLATILE accesses. If a field has theF NOCHECK_ALIGNMENT attribute, /CHECK=ALIGNMENT does not generateM alignment diagnostics for stores and fetches that use that field name.  Example:  FIELD foo= SET' foo1 = [0,0,32,0] : VOLATILE,t/ foo2 = [5,0,16,0] : NOCHECK_ALIGNMENTc TES;tM o The new storage-class INITIAL has been added. INITIAL storage is usedoG by the compiler to initialize non-static variables that have theJ INITIAL or PRESET attribute. This data used to be allocated in theN PSECT associated with the PLIT storage-class. This presented a problemN when initial values were relocatable and the PLIT PSECT was supposed to be shareable.L The default name for the INITIAL PSECT is $INITIAL$. It has the same, attributes as the default PLIT PSECT.J Please note that you may get new truncation errors at link time forG data that used to be put in the PLIT PSECT and is now put in theaL INITIAL PSECT. These errors can be avoided by appropriate use of the ADDRESSING_MODE switch.L| This new behavior can be disabled by using the command line qualifierI| /NOINITIAL_PSECT. Its complement (the default) is /INITIAL_PSECT. G o A warning is now given when a relocatable expression is put in amK| shareable PSECT for the PLIT or INITIAL storage-class. This warning L| can be disabled by using the command line qualifier /CHECK=NOSHARE or>| the NOCHECK_SHARE switch. The default is /CHECK=SHARE.' 2-9s e' MAINTENANCE CORRECTIONS FOR BLISS-32LH o The restriction in section 12.4.2 of the BLISS Language ReferenceN Manual on assignments to routine formals has never been enforced in VAXI BLISS. BLISS now commits to generating "reasonable" code for suchiL assignments, though they are still illegal given the rules of the VAXN calling standard, as that standard gives ownership of the argument list6 to the calling routine, not the called routine.K To detect assignments to formals, use /CHECK=REDECLARE to detect the K implicit re-declaration of a formal as a locally-owned data-segment. N The following warning message is given: Assignment to formal parameter is illegalr( 2-10 i* CHAPTER 3E INCOMPATIBILITIES, KNOWN DEFICIENCIES AND DOCUMENTATION ERRORSlI This chapter describes incompatibilities, known compiler deficiencies  and documentation errors. 3.1 INCOMPATIBILITIES I The format of BLISS library files has changed. All library files mustE be recompiled.i 3.2 KNOWN DEFICIENCIESI PROBLEM: The debug symbol table for routines with JSB linkages is noteI generated correctly. Specifically, the addresses ofXI parameters and locals on the stack are correct only atpI routine entry, since they are given in terms of SP, whoseI value may change.I SOLUTION: At routine entry, use the debugger's DEFINE command toeD define a symbol as the current address of the variable.& Example: DBG> EVALUATE X( DBG> DEFINE X = \' 3-1i tA INCOMPATIBILITIES, KNOWN DEFICIENCIES AND DOCUMENTATION ERRORSc KNOWN DEFICIENCIESy) PROBLEM: The following code fragment:a d = 0;e .....$ WHILE .d NEQ 0 DO BEGIN ....aE x = 66 / .d; ! Assume "d" never writteng ...* IF .y THEN EXITLOOP ENDI will cause a zero-divide exception during execution wheneI compiled with normal optimization. The compiler believeshI that the expression "66/.d" is loop invariant and moves theM) computation out of the loop. I SOLUTION: In this particular case, the expression can be rewritten as:A WHILE 1 DO  BEGIN .....1 IF .d EQL 0 THEN EXITLOOP;  .... # x = 66 / .d;  ..... END; I In this case, the expression cannot be moved out of the  loop.' 3-2  I INCOMPATIBILITIES, KNOWN DEFICIENCIES AND DOCUMENTATION ERRORS]I KNOWN DEFICIENCIESeI PROBLEM: Incorrect code generated for structure definitions of thea form:1 STRUCTURE BAD[I,P,S]= [%UPVAL]BD (IF .I THEN BAD ELSE BAD + .BAD<16,16>); OWN X: BAD[]; LOCAL T;p# T = .X[.T,0,12]; I "X" is loaded into a register in the THEN-branch, but thed> ELSE-branch uses the register without loading it.I SOLUTION: This is the result of a design flaw in the way structureeI references are expanded. BLISS semantics guarantee that a I structure actual-parameter is evaluated only once. This isiI implemented by treating the first occurrence of a structure I formal as if it were a BIND declaration. The otherGI occurrences of the structure formal are then treated as if I they were uses of the "imaginary" bind-name. This choice of I implementation fails when the first occurrence of theEI structure formal is in conditional flow. The problem can beCI avoided by ensuring that the first occurrence of each formalnI is outside of conditional flow. The example structureo" should be written as:3 STRUCTURE GOOD[I,P,S] = [%UPVAL]bI (GOOD; IF .I THEN GOOD ELSE GOOD + .GOOD<16,16>);eI Note that the "structure-name" is the zeroth structurerI formal parameter. The formals "I", "P", and "S" are already I outside of conditional flow, so they are processedtI correctly. This change will cause the compiler to useeI slightly more memory, but the resulting code will be,I correct. There also should be no reduction in optimization.hI Be aware that no problem will occur when the conditionalmI flow is constant folded at compile time, or when there is noa4 conditional flow in the structure body.' 3-3e oA INCOMPATIBILITIES, KNOWN DEFICIENCIES AND DOCUMENTATION ERRORSR KNOWN DEFICIENCIESII PROBLEM: If uninitialized variable checking is in effect, the I compiler occasionally generates spurious messages when a I variable is initialized in one branch of an IF, CASE, orI SELECT in a loop and then referenced in another. Fort example:h+ LOCAL X, FIRST_TIME,...;(& FIRST_TIME = 1;" WHILE condition DOn BEGIN% IF .FIRST_TIMEi THENa X = 0 ELSE.& X = .X + 1;& FIRST_TIME = 0; . . . END;dI The compiler will report that X is uninitialized in "X = .Xa + 1".I SOLUTION: The simplest and best solution is to initialize suchiI variables before they appear in the loop. You can do this I with an assignment or by using an INITIAL attribute on the " variable declaration.I You can also suppress uninitialized variable messages byII using the /CHECK=NOINIT qualifier on the compiler commandn line. 3.3 DOCUMENTATION ERRORSI o In the description of the CMPC5 BUILTIN in the User Manual,aI FILLA is referred to as the "address of a word." It should bee "address of a byte." I o In the Language Reference Manual's Appendix D, CVTRDH andtI CVTRGH are listed as builtin functions for BLISS-32. Neithere function exists.' 3-4  l* CHAPTER 44 HOW TO INSTALL BLISS-32 V4.7D This chapter describes the installation procedures for the VAX-11? Bliss-32 Version 4.7 compiler. You should read this chaptere0 completely before beginning the installation. 4.1 INSTALLATION PROCEDURE+ To install Bliss-32, proceed as follows:tH 1. Log in under the privileged system manager's account. Since thisH installation procedure will recompile STARLET.REQ and LIB.REQ (ifI present in [SYSLIB]), this account should have a large working-seteB limit (500 to 1000 pages is recommended) to insure that the% installation proceeds quickly.T Issue the command: 9 $ @SYS$UPDATE:VMSINSTAL BLS32047 rF (To install in a system root other than the root of the running= system, you can use the following alternative command:sJ $ @SYS$UPDATE:VMSINSTAL BLS32047 OPTIONS R E where specifies the alternate system root in the formatw "__ddcu:[SYSn.]".)t* NOTE@ You should have at least 5000 free blocks on your6 system disk device before beginning the& installation procedure.' 4-1: s HOW TO INSTALL BLISS-32 V4.7  INSTALLATION PROCEDUREA 2. If there are other users on the system, or you have DECnetG running, VMSINSTAL will warn you and ask if you want to continue H with the installation. DECnet should not cause any problems. ItI is slightly safer to install when you have the system to yourself,nF but other users on the system normally will not cause problems.F VMSINSTAL will also ask if you are satisfied with the backup ofD your system disk. It is always a good idea to have a currentG system disk backup before performing an installation. VMSINSTALo will then report:, The following products will be processed: BLS32 V4.7d8 Beginning installation of BLS32 V4.7 at hh:mm9 %VMSINSTAL-I-RESTORE, Restoring product save set A ...cN %VMSINSTAL-I-RELMOVED, Product's release notes have been moved to SYS$HELP.1 BLISS-32 V4.7IQ Copyright Digital Equipment Corporation. 1976, 1993. All rights reserved. Product: BLISS32 Producer: DEC Version: 4.7# Release Date: 3-OCT-1989 G * Does this product have an authorization key registered and loaded?c2 If you respond "NO" the installation continues:K %BLS32-W-NOLICENSE, License not registered. Installation will continue. C After your BLISS-32 license has been registered, D : compile the system require files and run the IVP.7 To compile the system require files: 4 $ SET DEFAULT SYS$LIBRARY2 $ BLISS/LIBRARY STARLET: $ BLISS/LIBRARY=LIB STARLET+LIB' 4-2e I HOW TO INSTALL BLISS-32 V4.7I INSTALLATION PROCEDUREa1 $ BLISS/LIBRARY TPAMAC " To run the IVP:2 $ @SYS$TEST:BLISS32$IVP The installation continues:9 %VMSINSTAL-I-RESTORE, Restoring product save set B ...=D * Do you want to purge files replaced by this installation [YES]?= * Do you want to run the IVP after the installation [YES]?oL This kit contains a file summarizing the new features, changes,L restrictions, and compatibility issues in this release of VAXL BLISS-32. This file is named BLS32047.RELEASE_NOTES and will be placed in SYS$HELP:.EL The release notes contains information valuable to VAX BLISS-32L programmers. Please inform your VAX BLISS-32 users of this file's existence.L The BLISS help file contains extensive documentation on the BLISSL language. Since this material requires about 525 blocks of disk, space, its inclusion is optional.* * Do you want the long help file [YES]?H All questions regarding the installation have now been asked.6 The system directories will now be updated.8 %BLS32-I-LIBBUILD, Building the precompiled librariesL This phase of the installation process compiles the STARLET, LIB,L and TPAMAC L32 files. The corresponding REQ files are expectedL to be in SYS$LIBRARY. If one is missing, you will receive aL warning message and tha1gS~ BLS32047.A %2[BLISS32.V047.RN.EXTERNAL]BLS32047.RELEASE_NOTES;1QB/>t library file will not be created. This@ will not interfere with the rest of the installation.B %VMSINSTAL-I-SYSDIR, This product creates system disk directory VMI$ROOT:[SYSTEST.BLS32].4 * * * * * * * * * * * * * * * * * * * * *4 * *4 * This kit and its contents are for *4 * *4 * DIGITAL INTERNAL USE ONLY. *4 * *4 * * * * * * * * * * * * * * * * * * * * *' 4-3  e HOW TO INSTALL BLISS-32 V4.7  INSTALLATION PROCEDUREmQ %VMSINSTAL-I-MOVEFILES, Files will now be moved to their target directories...t? If you said that the PAK had been installed, the IVP is run:l? %BLS32-I-IVP, Performing Installation Verification Procedure,# *************************** ! Successful Installationu of VAX Bliss-32 V4.7-999# *************************** 8 Installation of BLS32 V4.7 completed at hh:mm, VMSINSTAL procedure done at hh:mmG 3. If BLISS32 is a known shared image on your system, you will have > to use the INSTALL utility to replace it at this point.' 4-4echecking is in effect, the I compiler occasionally genervN~ BLS32047.An+%[BLISS32.V047.COMMON]KITINSTAL.COM;60Q%*[BLISS32.V047.COMMON]KITINSTAL.COM;60+,n./ 4Q-+0123KPWO56ױB-7dQR=89`vfGHJ(N$ !***************************************************************************$ !4$ ! K I T I N S T A L . C O M $ !>$ ! COPYRIGHT (C) 1988, 1989, 1993 BY=$ ! DIGITAL EQUIPMENT CORPORATION, MAYNARD<$ ! MASSACHUSETTS. ALL RIGHTS RESERVED.$ !J$ ! THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIEDM$ ! ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSIONF$ ! OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIESI$ ! THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHERN$ ! PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.$ !M$ ! THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE ANDN$ ! SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION.$ !H$ ! DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS;$ ! SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY DIGITAL.$ !N$ !***************************************************************************$ !$ SAVE_VERIFY := 'f$verify(P2)2$ BLS32$RETURN := exit 0 * f$verify(SAVE_VERIFY) +*$ on control_y then vmi$callback CONTROL_Y&$ on warning then BLS32$RETURN $STATUS$$ !+B$ ! This procedure installs BLISS-32 V4.7 on VMS V5.0 (or greater)$ ! using VMSINSTAL.$ !-.$ if P1 .eqs. "VMI$_INSTALL" then goto INSTALL'$ if P1 .eqs. "VMI$_IVP" then goto IVP$ BLS32$RETURN VMI$_UNSUPPORTED$ $!-------- $ INSTALL: $!-------- $ on error then goto OTHER_ERROR$ GOTO BEGIN_INSTALLATION$ OTHER_ERROR:)$ vmi$callback MESSAGE E INSTLABT -> "Aborting installation of VAX BLISS-32 due to error"$ BLS32$RETURN VMI$_FAILURE$$ BEGIN_INSTALLATION:$ TYPE SYS$INPUT:. BLISS-32 V4.7N Copyright Digital Equipment Corporation. 1976, 1993. All rights reserved.$ !+#$ ! Check for correct VMS version.$ ! Requires at least VMS 5.0.$ !-6$ VMI$CALLBACK CHECK_VMS_VERSION BLS32$VMS_VERSION 5.0+$ IF BLS32$VMS_VERSION THEN GOTO VERSION_OK$($ vmi$callback MESSAGE E BADVMS1 -J "This kit requires VMS V5.0 (or later) for correct installation."($ vmi$callback MESSAGE E BADVMS2 -M "Please install VMS V5.0 (or later) before installing VAX BLISS-32"$ write sys$output ""$ BLS32$RETURN VMI$_FAILURE$ $ VERSION_OK:$ !+$$ ! Check free GBLPAGES and GBLSECTS$ !-$ BLS32$FAILURE = 0=$ vmi$callback GET_SYSTEM_PARAMETER BLS32$PAGES FREE_GBLPAGES=$ vmi$callback GET_SYSTEM_PARAMETER BLS32$SECTS FREE_GBLSECTS$ IF BLS32$PAGES .LT. 600$ THEN'$ vmi$callback MESSAGE E GBLPAGES -? "This kit requires 600 free global pages for installation." -8 "There are only ''f$string(BLS32$PAGES) free pages." -. "Use SYSGEN to increase GBLPAGES parameter."$ BLS32$FAILURE = 1$ ENDIF$$ IF BLS32$SECTS .LT. 2$ THEN'$ vmi$callback MESSAGE E GBLSECTS -@ "This kit requires 2 free global sections for installation." -B "There are only ''f$string(BLS32$SECTS) free global sections." -1 "Use SYSGEN to increase GBLSECTIONS parameter."$ BLS32$FAILURE = 1$ ENDIF$1$ IF BLS32$FAILURE THEN BLS32$RETURN VMI$_FAILURE$!$ FINDREQ := @vmi$kwd:FINDREQ.COM!$ LIBCOMP := @vmi$kwd:LIBCOMP.COM$$ !+<$ ! Make sure there is enough free system-disk space for the$ ! installation.$ !-0$ vmi$callback CHECK_NET_UTILIZATION BLS32$ 5000"$ if BLS32$ then goto ENOUGH_SPACE"$ vmi$callback MESSAGE E NOSPACE -K "5000 blocks of free system disk space needed to install VAX BLISS-32"$ write sys$output ""$ BLS32$RETURN VMI$_FAILURE$$ ENOUGH_SPACE:$$ !+$ ! Ask if user is licensed$ !-C$ vmi$callback CONFIRM_LICENSE BLISS$LMF BLISS32 DEC 4.7 3-OCT-1989$ if .not. BLISS$LMF $ THEN .$ VMI$CALLBACK MESSAGE W NOLICENSE -F "License not registered. Installation will continue."$ WRITE SYS$OUTPUT ""$ WRITE SYS$OUTPUT -4" After your BLISS-32 license has been registered,"$ WRITE SYS$OUTPUT -5" compile the system require files and run the IVP."$ WRITE SYS$OUTPUT ""$ WRITE SYS$OUTPUT -(" To compile the system require files:"$ WRITE SYS$OUTPUT ""$ WRITE SYS$OUTPUT -" $ SET DEFAULT SYS$LIBRARY"$ WRITE SYS$OUTPUT -" $ BLISS/LIBRARY STARLET"$ WRITE SYS$OUTPUT -$" $ BLISS/LIBRARY=LIB STARLET+LIB"$ WRITE SYS$OUTPUT -" $ BLISS/LIBRARY TPAMAC"$ WRITE SYS$OUTPUT ""$ WRITE SYS$OUTPUT -" To run the IVP:"$ WRITE SYS$OUTPUT ""$ WRITE SYS$OUTPUT -" $ @SYS$TEST:BLISS32$IVP"$ WRITE SYS$OUTPUT ""$ WRITE SYS$OUTPUT ""$ ENDIF$ !+$ ! Pull in the rest of the kit$ !- $ vmi$callback RESTORE_SAVESET B$$ !+5$ ! Ask the user all the necessary initial questions.$ !-$ write sys$output ""$ vmi$callback SET PURGE ASK$ IF BLISS$LMF$ THEN$ vmi$callback SET IVP ASK$ ELSE$ vmi$callback SET IVP NO$ ENDIF$$ !+C$ ! Provide online release notes. The user may have extracted themF$ ! with "OPTIONS N" on the VMSINSTAL command line, but we can't tell.$ !-$ type sys$input@ This kit contains a file summarizing the new features, changes,> restrictions, and compatibility issues in this release of VAXA BLISS-32. This file is named BLS32047.RELEASE_NOTES and will be placed in SYS$HELP:.@ The release notes contains information valuable to VAX BLISS-32< programmers. Please inform your VAX BLISS-32 users of this file's existence.$$ !+2$ ! Ask whether they want the long BLISS help file$ !-$ type sys$input:B The BLISS help file contains extensive documentation on the BLISSA language. Since this material requires about 525 blocks of disk" space, its inclusion is optional.$ vmi$callback ASK LONG_HELP -. "Do you want the long help file" YES B$ write sys$output ""?$ if long_help then append vmi$kwd:addbls.hlp vmi$kwd:bliss.hlp.$ vmi$callback DELETE_FILE vmi$kwd:addbls.hlp;$$ !+&$ ! Install the compiler command line.$ !-,$ vmi$callback PROVIDE_DCL_COMMAND bliss.cld$$ type sys$input> All questions regarding the installation have now been asked., The system directories will now be updated.$,$ IF .NOT. BLISS$LMF THEN GOTO skip_compiles$$ !+;$ ! Build the require libraries. Compile the STARLET, LIB,9$ ! and TPAMAC require files into library files using the)$ ! Bliss-32 compiler that is in vmi$kwd.$ !-#$ vmi$callback MESSAGE I LIBBUILD -) "Building the precompiled libraries"$ type sys$input:B This phase of the installation process compiles the STARLET, LIB,B and TPAMAC L32 files. The corresponding REQ files are expectedB to be in SYS$LIBRARY. If one is missing, you will receive aB warning message and that library file will not be created. This6 will not interfere with the rest of the installation.$$ findreq STARLET S W$ findreq LIB S W$ findreq TPAMAC S W$$$ define BLISS32 vmi$kwd:BLISS32.EXE$ libcomp STARLET$ libcomp LIB STARLET$ libcomp TPAMAC$ deassign BLISS32$$skip_compiles:$C$ vmi$callback PROVIDE_IMAGE BLS32$ BLISS32.EXE vmi$root:[SYSEXE]L$ vmi$callback PROVIDE_FILE BLS32$ BLS32047.RELEASE_NOTES vmi$root:[SYSHLP]@$ vmi$callback PROVIDE_FILE BLS32$ EZIO.DOC vmi$root:[SYSLIB]B$ vmi$callback PROVIDE_FILE BLS32$ EZIO32.B32 vmi$root:[SYSLIB]B$ vmi$callback PROVIDE_FILE BLS32$ MODULE.BLI vmi$root:[SYSLIB]A$ vmi$callback PROVIDE_FILE BLS32$ TUTIO.RNO vmi$root:[SYSLIB]A$ vmi$callback PROVIDE_FILE BLS32$ TUTIO.DOC vmi$root:[SYSLIB]A$ vmi$callback PROVIDE_FILE BLS32$ TUTIO.R32 vmi$root:[SYSLIB]B$ vmi$callback PROVIDE_FILE BLS32$ CONDIT.R32 vmi$root:[SYSLIB]$$ !+/$ ! Replace BLISS HELP command in the LIBRARY.$ !-)$ vmi$callback PROVIDE_DCL_HELP BLISS.HLP$$ !+$ ! Install IVP files$ !-=$ vmi$callback CREATE_DIRECTORY USER VMI$ROOT:[SYSTEST.BLS32]:$ vmi$callback PROVIDE_FILE BLS32$IVPCOM BLISS32$IVP.COM - VMI$ROOT:[SYSTEST]:$ vmi$callback PROVIDE_FILE BLS32$IVPSRC BLISS32$IVP.BLI - VMI$ROOT:[SYSTEST.BLS32]$$ @vmi$kwd:notify.com BLS32$$$ BLS32$RETURN VMI$_SUCCESS$$$!----------------------------------#$! End of VAX BLISS-32 Installation$$!----------------------------------$2$!---- ! Note: Any changes to this area should be/$ IVP: ! reflected in the separate IVP command$!---- ! file, BLISS32$IVP.COM$ !+$ ! Set up error handling.$ !-#$ on warning then goto IVP_ERROR&$ on control_y then goto IVP_CONTROL_Y$$ write sys$output ""$ write sys$output -G "%BLS32-I-IVP, Performing Installation Verification Procedure"$C$ if f$logical("BLS32$LIB_STARLET") .nes. "" then goto have_starlet$ type sys$input:? The module will not be compiled as part of this test procedure; since it uses STARLET.L32, and STARLET.REQ was not present< in SYS$LIBRARY. Instead, a pre-compiled version of EZIO32  will be used.$$ compile_ezio = "! "$ goto perform_test$$ HAVE_STARLET:1$ LIB = f$parse("BLS32$LIB_STARLET",,,"DEVICE") -. + f$parse("BLS32$LIB_STARLET",,,"DIRECTORY")$ compile_ezio = ""$$ PERFORM_TEST:8$ define/user_mode BLISS32 vmi$root:[SYSEXE]BLISS32.EXE;0$ bliss /object=vmi$kwd: /list=vmi$kwd:b32test -% vmi$root:[SYSTEST.BLS32]BLISS32$IVP4$ 'compile_ezio' define /user_mode SYS$LIBRARY 'LIB'B$ 'compile_ezio' bliss /object=vmi$kwd: /nolist SYS$LIBRARY:EZIO32Q$ link /notrace /nomap /executable=vmi$kwd:BLISS32$IVP vmi$kwd:BLISS32$IVP,EZIO32$ run vmi$kwd:BLISS32$IVP$$ BLS32$STATUS == VMI$_SUCCESS$ goto IVP_FINISH$$ IVP_CONTROL_Y:$ BLS32$STATUS == VMI$_FAILURE$ goto IVP_FINISH$ $ IVP_ERROR:$ BLS32$STATUS == 0 + $STATUS$ $ IVP_FINISH:$ on warning then CONTINUE$ on control_y then CONTINUE$ EXIT BLS32$STATUS$$!----------------------------$! End of IVP for VAX BLISS-32$!----------------------------S" ~ BLS32047.A p6cs{zduLEASE_NOTES;1W>t CiIrx|fZ k` `XYoaz&x{Rkt|exdR:O;;g #Q 8`ONmRXn3Cm 1g*&5/5 J?*X1i03b>,5'U)b 6sZ\]"QX[O&'A+vTEHaA}o1{~ec_hj;xWSA1_9!<@O:6'*ISF%FN 7*$md'8 i0"<77#T:gM.Dm +s Zu!ZajA/pA[e s 4kwodmk;yv#mrofahef7*#*vC| bfiyr2bINR} Jc~  YKIAY*******   nc  .  \<$:  _BKD1 ycAI^KDDCUpc~k0/b`;ERIy|0 ~ kitinstqocom# !, .ZBLISY'.V047.RN.EX^ERNAL]BKU$"6<'E PAUcALms^-[( W4.RD^Y0"iI4!Er e_,B]WS _G,Q\R=m sUmUgga}s CsIdQR#jsi%7PBT_NVIeS <PeDAD!?NPv^FU\kd'y DITkOWHh >i1LY*;;0%171o-eb78z2$i&d0*k'2***&yH s7 IEGZCFOX***************************$ !$ SAVE_VERIF~ 'f$verify(P2)2$ BLS32$RETURN := tuxTOߙGOsa?6v,,=G3F]AL RSTL4lESU S3M]Insti*6 .$ if P1 ?eQS gmif n " tNeNG; /!?8.;%IgB|8PVKEKN0$1A;gVP" 8hENGTOi'5?rmeG}b/ r0&">I.)!EM"%spnOGb0 )ifm`{cpnT;h5,!:,o-os tDn.tHECOHL CO". hAgeeba-8m'YE Yslib[ary0CY^EDv"5q}p}->i/Oter) *oRCORE5RN A6%&=}XrKGRAMSC@C B KI#16!/&)&O/1-:(!E_?oRDURIgGk pLEASET S2 Lv=;A%PaRIA @K O ANLN{6*I68,=s]A]ErwmW`i7eSYSOU@G+a>$<1-!fKucdT>,!s9=!=#.W saW 8+ )cIHE)'>15"!} and GBkSects$ ) 3 )blsfailure  )D@X$ba`lEaCK  po su}vp skawE_GBLAges R ^ Gg31-*y?57*:p1 .*75(!j#%V@epsdc$+1 ,g-*s,-''rlcP`&(SBSpage5O\l5RYEDihe ) nDoIyILERVQL  K(+?*a37U+C&6)p5/ sOKfLe})M2H? KITREQ?$"ENEDBU NGBLWKS/RWAI]WE at{|L7  NAR''f$8tRINGGblV@]p2*$?E R E@VH\y)oC&EM2:;.++ST OREAg&%&(# sB A t[r7 )WHE,l'[W(4$.0 eO[]iieW)5+6iPT IiyuPli1A1l0R^G&)" 6DLT. t& );he iAfEeDEV CA4e<=->eA5P"#>s,-t'HH /u}lP9 CEI/sFREER  SE"GOHS ALE#s)hN# EB L HB*E Blsse15LR*  S TS@MT Wuee[u F<+0"!nIOT CK GBLSCtion<P5M\KcciKgSONb rpha%%&& DI_ teG},!*iw3/3 2oB)=.EbzawFIlureth /N%92TW 20 +N5(ii>(4( u% rd JoU Fl/')d7+7OH^E$XMIr[2 !*!e>Hc;%oRei libcompR_NT2M"&5c((>K1.9e!tLe$wE{OBRgdDS> Q9 KROE  e sYSTEM DO B RW 1EjHcl,N @.&$ !-x)VMC%  T*'+0k0(e33:6( i($3 <:E0?sDZMC]TYF JfFS2)0ZT]H G R Noughsp/6(@eV)HA COm,='$5+A)+=!?30eWE.n)ACANYECI OKI AEICtEMDISKTCLEES T 4$1N%l9!!B7!a8f|iyu{~) / enoug.0!' 1!rnuPijej@Gw_Ila gfUSERISLICETQeD $ ) c {M L > L/osf+7*6" Censeblisslmf% &12_R!"*S@KEToct wWrgMSTERNUE\NKC+* 67 LF- thencOlHME vmicaml2&/9*s0 26EwI ;);-$"s R_)r j tHE9N WNTE E WA;L EW TGL~ VlGIST2 GTesyso;!=71R "i 8ri i sM!6;"'1CYXyz}.RAY L5#;7sD]FOL CLRERE XG|` wri56<,'T:!t 4&A@PtG{zMOM$LY  R T EABthw ivp 9 )lino sysoutput 8FkFji|~mui;" 'TOCOMPILET-=t6+=5)Mr=0%<'7Eb';L_S|mV jFvaluiITK sysoutputmuN)writesys|ootd)))setdefautsvrBRuRy8 )wmss tutpuujynG{h}ADb-i5&C >- %r4O%1sRlet8 )writesysoutqu5NImMm`oME&ls2\l>'>-|Y=LIB STARkEt lib8 )writesysoutput ; );$ CLES/librarytpamac 9 )writesysoutnvgNYNgLcor o sbts~>3 To t[d~eRrL^]@UaLLBACKrest een!=1? ) fhK|MDaTT EW NllmtHENECE2SITNSO\eed])FDceJ) ETSRXEVWrre@)M Bk8Setpurg!E"?*|e@) t }$LMFM)th*n>WLlNA35=a1/- B-*?e>7# ?8i @l& 27xdhSA1!&f"-L +5&9ae=Ni"8EN' )end:'md Io`uHl oV{DC$VCNA ER ]W1RTgeEXTRAC Gdh$ ! =iTH pt)n2=VR T4"70n0;/8A  ADG  MLBRT E @ge)@Ct Eg?yPESYS s &o{9 SO IHO UEF NU  NAHNNCTMLCn-eS  )REI @UT C _S  SA PD?", be'l/iupLISS-'2USW\AO(e#H/6ST\4,?e'Y EXI'N BmoSijgoDJFuVlR)EW ED W wan: THEON&,)>s0O DK a U|@AxfMlYSSAN_d t- h8 Wb",$sR  V LO FaINSEXTS EA M TIWDY M2-=:1-e) Ie.> sINCETHISB2-+&(93l7349TE bo9tBL; KOI SiVh)C ^IAN S NR E OJs 6sAlV,TA"KO'Klongh1$5a|M SE})V,  EAESETO M  THpUT E|],4n-#1)% @Pg&)+;l "917H7! e8WTD*-/;k+'/a:$.j&2*nB SK vKdi VMICAL l$"!t173:l-ACK _DM X!BhIWSdDJHiJn iAETVMllrCOMMANVlinB.$ ) LAIA B Kp;6#9cANDkbLISSCL5TA` yshY LHIcaJif/AUO0).2!IZ\IT/7a';?53%88T $aVENOW1-$ng Sa D QN;$a(93l0TwnuPpQt6 DEFINE2-;2>VFEG$kwdqBliss\0 1eV{B h41a4#7tm|sW`B) ( l?t73 01s0hEzL MM$".;$'2tK LeASSIGN.%:'sGZd RacuAK>O  LIshnC.C$ ;mICALB KI>4 $$%16&# +eI1l=\EG+:,=sU]\eJ[\VBCOT?::211+: 8hE}V L avkprovid,1 ",TEb <\B BLS32047 Releasenotes)VMIROOT{syshlp}` )VM[ Wamlna*kprovidefileblseziodoc)))VMI?.&:n b RvL59 k-2L*-3C)l{zvE_FIL bls\t-?i{oS}}{POI{1<6"i#9&e@) I<;;/i3,+.i#1HE0Smod1%$B'/=z')V,%m37V@F;'t='KrP]dy`O_8<>=%3'cb )VMIP L-.("81&;$ &0+#eljsy kmhe y{tC'@F)klVA _?}YSLI ]!  k Kmb|Sa@S3 C E5l*<>P!))"  NEC-'&r$*)On`e@)NAM KgIP aplBACKpr<#94*-0c":?e(9A.)*' HL!  $ )N 6%fEhssi I33#$%%6 72i%oqIwZE_,C# %12U_ec3+%t vqaRY Servmir otvabi{S 2a%VH+h*2?ZV$C N4rj  u{eH#:6PA,8p"+)E&bISS32hIvpcomoYIZsdm;A4*='/E5$/M HANDLINArpiJnooIws)ONOOE=%~e:*;rtEb NAO:TH E oTOivp,=n % l4CQeott+em IFFLO E-"sDZM/!b+;1a1#($KEE\N RWLNBOH : KT 4Te[3<$msYSINPU_turQs)eH FMLR NTRRL EAY RTCEEP h)SINCENE t"=( x-]V AH6&6;? zRE WASNOTtE oKigNK6 $K>-1r <RE* HYP H MI ]IO(OjEzio.cf I LDYhtL suP| M6  ULSEAotnMs TE  M( Tnntc/ hav":=1338 t[ UiEn"&1TTCJSAN.l0RGW)i676t''"& KCB_0*v;&1W[N 0  FPARSEblsr@G$ 6:0 4 )et dir 31=3-KGt wpilL_EZIO !  / raerformtest  )DE0$=euSERMODEblissm?=:ROOT{sysexe}blisf| o; )BLISSOBJEC5q&%(KWDLISTVMIK"*s:2TEST  ))VMIROOT{systestbls}blis`tM`Vp  )COMPILEEZIODEFINEUSERMODEw S$LIBAry#ibs*eVlP:Z P ACO TN] TS'+:J+:b1.<-[,4 !T[)LINK[ TIC JPS[ MUTD/#!h:(IVH,?i';VG<$"EIIV'l'2>ViIvp ezio`OLTmG7UEJWR'l*&!AWJ=v"ottMnz JAd'bsmu!EIHR8>iP76u 67!6nel0 GOTOiv=0"<",s!ddnP.$ IVP_CONTuOly> )blsstatusvmifailure -TgcH ivp@NgE,Ckr r|QRbE  TATU O p;1aFUeGH WW "37f>'%?hTok Ej PA0" =4vXH'"i}fbuPIwZ\\eOOulYTHENbzeusVh)-,'BL3statuu Ms>iIQB_YLCY YB CBYH YELY oad~~ seEOSe EOA$3pAO0l pi:= GZ{ o! alcjxljh ^ZDYNE dY es not mean all 32-bit dialects as it does inpN the %BLISS32 predeclared ma!o or the %BLISS(BLISS32) lexical function.L The reason for this is that changing BLISS32 to mean all 32-bit could' break already existing programs.RK When there was only one 32 bit dialect (BLISS-32), LANGUAGE(BLISS32)uA meant only do transportabilty for BLISS-32. If we changedIF LANGUAGE(BLISS32) to mean all 32-bit dialects, transportabilityK checking would be done for BLISS-32 and BLISS-32M. This could causeC working programs to break (or at least get checking errors).RM o /LANGUAGE has been added as a command line qualifier. Its behavior isy/ identical to the module switch LANGUAGE.oK o Harmless duplication of attributes no longer gets a warning message.d@ The message can be re-enabled by use of /CHECK=REDECLARE.J The attributes which can be so duplicated are VOLATILE, NOVALUE and WEAK.I o Re-declaration of a GLOBAL REGISTER in a routine's linkage can nowrH generate an informational message if requested with the qualifier /CHECK=REDECLARE.3 LINKAGE L3 = CALL : GLOBAL( THREE = 3 );d! ROUTINE A : L3 = BEGINcD EXTERNAL REGISTER THREE; ! Normal case, uses the R3J : ! declared global in its caller.! ROUTINE B : L3 = BEGINsM GLOBAL REGISTER THREE = 3; ! Other case, creates a new global.G : ! Not the R3 from its caller.tJ Please note that the re-declaration is not a bug, unless you reallyH meant to use EXTERNAL REGISTER. More detail on the use of globalF registers is in the Language Reference Manual, in section 13.7.N o The limit on the number of actual parameters has been raised from 64 to 256.g' 2-6  I MAINTENANCE CORRECTIONS FOR BLISS-32aI o The attribute EXTERNAL_NAME and the new qualifier /NAMES (keywordseL UPPERCASE and LOWERCASE) have been added to support mixed-case names.J In order for the compiler to recognize the EXTERNAL_NAME attribute,) /SYNTAX_LEVEL=2 must be specified.B The EXTERNAL_NAME attribute can be applied to the followingI declarations: GLOBAL, EXTERNAL, GLOBAL ROUTINE, EXTERNAL ROUTINE,!J GLOBAL LITERAL, EXTERNAL LITERAL, GLOBAL BIND, GLOBAL BIND ROUTINE.N The string specified by this attribute is used as the external name forK the linker. THE EXTERNAL_NAME attribute treats its parameter as thee %STRING function does.aK The /NAMES command line qualifier that can be used to force externaleI names to upper or lower case. The qualifier only affects externalRK names which do not have the EXTERNAL_NAME attribute. It defaults toAM /NAMES=UPPERCASE or upper case names. /NAMES=LOWERCASE can be used tod! generate lower case names. I The name in the object file, printed in the listing records is theoK modified or external name. The name as described to the debugger is still the internal name.cF Please note that BLISS makes no promises about the treatment ofL lowercase names by VMS services, such as the librarian or the linker.A Examples of the use of the EXTERNAL_NAME attribute follow:cI GLOBAL ! Inside the module, the global XH X : EXTERNAL_NAME('xna') ! is referenced by the name 'X'.L INITIAL (2); ! Outside the module, the name 'xna'9 ! has to be used. L EXTERNAL ! Other string functions can be usedM Y : EXTERNAL_NAME(%CHAR(1)); ! inside the EXTERNAL_NAME attribute.iL ! In this case, the external name ofA ! 'Y' would be control-A. @ o A new CHECK option, /CHECK=[NO]ALIGNMENT, has been added.F When /CHECK=ALIGNMENT is specified, the compiler now checks theG alignment of field references and these declarations: EXTERNAL,lI GLOBAL, LOCAL, STACKLOCAL, OWN, MAP, BIND, GLOBAL BIND. A warningmE level message is issued when the compiler can determine that adJ declaration or field reference is poorly aligned. An informationalC message is issued when a data declaration is well aligned bytK coincidence (i.e. the alignment attribute is less than the default,[? but the segment happens to fall on the proper boundary).+, The default is no alignment checking.' 2-7 ' MAINTENANCE CORRECTIONS FOR BLISS-32a5 o The following on-off switches have been added:u [NO]CHECK_INITIAL 2 Equivalent to /CHECK=[NO]INITIAL. [NO]CHECK_ALIGNMENTo4 Equivalent to /CHECK=[NO]ALIGNMENT. [NO]CHECK_FIELDp0 Equivalent to /CHECK=[NO]FIELD. [NO]CHECK_OPTIMIZE3 Equivalent to /CHECK=[NO]OPTIMIZE.t [NO]CHECK_REDECLARE 4 Equivalent to /CHECK=[NO]REDECLARE. [NO]CHECK_SHAREp0 Equivalent to /CHECK=[NO]SHARE.H These switches are available both in the module header and in the SWITCHES statement.N o The ALIGN and VOLATILE attributes c6an now be placed between REF and theN structure name in data declarations. Placing them there indicates thatK the pointed-to structure (and not the pointer) has those attributes.o Examples: LOCALr) ptra: REF VOLATILE BLOCK,A) ptrb: REF ALIGN(0) BLOCK;IK Both ptra and ptrb have default alignment and are not volatile. ThetM BLOCK pointed to by ptra is volatile, and the BLOCK pointed to by ptrb  is byte-aligned.%N If these attributes are placed either before REF or after the structureL name, the behavior is unchanged from previous BLISS compilers: ALIGNF applies to the pointer only (not the pointed-to structure), andI VOLATILE applies to both the pointer and the pointed-to structure.L o The ALIGN attribute is now allowed on EXTERNAL, BIND, and GLOBAL BINDF declarations. On these declarations, it indicates the expected alignment.x' 2-8  eI MAINTENANCE CORRECTIONS FOR BLISS-32oM o Built-in functions for dynamic condition handlers are now implemented. F ESTABLISH(handler) is equivalent to .FP = handler. REVERT() isJ equivalent to .FP = 0. ESTABLISH and REVERT may not be used in the same routine as ENABLE.G o Attributes have been added to field declarations. The supportedrG attributes are VOLATILE and NOCHECK_ALIGNMENT. In order for the.M compiler to recognize the NOCHECK_ALIGNMENT attribute, /SYNTAX_LEVEL=2nM must be specified. All stores and fetches of fields with the VOLATILEF attribute are treated as VOLATILE accesses. If a field has theF NOCHECK_ALIGNMENT attribute, /CHECK=ALIGNMENT does not generateM alignment diagnostics for stores and fetches that use that field name.  Example:  FIELD foo= SET' foo1 = [0,0,32,0] : VOLATILE,t/ foo2 = [5,0,16,0] : NOCHECK_ALIGNMENTc TES;tM o The new storage-class INITIAL has been added. INITIAL storage is usedoG by the compiler to initialize non-static variables that have theJ INITIAL or PRESET attribute. This data used to be allocated in theN PSECT associated with the PLIT storage-class. This presented a problemN when initial values were relocatable and the PLIT PSECT was supposed to be shareable.L The default name for the INITIAL PSECT is $INITIAL$. It has the same, attributes as the default PLIT PSECT.J Please note that you may get new truncation errors at link time forG data that used to be put in the PLIT PSECT and is now put in theaL INITIAL PSECT. These errors can be avoided by appropriate use of the ADDRESSING_MODE switch.L| This new behavior can be disabled by using the command line qualifierI| /NOINITIAL_PSECT. Its complement (the default) is /INITIAL_PSECT. G o A warning is now given when a relocatable expression is put in amK| shareable PSECT for the PLIT or INITIAL storage-class. This warning L| can be disabled by using the command line qualifier /CHECK=NOSHARE or>| the NOCHECK_SHARE switch. The default is /CHECK=SHARE.' 2-9s e' MAINTENANCE CORRECTIONS FOR BLISS-32LH o The restriction in section 12.4.2 of the BLISS Language ReferenceN Manual on assignments to routine formals has never been enforced in VAXI BLISS. BLISS now commits to generating "reasonable" code for suchiL assignments, though they are still illegal given the rules of the VAXN calling standard, as that standard gives ownership of the argument list6 to the calling routine, not the called routine.K To detect assignments to formals, use /CHECK=REDECLARE to detect the K implicit re-declaration of a formal as a locally-owned data-segment. N The following warning message is given: Assignment to formal parameter is illegalr( 2-10 i* CHAPTER 3E INCOMPATIBILITIES, KNOWN DEFICIENCIES AND DOCUMENTATION ERRORSlI This chapter describes incompatibilities, known compiler deficiencies  and documentation errors. 3.1 INCOMPATIBILITIES I The format of BLISS library files has changed. All library files mustE be recompiled.i 3.2 KNOWN DEFICIENCIESI PROBLEM: The debug symbol table for routines with JSB linkages is noteI generated correctly. Specifically, the addresses ofXI parameters and locals on the stack are correct only atpI routine entry, since they are given in terms of SP, whoseI value may change.I SOLUTION: At routine entry, use the debugger's DEFINE command toeD define a symbol as the current address of the variable.& Example: DBG> EVALUATE X( DBG> DEFINE X = \' 3-1i tA INCOMPATIBILITIES, KNOWN DEFICIENCIES AND DOCUMENTATION ERRORSc KNOWN DEFICIENCIESy) PROBLEM: The following code fragment:a d = 0;e .....$ WHILE .d NEQ 0 DO BEGIN ....aE x = 66 / .d; ! Assume "d" never writteng ...* IF .y THEN EXITLOOP ENDI will cause a zero-divide exception during execution wheneI compiled with normal optimization. The compiler believeshI that the expression "66/.d" is loop invariant and moves theM) computation out of the loop. I SOLUTION: In this particular case, the expression can be rewritten as:A WHILE 1 DO  BEGIN .....1 IF .d EQL 0 THEN EXITLOOP;  .... # x = 66 / .d;  ..... END; I In this case, the expression cannot be moved out of the  loop.' 3-2  I INCOMPATIBILITIES, KNOWN DEFICIENCIES AND DOCUMENTATION ERRORS]I KNOWN DEFICIENCIESeI PROBLEM: Incorrect code generated for structure definitions of thea form:1 STRUCTURE BAD[I,P,S]= [%UPVAL]BD (IF .I THEN BAD ELSE BAD + .BAD<16,16>); OWN X: BAD[]; LOCAL T;p# T = .X[.T,0,12]; I "X" is loaded into a register in the THEN-branch, but thed> ELSE-branch uses the register without loading it.I SOLUTION: This is the result of a design flaw in the way structureeI references are expanded. BLISS semantics guarantee that a I structure actual-parameter is evaluated only once. This isiI implemented by treating the first occurrence of a structure I formal as if it were a BIND declaration. The otherGI occurrences of the structure formal are then treated as if I they were uses of the "imaginary" bind-name. This choice of I implementation fails when the first occurrence of theEI structure formal is in conditional flow. The problem can beCI avoided by ensuring that the first occurrence of each formalnI is outside of conditional flow. The example structureo" should be written as:3 STRUCTURE GOOD[I,P,S] = [%UPVAL]bI (GOOD; IF .I THEN GOOD ELSE GOOD + .GOOD<16,16>);eI Note that the "structure-name" is the zeroth structurerI formal parameter. The formals "I", "P", and "S" are already I outside of conditional flow, so they are processedtI correctly. This change will cause the compiler to useeI slightly more memory, but the resulting code will be,I correct. There also should be no reduction in optimization.hI Be aware that no problem will occur when the conditionalmI flow is constant folded at compile time, or when there is noa4 conditional flow in the structure body.' 3-3e oA INCOMPATIBILITIES, KNOWN DEFICIENCIES AND DOCUMENTATION ERRORSR KNOWN DEFICIENCIESII PROBLEM: If uninitialized variable checking is in effect, the I compiler occasionally generates spurious messages when a I variable is initialized in one branch of an IF, CASE, orI SELECT in a loop and then referenced in another. Fort example:h+ LOCAL X, FIRST_TIME,...;(& FIRST_TIME = 1;" WHILE condition DOn BEGIN% IF .FIRST_TIMEi THENa X = 0 ELSE.& X = .X + 1;& FIRST_TIME = 0; . . . END;dI The compiler will report that X is uninitialized in "X = .Xa + 1".I SOLUTION: The simplest and best solution is to initialize suchiI variables before they appear in the loop. You can do this I with an assignment or by using an INITIAL attribute on the " variable declaration.I You can also suppress uninitialized variable messages byII using the /CHECK=NOINIT qualifier on the compiler commandn line. 3.3 DOCUMENTATION ERRORSI o In the description of the CMPC5 BUILTIN in the User Manual,aI FILLA is referred to as the "address of a word." It should bee "address of a byte." I o In the Language Reference Manual's Appendix D, CVTRDH andtI CVTRGH are listed as builtin functions for BLISS-32. Neithere function exists.' 3-4  l* CHAPTER 44 HOW TO INSTALL BLISS-32 V4.7D This chapter describes the installation procedures for the VAX-11? Bliss-32 Version 4.7 compiler. You should read this chaptere0 completely before beginning the installation. 4.1 INSTALLATION PROCEDURE+ To install Bliss-32, proceed as follows:tH 1. Log in under the privileged system manager's account. Since thisH installation procedure will recompile STARLET.REQ and LIB.REQ (ifI present in [SYSLIB]), this account should have a large working-seteB limit (500 to 1000 pages is recommended) to insure that the% installation proceeds quickly.T Issue the command: 9 $ @SYS$UPDATE:VMSINSTAL BLS32047 rF (To install in a system root other than the root of the running= system, you can use the following alternative command:sJ $ @SYS$UPDATE:VMSINSTAL BLS32047 OPTIONS R E where specifies the alternate system root in the formatw "__ddcu:[SYSn.]".)t* NOTE@ You should have at least 5000 free blocks on your6 system disk device before beginning the& installation procedure.' 4-1: s HOW TO INSTALL BLISS-32 V4.7  INSTALLATION PROCEDUREA 2. If there are other users on the system, or you have DECnetG running, VMSINSTAL will warn you and ask if you want to continue H with the installation. DECnet should not cause any problems. ItI is slightly safer to install when you have the system to yourself,nF but other users on the system normally will not cause problems.F VMSINSTAL will also ask if you are satisfied with the backup ofD your system disk. It is always a good idea to have a currentG system disk backup before performing an installation. VMSINSTALo will then report:, The following products will be processed: BLS32 V4.7d8 Beginning installation of BLS32 V4.7 at hh:mm9 %VMSINSTAL-I-RESTORE, Restoring product save set A ...cN %VMSINSTAL-I-RELMOVED, Product's release notes have been moved to SYS$HELP.1 BLISS-32 V4.7IQ Copyright Digital Equipment Corporation. 1976, 1993. All rights reserved. Product: BLISS32 Producer: DEC Version: 4.7# Release Date: 3-OCT-1989 G * Does this product have an authorization key registered and loaded?c2 If you respond "NO" the installation continues:K %BLS32-W-NOLICENSE, License not registered. Installation will continue. C After your BLISS-32 license has been registered, D : compile the system require files and run the IVP.7 To compile the system require files: 4 $ SET DEFAULT SYS$LIBRARY2 $ BLISS/LIBRARY STARLET: $ BLISS/LIBRARY=LIB STARLET+LIB' 4-2e I HOW TO INSTALL BLISS-32 V4.7I INSTALLATION PROCEDUREa1 $ BLISS/LIBRARY TPAMAC " To run the IVP:2 $ @SYS$TEST:BLISS32$IVP The installation continues:9 %VMSINSTAL-I-RESTORE, Restoring product save set B ...=D * Do you want to purge files replaced by this installation [YES]?= * Do you want to run the IVP after the installation [YES]?oL This kit contains a file summarizing the new features, changes,L restrictions, and compatibility issues in this release of VAXL BLISS-32. This file is named BLS32047.RELEASE_NOTES and will be placed in SYS$HELP:.EL The release notes contains information valuable to VAX BLISS-32L programmers. Please inform your VAX BLISS-32 users of this file's existence.L The BLISS help file contains extensive documentation on the BLISSL language. Since this material requires about 525 blocks of disk, space, its inclusion is optional.* * Do you want the long help file [YES]?H All questions regarding the installation have now been asked.6 The system directories will now be updated.8 %BLS32-I-LIBBUILD, Building the precompiled librariesL This phase of the installation process compiles the STARLET, LIB,L and TPAMAC L32 files. The corresponding REQ files are expectedL to be in SYS$LIBRARY. If one is missing, you will receive aL warning message and tha