DECBLISS32 KbBLISS-32 User ManualA|04359PROBOOKBROWSER E Contents  Examples  Figures  Tables MIndexj$B*VAX DOCUMENT V2.1K0KJtcL E GHOn,P UX<oo[$nVz22 fiV f| 20;Y Nj]~FV}/ gCONTENTSCONTENTS8 E\TitlePageTitle Page@E\ CopyrightPageCopyright Page1xE\PrefacePreface ^))E\Summaryof TechnicalChangesSummary of Technical ChangesQw""$K1 Operating Procedures1 Operating Proceduresgw2 $K1.1%&K CompilingaBLISSModule1.1 Compiling a BLISS ModuleWl%%$A1.1.1 Command-LineSyntax1.1.1 Command-Line Syntax']\(($A1.1.2 Command-Line Semantics1.1.2 Command-Line Semantics)[w+ $K1.2&KFileSpecifications1.2 File Specifications/cr/ $K1.3"&K Command-Line Qualifiers1.3 Command-Line Qualifiers>Q\""$A1.3.1/CHECK Qualifier1.3.1 /CHECK Qualifier@@l$A1.3.1.1Syntax1.3.1.1 SyntaxBD\$@1.3.1.2Defaults1.3.1.2 DefaultsDF\$@1.3.1.3 Semantics1.3.1.3 SemanticsFel!,,$@1.3.2/CROSS_REFERENCE Qualifier1.3.2 /CROSS_REFERENCE QualifierH@l$A1.3.2.1Syntax1.3.2.1 SyntaxND\$A1.3.2.2Defaults1.3.2.2 DefaultsPF\$A1.3.2.3 Semantics1.3.2.3 SemanticsQU\$$$@1.3.3General Qualifiers1.3.3 General QualifiersS@l$@1.3.3.1Syntax1.3.3.1 SyntaxWD\$@1.3.3.2Defaults1.3.3.2 DefaultsZF\$A1.3.3.3 Semantics1.3.3.3 Semantics^H\$A1.3.3.4 Discussion1.3.3.4 Discussion`il#..$A1.3.4/MACHINE_CODE_LIST Qualifier1.3.4 /MACHINE_CODE_LIST Qualifierd@l$@1.3.4.1Syntax1.3.4.1 SyntaxgD\$@1.3.4.2Defaults1.3.4.2 DefaultsjF\$@1.3.4.3 Semantics1.3.4.3 SemanticsmW\%%$A1.3.5 /OPTIMIZE Qualifier1.3.5 /OPTIMIZE Qualifierp@l$@1.3.5.1Syntax1.3.5.1 SyntaxtD\$A1.3.5.2Defaults1.3.5.2 DefaultswF\$A1.3.5.3 Semantics1.3.5.3 Semantics{Sl##$A1.3.6Output Qualifiers1.3.6 Output Qualifiers}@l$@1.3.6.1Syntax1.3.6.1 SyntaxD\$@1.3.6.2Defaults1.3.6.2 DefaultsF\$@1.3.6.3 Semantics1.3.6.3 Semantics]l(($A1.3.7 /SOURCE_LIST Qualifier1.3.7 /SOURCE_LIST Qualifier@l$A1.3.7.1Syntax1.3.7.1 SyntaxD\$A1.3.7.2Defaults1.3.7.2 DefaultsF\$@1.3.7.3 Semantics1.3.7.3 SemanticsW\%%$@1.3.8 /TERMINAL Qualifier1.3.8 /TERMINAL Qualifier@l$@1.3.8.1Syntax1.3.8.1 SyntaxD\$A1.3.8.2Defaults1.3.8.2 DefaultsF\$A1.3.8.3 Semantics1.3.8.3 Semanticsz\*88$A1.3.9 QualifierNamesVersusSwitchNames1.3.9 Qualifier Names Versus Switch Namessl'44$A1.3.10 QualifiersandDefaultSettings1.3.10 Qualifiers and Default Settingsl1@@$@1.3.11PositiveandNegativeFormsof Qualifiers1.3.11 Positive and Negative Forms of Qualifiers\2AA$A1.3.12 Abbreviationsof QualifierandValueNames1.3.12 Abbreviations of Qualifier and Value NamesGw$K2CompilerOutput2 Compiler OutputSw' $K2.1&KTerminalOutput2.1 Terminal OutputQw& $L2.2&LOutputListing2.2 Output ListingMl  $A2.2.1ListingHeader2.2.1 Listing HeaderMl  $A2.2.2SourceListing2.2.2 Source ListingMl  $A2.2.3ObjectListing2.2.3 Object Listingbl++$@2.2.3.1DefaultObjectListing2.2.3.1 Default Object Listingdl ,,$@2.2.3.2 AssemblerInputListing2.2.3.2 Assembler Input ListingXl&&$A2.2.4SourcePartOptions2.2.4 Source Part Optionsbl++$A2.2.4.1DefaultSourceListing2.2.4.1 Default Source Listingl5DD$A2.2.4.2ListingwithLIBRARYandREQUIRE Information2.2.4.2 Listing with LIBRARY and REQUIRE Informationql&33$A2.2.4.3ListingwithMacro Expansions2.2.4.3 Listing with Macro Expansionskl#00$@2.2.4.4ListingwithMacroTracing2.2.4.4 Listing with Macro Tracingcw/ $K2.3"&KCross-ReferenceListing2.3 Cross-Reference Listing]\(($A2.3.1Cross-ReferenceHeader2.3.1 Cross-Reference Header_\))$A2.3.2Cross-ReferenceEntries2.3.2 Cross-Reference Entriesl2@@$A2.3.3OutputListingwithCross-ReferenceListing2.3.3 Output Listing with Cross-Reference Listing[w+ $L2.4&L CompilationSummary2.4 Compilation SummaryQw& $K2.5&KErrorMessages2.5 Error Messagesmw$11$K3Linking, Executing,and Debugging3 Linking, Executing, and Debugging&Bw  $K3.1&KLinking3.1 Linking'Xl&&$@3.1.1LINKCommandSyntax3.1.1 LINK Command Syntax-^\))$A3.1.2LINKCommand Semantics3.1.2 LINK Command Semantics.kw4 $L3.2'&L ExecutingaLinkedProgram3.2 Executing a Linked Program4Fw  $K3.3&K Debugging3.3 Debugging6il"//$A3.3.1 InitializedModesandTypes3.3.1 Initialized Modes and Types;l.<<$@3.3.2DebuggerCommandsand ExpressionSyntax3.3.2 Debugger Commands and Expression Syntax@yl*77$@3.3.3 Operatorsin Arithmetic Expressions3.3.3 Operators in Arithmetic ExpressionsDl0>>$A3.3.4Special CharactersinAddress Expressions3.3.4 Special Characters in Address ExpressionsHsl&55$A3.3.4.1CurrentLocationSymbol( . )3.3.4.1 Current Location Symbol ( . )J|l*::$A3.3.4.2LastValue DisplayedSymbol( \ )3.3.4.2 Last Value Displayed Symbol ( \ )Pfl ..$A3.3.4.3ContentsOperator( . )3.3.4.3 Contents Operator ( . )S`l++$@3.3.4.4RangeOperator( : )3.3.4.4 Range Operator ( : )Ym\$11$@3.3.4.5DefaultNextLocationValue3.3.4.5 Default Next Location Value_Q\""$A3.3.5Field References3.3.5 Field ReferencescY\&&$@3.3.6 Structure References3.3.6 Structure Referencesnb\++$@3.3.7REF Structure References3.3.7 REF Structure ReferencesNl!!$A3.3.8ScopeofNames3.3.8 Scope of Names[l''$A3.3.9 Source-Line Debugging3.3.9 Source-Line Debuggingl6EE$A3.3.10Effectof Compilationand Link-Time Qualifiers3.3.10 Effect of Compilation and Link-Time Qualifiersdl ,,$@3.3.11DebuggerCommandSummary3.3.11 Debugger Command Summary]w(($K4Machine-Specific Functions4 Machine-Specific Functions{w'< $K4.1/&K ADAWI-AddAlignedWord Interlocked4.1 ADAWI-Add Aligned Word Interlockednw!5 $L4.2(&LADDD-Add D-FloatingOperands4.2 ADDD-Add D-Floating Operandsnw!5 $K4.3(&KADDF-Add F-FloatingOperands4.3 ADDF-Add F-Floating Operandsnw!5 $K4.4(&KADDG-Add G-FloatingOperands4.4 ADDG-Add G-Floating Operands nw!5 $K4.5(&KADDH-Add H-FloatingOperands4.5 ADDH-Add H-Floating Operands%lw 4 $K4.6'&KADDM-Add MultiwordOperands4.6 ADDM-Add Multiword Operands*g+A $K4.74&KASHP-ArithmeticShiftandRoundPacked4.7 ASHP-Arithmetic Shift and Round Packed0jr3 $L4.8&&LASHQ-ArithmeticShiftQuad4.8 ASHQ-Arithmetic Shift Quad<^g- $K4.9 &K BICPSW-BitClearPSW4.9 BICPSW-Bit Clear PSWA\g,$K4.10&K BISPSW-BitSetPSW4.10 BISPSW-Bit Set PSWD`w.$K4.11 &K BPT-BreakPointTrap4.11 BPT-Break Point TrapGww%:$K4.12,&K BUGL-BugcheckwithLongOperand4.12 BUGL-Bugcheck with Long OperandJww%:$K4.13,&K BUGW-BugcheckwithWordOperand4.13 BUGW-Bugcheck with Word OperandPg,B$K4.144&K CALLG-CallwithGeneral ParameterList4.14 CALLG-Call with General Parameter ListSWw)$K4.15&K CHMx-ChangeMode4.15 CHMx-Change Mode[}w(=$L4.16/&L CMPC3-Compare Characters3Operand4.16 CMPC3-Compare Characters 3 Operand^}w(=$L4.17/&L CMPC5-Compare Characters5Operand4.17 CMPC5-Compare Characters 5 Operandjxw&:$K4.18,&K CMPD-Compare D-FloatingOperands4.18 CMPD-Compare D-Floating Operandsxxw&:$K4.19,&K CMPF-Compare F-FloatingOperands4.19 CMPF-Compare F-Floating Operandsxw&:$K4.20,&K CMPG-Compare G-FloatingOperands4.20 CMPG-Compare G-Floating Operandsxw&:$K4.21,&K CMPH-Compare H-FloatingOperands4.21 CMPH-Compare H-Floating Operandsvw%9$L4.22+&L CMPM-Compare MultiwordOperands4.22 CMPM-Compare Multiword Operands]w,$L4.23&L CMPP-ComparePacked4.23 CMPP-Compare Packednw!5$K4.24'&K CRC-Cyclic RedundancyCheck4.24 CRC-Cyclic Redundancy Checkw,A$K4.253&K CVTDF-Convert D-Floatingto F-Floating4.25 CVTDF-Convert D-Floating to F-Floatingw)>$K4.260&K CVTDI-Convert D-FloatingtoInteger4.26 CVTDI-Convert D-Floating to Integeryw&;$K4.27-&K CVTDL-Convert D-FloatingtoLong4.27 CVTDL-Convert D-Floating to Longw,A$L4.283&L CVTFD-Convert F-Floatingto D-Floating4.28 CVTFD-Convert F-Floating to D-Floatingw,A$L4.293&L CVTFG-Convert F-Floatingto G-Floating4.29 CVTFG-Convert F-Floating to G-Floatingw,A$L4.303&L CVTFH-Convert F-Floatingto H-Floating4.30 CVTFH-Convert F-Floating to H-Floatingw)>$L4.310&L CVTFI-Convert F-FloatingtoInteger4.31 CVTFI-Convert F-Floating to Integeryw&;$K4.32-&K CVTFL-Convert F-FloatingtoLong4.32 CVTFL-Convert F-Floating to Longw,A$K4.333&K CVTGF-Convert G-Floatingto F-Floating4.33 CVTGF-Convert G-Floating to F-Floatingw,A$K4.343&K CVTGH-Convert G-Floatingto H-Floating4.34 CVTGH-Convert G-Floating to H-Floatingyw&;$K4.35-&K CVTGL-Convert G-FloatingtoLong4.35 CVTGL-Convert G-Floating to Longw,A$L4.363&L CVTHF-Convert H-Floatingto F-Floating4.36 CVTHF-Convert H-Floating to F-Floatingw,A$L4.373&L CVTHG-Convert H-Floatingto G-Floating4.37 CVTHG-Convert H-Floating to G-Floatingyw&;$K4.38-&K CVTHL-Convert H-FloatingtoLong4.38 CVTHL-Convert H-Floating to Longw)>$K4.390&K CVTID-ConvertIntegerto D-Floating4.39 CVTID-Convert Integer to D-Floatingw)>$K4.400&K CVTIF-ConvertIntegerto F-Floating4.40 CVTIF-Convert Integer to F-Floatingyw&;$K4.41-&K CVTLD-ConvertLongto D-Floating4.41 CVTLD-Convert Long to D-Floatingyw&;$L4.42-&L CVTLF-ConvertLongto F-Floating4.42 CVTLF-Convert Long to F-Floatingyw&;$L4.43-&L CVTLH-ConvertLongto H-Floating4.43 CVTLH-Convert Long to H-Floatingqw"7$K4.44)&K CVTLP-ConvertLongtoPacked4.44 CVTLP-Convert Long to Packedqw"7$K4.45)&K CVTPL-ConvertPackedtoLong4.45 CVTPL-Convert Packed to Long6U$K4.466&K CVTPS-ConvertPackedtoLeadingSeparate&Numeric4.46 CVTPS-Convert Packed to Leading Separate Numericw.D$K4.476&K CVTPT-ConvertPackedtoTrailingNumeric4.47 CVTPT-Convert Packed to Trailing Numeric!w/E$K4.487&KCVTRDL-ConvertRounded D-FloatingtoLong4.48 CVTRDL-Convert Rounded D-Floating to Long.w/E$K4.497&KCVTRFL-ConvertRounded F-FloatingtoLong4.49 CVTRFL-Convert Rounded F-Floating to Long4w/E$L4.507&LCVTRGL-ConvertRounded G-FloatingtoLong4.50 CVTRGL-Convert Rounded G-Floating to Long:w/E$L4.517&LCVTRHL-ConvertRounded H-FloatingtoLong4.51 CVTRHL-Convert Rounded H-Floating to Long@w.D$K4.526&K CVTSP-ConvertLeadingSeparatetoPacked4.52 CVTSP-Convert Leading Separate to PackedFw.D$K4.536&K CVTTP-ConvertTrailingNumerictoPacked4.53 CVTTP-Convert Trailing Numeric to PackedRvw%9$K4.54+&K DIVD-Divide D-FloatingOperands4.54 DIVD-Divide D-Floating Operands_vw%9$K4.55+&K DIVF-Divide F-FloatingOperands4.55 DIVF-Divide F-Floating Operandsdvw%9$L4.56+&L DIVG-Divide G-FloatingOperands4.56 DIVG-Divide G-Floating Operandsivw%9$L4.57+&L DIVH-Divide H-FloatingOperands4.57 DIVH-Divide H-Floating Operandsnwg%:$K4.58,&K EDITPC-EditPackedto Character4.58 EDITPC-Edit Packed to Characterssg$7$K4.59)&KEDIV-Extended-PrecisionDivide4.59 EDIV-Extended-Precision Divideww&9$K4.60+&KEMUL-Extended-PrecisionMultiply4.60 EMUL-Extended-Precision Multiplyw,C$K4.615&KFFCandFFS-FindandModify Operations4.61 FFC and FFS-Find and Modify Operations]g,$K4.62&K HALT-Halt Processor4.62 HALT-Halt Processoreg0$L4.63"&L INDEX-Index Calculation4.63 INDEX-Index Calculation:Z$K4.647&KINSQHIand INSQTI-InsertEntryinQueue,& Interlocked4.64 INSQHI and INSQTI-Insert Entry in Queue, Interlockedqw"7$K4.65)&K INSQUE-InsertEntryinQueue4.65 INSQUE-Insert Entry in Queueag.$K4.66 &K LOCC-Locate Character4.66 LOCC-Locate Charactereg0$K4.67"&K MATCHC-Match Characters4.67 MATCHC-Match Characters{w'<$K4.68.&K MFPR-Movefrom ProcessorRegister4.68 MFPR-Move from Processor Registeruw$9$K4.69+&K MOVC3-Move Character3Operand4.69 MOVC3-Move Character 3 Operanduw$9$K4.70+&K MOVC5-Move Character5Operand4.70 MOVC5-Move Character 5 OperandWg)$L4.71&L MOVP-MovePacked4.71 MOVP-Move Packed`g.$K4.72 &K MOVPSL-MovefromPSL4.72 MOVPSL-Move from PSLxg&:$K4.73,&K MOVTC-Move Translated Characters4.73 MOVTC-Move Translated Charactersg,A$K4.743&K MOVTUC-Move TranslatedUntil Character4.74 MOVTUC-Move Translated Until Characterww%:$K4.75,&K MTPR-Moveto ProcessorRegister4.75 MTPR-Move to Processor Register zw';$K4.76-&K MULD-Multiply D-FloatingOperands4.76 MULD-Multiply D-Floating Operands zw';$L4.77-&L MULF-Multiply F-FloatingOperands4.77 MULF-Multiply F-Floating Operandszw';$K4.78-&K MULG-Multiply G-FloatingOperands4.78 MULG-Multiply G-Floating Operandszw';$K4.79-&K MULH-Multiply H-FloatingOperands4.79 MULH-Multiply H-Floating OperandsWw)$K4.80&KNOP-No Operation4.80 NOP-No Operation!vw%9$K4.81+&K PROBER-ProbeRead Accessibility4.81 PROBER-Probe Read Accessibility$xw&:$K4.82,&K PROBEW-ProbeWrite Accessibility4.82 PROBEW-Probe Write Accessibility+<\$L4.831&LREMQHIand REMQTI-RemoveEntryFrom&Queue, Interlocked4.83 REMQHI and REMQTI-Remove Entry From Queue, Interlocked2uw$9$K4.84+&K REMQUE-RemoveEntryfromQueue4.84 REMQUE-Remove Entry from Queue<\g,$L4.85&L ROT-RotateaValue4.85 ROT-Rotate a ValueBag.$L4.86 &L SCANC-Scan Characters4.86 SCANC-Scan CharactersF]w,$K4.87&K SKPC-Skip Character4.87 SKPC-Skip CharacterPaw.$K4.88 &K SPANC-Span Characters4.88 SPANC-Span CharactersYzw';$K4.89-&K SUBD-Subtract D-FloatingOperands4.89 SUBD-Subtract D-Floating Operandsczw';$K4.90-&K SUBF-Subtract F-FloatingOperands4.90 SUBF-Subtract F-Floating Operandshzw';$L4.91-&L SUBG-Subtract G-FloatingOperands4.91 SUBG-Subtract G-Floating Operandsmzw';$L4.92-&L SUBH-Subtract H-FloatingOperands4.92 SUBH-Subtract H-Floating Operandsrxw&:$K4.93,&K SUBM-Subtract MultiwordOperands4.93 SUBM-Subtract Multiword Operandsww)>$K4.940&K TESTBITx-TestandModify Operations4.94 TESTBITx-Test and Modify Operations}lg 4$K4.95&&K XFC-ExtendedFunctionCall4.95 XFC-Extended Function Call]w(($K5 ProgrammingConsiderations5 Programming Considerationsw)? $L5.12&LLibraryandRequireFile Differences5.1 Library and Require File Differencesow!6 $L5.2)&LFrequentBLISSCodingErrors5.2 Frequent BLISS Coding ErrorsIl$A5.2.1MissingDots5.2.1 Missing Dotsm\$11$A5.2.2Valuedand NonvaluedRoutines5.2.2 Valued and Nonvalued Routinesr\&44$@5.2.3 SemicolonsandValuesofBlocks5.2.3 Semicolons and Values of Blocksl1AA$A5.2.4Complex ExpressionsUsingAND,OR,andNOT5.2.4 Complex Expressions Using AND, OR, and NOT^l))$@5.2.5ComputedRoutineCalls5.2.5 Computed Routine Callsgl!..$@5.2.6SignedandUnsignedFields5.2.6 Signed and Unsigned FieldsMl  $A5.2.7ComplexMacros5.2.7 Complex MacrosIl$A5.2.8MissingCode5.2.8 Missing Code]l))$A5.2.9UsingtheBuilt-InPC5.2.9 Using the Built-In PCgl!..$A5.2.10IndexedLoopCodingError5.2.10 Indexed Loop Coding Error`w. $K5.3!&KLinkerErrorMessages5.3 Linker Error Messagesbw/ $K5.4"&KObscureErrorMessages5.4 Obscure Error Messages~w)= $L5.50&LPosition-IndependentCode Generation5.5 Position-Independent Code Generationpg!7 $L5.6*&LAdvancedUseofBLISSMacros5.6 Advanced Use of BLISS Macrosl/==$A5.6.1 AdvantageousUseofMachine Dependencies5.6.1 Advantageous Use of Machine Dependenciesdl ,,$A5.6.2UsingString Instructions5.6.2 Using String Instructionsol%22$@5.6.3Dealingwith EnumerationTypes5.6.3 Dealing with Enumeration TypesYl''$@5.6.3.1TheSETDataType5.6.3.1 The SET Data TypeRl##$A5.6.3.2CreatingaSet5.6.3.2 Creating a Setgl!..$A5.6.3.3PlacingElementsinSets5.6.3.3 Placing Elements in Sets]l))$A5.6.3.4 MembershipinaSet5.6.3.4 Membership in a Set_w))$L6Transportability Guidelines6 Transportability GuidelinesLg# $K6.1&K Introduction6.1 IntroductionYw* $K6.2&KGeneral Strategies6.2 General StrategiesB\$@6.2.1 Isolation6.2.1 IsolationDl$@6.2.2 Simplicity6.2.2 Simplicity>g  $K6.3&KTools6.3 Tools@\$A6.3.1Literals6.3.1 Literals]\(($A6.3.1.1 PredeclaredLiterals6.3.1.1 Predeclared Literals_\))$A6.3.1.2 User-DefinedLiterals6.3.1.2 User-Defined Literalswl)66$@6.3.2Macrosand Conditional Compilation6.3.2 Macros and Conditional CompilationO\!!$@6.3.3ModuleSwitches6.3.3 Module Switches M\  $@6.3.4ReservedNames6.3.4 Reserved Namesel --$A6.3.5REQUIREandLibraryFiles6.3.5 REQUIRE and Library Files@\$A6.3.6Routines6.3.6 Routines&w2H $K6.4;&K TechniquesforWriting TransportablePrograms6.4 Techniques for Writing Transportable Programs)V\%%$@6.4.1 AllocationofData6.4.1 Allocation of Data,Ql""$@6.4.1.1ProblemOrigin6.4.1.1 Problem Origin.il#..$@6.4.1.2 Transportable Declarations6.4.1.2 Transportable Declarations5M\  $@6.4.2Data Addresses6.4.2 Data AddressesG{\+88$@6.4.2.1 AddressesandAddress Calculations6.4.2.1 Addresses and Address CalculationsHl5CC$A6.4.2.2 Relational OperatorsandControl Expressions6.4.2.2 Relational Operators and Control ExpressionsT\5CC$A6.4.2.3BLISS-10 AddressesVersusBLISS-36 Addresses6.4.2.3 BLISS-10 Addresses Versus BLISS-36 Addresses\bl++$A6.4.3Data Character Sequences6.4.3 Data Character Sequencesbl.==$@6.4.3.1QuotedStringsUsedasNumericValues6.4.3.1 Quoted Strings Used as Numeric Valuesel1@@$@6.4.3.2QuotedStringsUsedas CharacterStrings6.4.3.2 Quoted Strings Used as Character Stringsob\++$@6.4.4PLITsandInitialization6.4.4 PLITs and InitializationtV\%%$A6.4.4.1PLITsinGeneral6.4.4.1 PLITs in GeneraluX\&&$A6.4.4.2ScalarPLITItems6.4.4.2 Scalar PLIT Itemsxil"//$A6.4.4.3StringLiteralPLITItems6.4.4.3 String Literal PLIT Items|al**$@6.4.4.4InitializationExample6.4.4.4 Initialization Examplefl!--$@6.4.4.5 InitializingPackedData6.4.4.5 Initializing Packed Datao\%22$@6.4.5 StructuresandField Selectors6.4.5 Structures and Field SelectorsH\$A6.4.5.1 Structures6.4.5.1 StructuresJg$A6.4.5.2 FLEX_VECTOR6.4.5.2 FLEX_VECTORS\##$A6.4.5.3Field Selectors6.4.5.3 Field SelectorsHg$A6.4.5.4 GEN_VECTOR6.4.5.4 GEN_VECTORl2AA$A6.4.5.5Summaryof StructuresandField Selectors6.4.5.5 Summary of Structures and Field Selectorsw.<<$K7CompilerOverviewand OptimizationSwitches7 Compiler Overview and Optimization SwitchesSw' $K7.1&KCompilerPhases7.1 Compiler Phases|l+99$@7.1.1Lexicaland SyntacticAnalysisPhase7.1.1 Lexical and Syntactic Analysis PhaseXl&&$A7.1.2FlowAnalysisPhase7.1.2 Flow Analysis Phasepl%33$A7.1.2.1KnowingWhenaValueChanges7.1.2.1 Knowing When a Value Changesbl++$A7.1.2.2 AccountingforChanges7.1.2.2 Accounting for ChangesO\!!$A7.1.3 HeuristicPhase7.1.3 Heuristic Phasekl#00$@7.1.4 TemporaryNameBindingPhase7.1.4 Temporary Name Binding Phase\\(($@7.1.5Code GenerationPhase7.1.5 Code Generation Phaseol%22$A7.1.6CodeStream OptimizationPhase7.1.6 Code Stream Optimization Phase kl#00$A7.1.7OutputFile ProductionPhase7.1.7 Output File Production Phase#iw3 $K7.2&&KSummaryofSwitchEffects7.2 Summary of Switch Effects%zw*88$K8Tools, Libraries,andSystem Interfaces8 Tools, Libraries, and System Interfaces.tw#9 $K8.1,&KVAXSourceCodeAnalyzer(SCA)8.1 VAX Source Code Analyzer (SCA)0w3I $K8.2<&KTutorialTerminal Input/OutputPackage(TUTIO)8.2 Tutorial Terminal Input/Output Package (TUTIO)2qw"7 $L8.3*&LVMSSystemServices Interface8.3 VMS System Services Interface7l/>>$A8.3.1SampleProgramUsingVMSSystemServices8.3.1 Sample Program Using VMS System Services=l-<<$A8.3.2CommonErrorsinUsingSystemServices8.3.2 Common Errors in Using System Services?w)> $L8.41&LRecord ManagementServices Interface8.4 Record Management Services InterfaceD[l(($A8.4.1UsingVAXRMSMacros8.4.1 Using VAX RMS MacrosFll#11$A8.4.2SampleRoutineUsingVAXRMS8.4.2 Sample Routine Using VAX RMSK^g- $K8.5 &KOtherVMS Interfaces8.5 Other VMS InterfacesLK\$@8.5.1LIB Interface8.5.1 LIB InterfaceMQ\""$A8.5.2TPAMAC Interface8.5.2 TPAMAC InterfaceNVw%%$L9BLISS-32CodeExamples9 BLISS-32 Code ExamplesRpw!7 $K9.1*&KExample1:'TheALPHAProgram9.1 Example 1: The ALPHA ProgramSI\$A9.1.1ModuleALPHA9.1.1 Module ALPHAZUl$$$@9.1.2Routine SORT_CHARS9.1.2 Routine SORT_CHARS[Ul$$$@9.1.3Routine ALPHA_SORT9.1.3 Routine ALPHA_SORT^[l''$A9.1.4 Cell-HandlingPackage9.1.4 Cell-Handling Package_Ml  $A9.1.5MacroREL_CELL9.1.5 Macro REL_CELLaMl  $A9.1.6MacroINS_CELL9.1.6 Macro INS_CELLfMl  $A9.1.7MacroGET_CELL9.1.7 Macro GET_CELLgMl  $@9.1.8MacroREM_CELL9.1.8 Macro REM_CELLjnw 6 $K9.2)&KExample2:'TheCALCProgram9.2 Example 2: The CALC ProgramkQ\""$@9.2.1Module CALCULATE9.2.1 Module CALCULATEqWl%%$@9.2.2Routine CALC_DRIVER9.2.2 Routine CALC_DRIVERrI\$@9.2.3RoutineMAIN9.2.3 Routine MAINs]\(($A9.2.4RoutineREADEXPRESSION9.2.4 Routine READEXPRESSIONtQ\""$A9.2.5RoutineREADTERM9.2.5 Routine READTERMuU\$$$A9.2.6Routine READFACTOR9.2.6 Routine READFACTORvU\$$$@9.2.7Routine READNUMBER9.2.7 Routine READNUMBERwQ\""$@9.2.8RoutineREADCHAR9.2.8 Routine READCHARxYl&&$@9.2.9Routine CATCH_ERRORS9.2.9 Routine CATCH_ERRORSye1 $\A&\SummaryofCommandSyntaxA Summary of Command Syntaxz[w+ $KA.1&K Command-LineSyntaxA.1 Command-Line Syntax{jw3 $KA.2&&KFile SpecificationSummaryA.2 File Specification Summary}Uw( $KA.3&K QualifierSyntaxA.3 Qualifier SyntaxYr* $KA.4&K QualifierDefaultsA.4 Qualifier DefaultsNg$ $KA.5&K AbbreviationsA.5 Abbreviationsi3 $\B(\Summaryof FormattingRulesB Summary of Formatting RulesO% $\C\ModuleTemplateC Module TemplateQg& $KC.1&KModulePrefaceC.1 Module Prefacekg4 $KC.2'&K DeclarativePartofModuleC.2 Declarative Part of Moduleig3 $KC.3&&K ExecutablePartofModuleC.3 Executable Part of ModuleQw& $KC.4&KClosingFormatC.4 Closing Format[+ $\D \ImplementationLimitsD Implementation Limits[g+ $KD.1&KBLISS-32 ConstructsD.1 BLISS-32 ConstructsWw) $LD.2&LSystem InterfacesD.2 System InterfacesM$ $\E\ErrorMessagesE Error Messagesmw 5 $KE.1(&KBLISSCompilerFatalErrorsE.1 BLISS Compiler Fatal Errors\, $\F!\SampleOutputListingF Sample Output Listing*? $\G4\Optional Programming ProductivityToolsG Optional Programming Productivity Toolsew1 $KG.1$&KUsingLSEwithBLISS-32G.1 Using LSE with BLISS-32l9II$AG.1.1EnteringSourceCodeUsingTokensand PlaceholdersG.1.1 Entering Source Code Using Tokens and Placeholders\l(($AG.1.2 CompilingSourceCodeG.1.2 Compiling Source Code@l$AG.1.3ExamplesG.1.3 ExamplesU\$$$AG.1.4Module DeclarationG.1.4 Module Declaration[\''$@G.1.4.1Routine DeclarationG.1.4.1 Routine DeclarationM\  $@G.1.4.2IF StatementG.1.4.2 IF StatementWl%%$AG.1.4.3Select ExpressionG.1.4.3 Select Expression[g''$AG.1.4.4 CH$COMPAREFunctionG.1.4.4 CH$COMPARE Function}w'> $LD G.21&LUsingtheVAXSourceCodeAnalyzerG.2 Using the VAX Source Code Analyzernl$22$AG.2.1SettingUpanSCA EnvironmentG.2.1 Setting Up an SCA Environmentel --$AG.2.1.1CreatinganSCALibraryG.2.1.1 Creating an SCA Librarysl'44$AG.2.1.2 GeneratingDataAnalysisFilesG.2.1.2 Generating Data Analysis Filesl9JJ$@G.2.1.3LoadingDataAnalysisFilesintoaLocalLibraryG.2.1.3 Loading Data Analysis Files into a Local Librarygl!..$@G.2.1.4 SelectinganSCALibraryG.2.1.4 Selecting an SCA Libraryql&33$AG.2.2UsingSCAforCross-ReferencingG.2.2 Using SCA for Cross-Referencing/ gEXAMPLESEXAMPLES[l''=A2-1DefaultObjectListing2- 1 Default Object Listing]l((=A2-2 AssemblerInputListing2- 2 Assembler Input Listing[l''=@2-3DefaultSourceListing2- 3 Default Source Listingl7GG=@2-4OutputListingwithLIBRARYandREQUIREFileData2- 4 Output Listing with LIBRARY and REQUIRE File Datal.<<=A2-5OutputListingwithMacro ExpansionData2- 5 Output Listing with Macro Expansion Datal:JJ=A2-6OutputListingwithMacro ExpansionandTracingData2- 6 Output Listing with Macro Expansion and Tracing Datal:HH=A2-7OutputListingwithCross-ReferenceListingIncluded2- 7 Output Listing with Cross-Reference Listing Includedl1@@=A2-8ExampleofErrorMessagesinSourceListing2- 8 Example of Error Messages in Source Listing%Yl&&=@8-1SampleTPARSEProgram8- 1 Sample TPARSE ProgramOYl&&=@F-1SampleOutputListingF- 1 Sample Output Listing-gFIGURESFIGURESpl&22=@2-1CompilerOutputListingSequence2- 1 Compiler Output Listing SequenceYl&&=A2-2ListingHeaderFormat2- 2 Listing Header Formatl5EE=AG-1UseofLSEandSCAfor Multimodular DevelopmentG- 1 Use of LSE and SCA for Multimodular Development+gTABLESTABLESl7EE=A1-1CorrespondenceBetween QualifierandSwitchNames1- 1 Correspondence Between Qualifier and Switch Namesl0??=@2-1FormatofPrefaceStringinSourceListing2- 1 Format of Preface String in Source Listingal**=@2-2SymbolType Abbreviations2- 2 Symbol Type Abbreviationsml%00=A3-1 Arithmetic Expression Operators3- 1 Arithmetic Expression OperatorsGql'22=A3-2AddressRepresentation Characters3- 2 Address Representation CharactersIbl **=A4-1Machine-Specific Functions4- 1 Machine-Specific Functionsc``'Digital Equipment Corporation1980,1982,1983,1987.AllRights Reserved.\2O]BLISS-32 OOUserManual{mQOMay1987ROkThisdocument describestheBLISS-32compilerandprovidesbasicLO informationaboutlinking, executing,and debuggingBLISS-32PO programs.+Italso describesBLISS-32machine-specific functions,POTBLISStools,andothertopicsrelatedtoBLISS-32 programming.y'ORevision/Update Information:/^Thisbook supersedestheBLISS-32)^User'sGuide(OrderNo.-AA-^` H322D-TE).{Q*O OperatingSystemandVersion:'^VMSVersion4.2orhigherkOSoftwareVersion: ^BLISS-32Version4.3)ODigital Equipment Corporation!ORMaynard, Massachusetts N! $ O)OFirst Printing,January1980"O Revised,February1982"ObRevised,November1983ORevised,May1987^O?Digital Equipment Corporationmakesnorepresentationsthattheuseofits^Oproductsinthemanner describedinthis publicationwillnotinfringeon`Oexistingorfuturepatentrights,nordothe descriptions containedinthiscO publicationimplythegrantingoflicensestomake,use,orsell equipmentor;OIsoftwarein accordancewiththe description.]O Possession,use,orcopyingofthesoftware describedinthis publication_O&is authorizedonlypursuanttoavalidwrittenlicensefromDigitaloran"Oi authorized sublicensor.`ODigital Equipment Corporation1980,1982,1983,1987.&AllRights Reserved.ZOThe followingare trademarksofDigital Equipment Corporation:"DEC,DECTO/CMS,DEC/MMS,DECnet, DECsystem-10, DECSYSTEM-20,DECUS, DECwriter,TO$DIBOL, EduSystem,IAS,MASSBUS,PDP,PDT,RSTS,RSX,UNIBUS,VAX,:Of VAXcluster,VMS,VT,andtheDIGITALlogo.:ZK4359LOThisdocumentwaspreparedusingVAXDOCUMENTVersion2.1.*, H! )OSummary"of! Technical!ChangesKO{ThismanualprovidesBLISS-32user informationforVersionNO4.3oftheBLISS-32 compiler.'Thislist summarizes technicalNO,changes, additions,and deletionstotheguidesinceVersionO4.0. J ` D/ANALYSIS_DATAhasbeenaddedasanoutput-qualifier,(fortheBLISS-32commandline. ` DTheVAXSourceCodeAnalyzer(SCA) programmingtool8makesthe/MASTER_CROSS_REFERENCE qualifierYandBCREF obsolete. ` EXPORTmaterialhasbeenremoved;this informationis/1 availablefromtheDECUSlibrary.  e#O 1.2 Operating! ProceduresHOThischapter describesthe operating proceduresusedtoGOcompileaBLISSmodule.+TheformofthecommandlineNOBis consideredfirst.,Next,thefilespecificationsforinputIOtoaBLISS-32 compilationare describedand illustrated.LOFinally,the command-line qualifiersrelevanttoaBLISS-32"OL compilationaregiven.u! KNOThe procedurefor compiling,linking,and executingaBLISS-JO32programisuncomplicated.)Forexample,tocompileandPO5executeaprogram consistingofasinglesourcemodule,enterLOthemoduleinafile(forexample, ALPHA.B32),compileitLOwiththeBLISS-32 compiler,linkitusingtheVMSLinker,KO>andexecutethelinkedimage.'Thecommandsequencetodo Othisisasfollows: O$BLISS&ALPHA Od$dLINK%ALPHA O$RUN%ALPHA! WIOThefirstcommandinvokestheBLISScompilertocompileMOthemoduleinthefile ALPHA.B32andtoproduceanobjectIO5file ALPHA.OBJ.Thesecondcommandusestheobjectmod-OOuleinthefile ALPHA.OBJtoproducean executableimageinJOthefile ALPHA.EXE.Thethirdcommandexecutestheimage#O>inthefile ALPHA.EXE. NMOHowever,themoreusualcaseinvolves compilingandlinkingOOseveral(andpossiblyalargenumberof)sourcemodulesinto!O5one executableimage. WNOYoucanuse command-line qualifierstocontrolthe compiler.POThese qualifiersaddalevelof complexitytothe compilationJO5process.)However,theyprovideameansbywhichyoucanLOvarythe performanceofthe compiler,forexample,intheSO productionofoutput,inthe formattingof listings,andinthe6O>degreeof optimizationtobe performed.} SMOTable1-1:7CorrespondenceBetween QualifierandSwitchNames O O QualifierNameF Module-HeadSwitch&uSWITCHES-DeclarationSwitch O O/CODECODE un/aO/DEBUGDEBUG un/aFO /MACHINE_CODE_LIST=ASSEMBLER}LIST(ASSEMBLY)LIST(ASSEMBLY)?O/MACHINE_CODE_LIST=BINARY LIST(BINARY) LIST(BINARY)O/MACHINE_CODE_OMLIST=COMMENTARY,LIST(COMMENTARY)LIST(COMMENTARY)#O/MACHINE_CODE_LIST=OBJECT LIST(OBJECT)u LIST(OBJECT)EOA/MACHINE_CODE_LIST=SYMBOLICLIST(SYMBOLIC)LIST(SYMBOLIC)$O/MACHINE_CODE_LIST=UNIQUE_ONAMESUNAMESuUNAMESO/OPTIMIZE=LEVEL:n OPLEVEL=n un/aO/OPTIMIZE=SAFESAFEuSAFEOu/OPTIMIZE=SPACEuNOZIPuuNOZIPO/OPTIMIZE=SPEED ZIP uZIP@Oi/SOURCE_LIST=EXPAND_MACROS LIST(EXPAND) LIST(EXPAND)O/SOURCE_LIST=LIBRARY& LIST(LIBRARY) LIST(LIBRARY)O\ /SOURCE_LIST=REQUIRE&\  LIST(REQUIRE) LIST(REQUIRE)O /SOURCE_LIST=SOURCE$  LIST(SOURCE) LIST(SOURCE)#OP /SOURCE_LIST=TRACE_MACROSP  LIST(TRACE)uP  LIST(TRACE)O /TERMINAL=ERRORS ERRSu ERRS O o O 2.2Compiler!OutputIOThischapter describescompileroutputasitappearsinQOterminaloutput,variouslistfileformats,anderror messages.F $ NOTheinputtoaBLISS compilationisaBLISSmodule.)AsanMOexample,considerthe followingmodule:&itcontainstwoOWNHO5 declarationsandthreeROUTINE declarations.)TheroutineLOIFACTcomputesthe factorialofitsargumentbyanitera-OOtivemethod.'TheroutineRFACTcomputesthe factorialofitsEO>argumentbya recursivemethod.)TheroutineMAINPROGHOprovidessometestcallsonIFACTandRFACT. Factorial+Oroutinesare describedinthe$o BLISSLanguage ReferenceOH Manual oH./ module%testfact%(main%=& mainprog) begin ~own a, b; wroutine%ifact%(n)&=beginlocal4Oresult;result%=%1;&incr&i%from%2&to&.n&do4'result&=% .reult*.i;o.resultend;  routine%rfact%(n)&=>hif%.n%gtr%1%then&.n*rfact&(.n%-&1)&else%1;* routine%mainprog%:%novalue&= begina a&=%ifact%(5); b&=%rfact%(5);  1+ !&VMS%wants%a&success%returnZ end;  end  eludomy! OTOThismoduleisusedinthe followingsectionsto illustratevar-JOiousBLISS compilationoutput listings.+TwocodingerrorsIO5(missingequalsignafterthe module-headand misspelledJO data-name)areincludedto illustratetheerror reportingOfacilityofBLISS.$e;;OFigure2-1:7CompilerOutputListingSequence'$O{#KK G@HHH$$@@HH$ @GH#@HHH$ @HHH$ @HHH$$@G@@@@@x>   T T  $  $ $@x<@DH D@DH @@<'@@DH @@DH @@DI D@x "  T  T  $  $ $>@@x<@DH D@DH @@<'@@DH @@DH @@DI D@x "  T T   $   $ "$@x<@DH D@DH @@<'@@DH @@DH @@DI D@x AO $B!1c $B1c A>*U $B*U" $B$I> $J!$IA1>$IA䑀1#8_<2& 2 DDB"2&@!RPDR@!RP8DR% "@D $#DD"$$DDB"$$8D< xs 9  c xYv (//OFigure2-2:7ListingHeaderFormatfi <KKcx<2D2"DR"x?        # @>/_%"O"!% )*@DAB)"A""!) )$@D@$AB)"A>"!) $@D@$A"1"ABA"!1 $@D<A>1"A/_%"O"!% HDDD$$$@B)"A""!) HDDD@$$$@B)"A>"!) DDD@$$$@"1"ABA"!1 px1"A ;Save%nothing ;%0008zE MOVL#1,&R0E ;#1,&RESULT E ;%0012z MOVL#1,&R1 ;#1,&I ;%0013z BRB2$  ;2$  ;'O 1$:MULL3pR1,&W^REULT,&R0& ;I,%REULT,&RESULT;%0014&Oe 2$:AOBLEQJ4(AP),&R1,%1$e ;N,%I,%1$  e ; z RET  ; ;%0016HO ;&Routine%Size:K22&bytes,Routine&Base:K$CODE$%+%0000O ;p0017J1,O ;p0018J1ROUTINE%RFACT%(N)%=O1 ;p0019J1:1 IF&.N&GTR%1Oy ;p0020J1y THENO ;p0021J1  .N%*&RFACT(.N&-%1)O;p0022J1:ELSEOP;p0023J1 P1;ORFACT:K.WORDp^M<> ;Save&nothing ;%0018BOTESTFACT 2-Mar-1987%13:54:04VAX% BLISS--32&T4.3-793 Pagep2@ 22-Jul-1983%16:06:56BLISS$:[ELLIS.B32]MYPROG.B32;13 (1)zQCMPL4(AP),&#1 Q;N,%#1 Q;%0019zBLEQ1$ ;1$  ;#zSUBL3p#1,&4(AP),%-(SP) ;#1,%N,%-(SP) ;%0021z)CALLSp#1,&B^RFACT );#1,%RFACT  );zqMULL2p4(AP),&R0 q;N,%R0  q; zRET ;  ;O1$:MOVL#1,&R0 ;#1,%R0 ;%0019 zIRET I; I;%0023HO;&Routine%Size:K26&bytes,Routine&Base:K$CODE$%+%0016O=;p0024J1*O;p0025J1ROUTINE%MAINPROG%=O;p0026J2:BEGINO;p0027J2:A%=% IFACT(5);O\;p0028J2:\B%=% RFACT(5);O;p0029J2O;p0030J2 :1+O!&VMS%wants%a&success%returnO4;p0031J1:4END;O" MAINPROG:zj.WORDp^M<> j;Save&nothing j;%0025zPUSHLp#5 ;#5 ;%0027zCALLSp#1,&B^IFACT ;#1,%IFACT  ;zBMOVLR0,&W^A B;R0,%A  B;zPUSHLp#5 ;#5 ;%0028zCALLSp#1,&B^RFACT ;#1,%RFACT  ;zMOVLR0,&W^B ;R0,%B  ;zbMOVL#1,&R0 b;#1,%R0 b;%0031 zRET ;  ;HO;&Routine%Size:K28&bytes,Routine&Base:K$CODE$%+%0030O;p0032J1ENDO;p0033J0ELUDOM O;PSECT%SUMMARY O;OB;KNameZBBytesB Attributes O;O;K$OWN$L8KNOVEC,KWRT,KRD& ,NOEXE,NOSHR,KLCL,KREL,KCON,NOPIC,ALIGN(2)XO;K$CODE$76K NOVEC,NOWRT,KRD&,K EXE,NOSHR,KLCL,KREL,KCON,NOPIC,ALIGN(2)BOTESTFACT 2-Mar-1987%13:54:04VAX% BLISS--32&T4.3-793 Pagep3@ 22-Jul-1983%16:06:56BLISS$:[ELLIS.B32]MYPROG.B32;13 (1)ON;& Information:J0O;& Warnings:2O;&Errors: 0 O;$COMMAND% QUALIFIERS O;Cz1BLISS/LIST/MACHINE_CODE_LIST:(ASSEMBLER,NOBINARY)%MYPROGO\;&Size:%\76%code%+&8%data%bytesO;&Run%Time:00:01.3$O;&Elapsed%Time:00:01.7"O4 ;& Lines/CPU%Min:1571#O| ;&Lexemes/CPU-Min:K5904%O ;&Memory%Used:J18%pages"O !;& Compilation&Completezu!.ENDMAINPROGiOQ j %1OExample2-3:7DefaultSourceListingOBTEST84B 2-Mar-1987%13:59:39VAX% BLISS--32&T4.3-793 BPagep1= 16-Apr-1983%20:02:35BLISS$:[ELLIS.B32]TEST.BLI;1 (1):O;p0001J0module&test%(main%=% mainprog)%=O;;p0002J1beginO;p0003J1O;p0004J1ownO;p0005J1 :a,O[;p0006J1 :[b;'O;p0007J1external%routineO;p0008J1:error;)O3;p0009J1library%'combn'&;)O{;p0010J1require%'rfact'&;O;p0017J1*O ;p0018J1routine%mainprog%=OS;p0019J2:SbeginO;p0020J2&:a%=% combinations%(3,&2);O;p0021J2&:b%=% combinations%(6,&4);O+;p0022J2Or;p0023J2 :r1+Or!&VMS%wants%a&success%returnO;p0024J1:end;O;p0025J1OJ;p0026J1endO;p0027J0eludom O;Library% Statistics Oe; O;8--------&Symbols%--------PagesJ Processing O;zFile.TotalLoadedpPercentMappedTime O< ;-O ;&BLISS$:[ELLIS.B32]COMBN.L32;1p2  2  100 6 00:00.1 O0 ;$0 COMMAND% QUALIFIERS O ;!z BLISS/LIST/NOCODE&TESTO ;&Run%Time: 00:00.6$OJ ;&Elapsed%Time:00:00.9"O ;& Lines/CPU%Min:2842$O ;&Lexemes/CPU-Min:%21894%O" ;&Memory%Used:J10%pages"Oj ;& Compilation&Complete  Q  QOExample2-4:7OutputListingwithLIBRARYandREQUIREFileDataOTEST84 2-Mar-1987%14:02:41VAX% BLISS--32&T4.3-793 Pagep1=] 16-Apr-1983%20:02:35BLISS$:[ELLIS.B32]TEST.BLI;1 ](1):O;p0001J0module&test%(main%=% mainprog)%=O;p0002J1beginOV;p0003J1O;p0004J1ownO;p0005J1 :a,O.;p0006J1 :.b;'Ov;p0007J1external%routineO;p0008J1:error;)O;p0009J1library%'combn'&;bON;;%Library&file%BLISS$:[ELLIS.B32]COMBN.L32;1%produced%by%VAX& BLISS--32%T4.3-793&O;;%onJ 2-Mar-1987%13:58:38)O;p0010J1require%'rfact'&;OGTEST84G 2-Mar-1987%14:02:41VAX% BLISS--32&T4.3-793 GPagep2> 13-Apr-1983%10:27:34BLISS$:[ELLIS.B32]RFACT.REQ;2 (1),O;KR0011J1ROUTINE%FACT&(N)%=O@;KR0012J1:@IF&.N&GTR%1O;KR0013J1:THENO;KR0014J1.N%*&FACT(.N%-%1)O;KR0015J1:ELSEO`;KR0016J1 `1;OTEST84 2-Mar-1987%14:02:41VAX% BLISS--32&T4.3-793 Pagep3=+ 16-Apr-1983%20:02:35BLISS$:[ELLIS.B32]TEST.BLI;1 +(1)O;p0017J1*O;p0018J1routine%mainprog%=O$ ;p0019J2:$ beginOl ;p0020J2&:l a%=% combinations%(3,&2);XO ;;%Loaded%symbol& COMBINATIONS%from&library%BLISS$:[ELLIS.B32]COMBN.L32;1PO ;;%Loaded%symbol&COMB%from%library&BLISS$:[ELLIS.B32]COMBN.L32;1OD ;p0021J2&:D b%=% combinations%(6,&4);O ;p0022J2O ;p0023J2 : 1+O !&VMS%wants%a&success%returnO ;p0024J1: end;Oc ;p0025J1O ;p0026J1endO ;p0027J0eludom O~ ;~ Library% Statistics O ; O ;8 --------&Symbols%--------Pages Processing OV ;zV File.V TotalLoadedpPercentMappedpTime O ;-O ;&BLISS$:[ELLIS.B32]COMBN.L32;1K2  2  100  6 00:00.1 O;$COMMAND% QUALIFIERS O;?z/BLISS/NOCODE/LIST/SOURCE_LIST:(LIBRARY,REQUIRE)&TESTO;&Run%Time:00:00.7$O;&Elapsed%Time:00:01.4"O;& Lines/CPU%Min:2417$O\;&Lexemes/CPU-Min:%18626%O;&Memory%Used:J10%pages"O;& Compilation&Complete|bQ 8FOExample2-5:7OutputListingwithMacro ExpansionDataOTEST84 2-Mar-1987%14:14:51VAX% BLISS--32&T4.3-793 Pagep1=] 16-Apr-1983%20:02:35BLISS$:[ELLIS.B32]TEST.BLI;1 ](1):O;p0001J0module&test%(main%=% mainprog)%=O;p0002J1beginOV;p0003J1O;p0004J1ownO;p0005J1 :a,O.;p0006J1 :.b;'Ov;p0007J1external%routineO;p0008J1:error;)O;p0009J1library%'combn'&;)ON;p0010J1require%'rfact'&;O;p0017J1*O;p0018J1routine%mainprog%=O&;p0019J2:&beginOn;p0020J2&:na%=% combinations%(3,&2); O;;P[COMB]=JFACT%(&3%)%/&(%FACT%(&3%-%2&)%*%FACT&(%2%)&) O;;>[COMBINATIONS]=K(&IF&3%LSS&2%THEN%ERROR%(&)PEELSE%FACT%(&3%)%/&(%FACT%(&3%-%2&)%*%FACT&(%2%)&)%)O;p0021J2&:b%=% combinations%(6,&4); O;;P[COMB]=JFACT%(&6%)%/&(%FACT%(&6%-%4&)%*%FACT&(%4%)&) O;;>[COMBINATIONS]=K(&IF&6%LSS&4%THEN%ERROR%(&)PeELSE%FACT%(&6%)%/&(%FACT%(&6%-%4&)%*%FACT&(%4%)&)%)O;p0022J2O;p0023J2 :1+O!&VMS%wants%a&success%returnO=;p0024J1:=end;O;p0025J1O;p0026J1endO ;p0027J0eludom O ; Library% Statistics O ; O/ ;8/ --------&Symbols%--------pPages Processing Ow ;zw File.w TotalLoadedpPercentpMappedTime O ;-O ;&BLISS$:[ELLIS.B32]COMBN.L32;1p2  2 1006  00:00.1 O ;$ COMMAND% QUALIFIERS O ;;z +BLISS/NOCODE/LIST/SOURCE_LIST:EXPAND_MACROS%TESTO ;&Run%Time: 00:00.7$O ;&Elapsed%Time:00:01.5"O ;& Lines/CPU%Min:2492$O] ;&Lexemes/CPU-Min:%19200%O ;&Memory%Used:J10%pages"O ;& Compilation&Complete  Q 2Z TOExample2-6:7OutputListingwithMacro ExpansionandTracingDataOTEST84 2-Mar-1987%14:15:39VAX% BLISS--32&T4.3-793 Pagep1=] 16-Apr-1983%20:02:35BLISS$:[ELLIS.B32]TEST.BLI;1 ](1):O;p0001J0module&test%(main%=% mainprog)%=O;p0002J1beginOV;p0003J1O;p0004J1ownO;p0005J1 :a,O.;p0006J1 :.b;'Ov;p0007J1external%routineO;p0008J1:error;)O;p0009J1library%'combn'&;)ON;p0010J1require%'rfact'&;O;p0017J1*O;p0018J1routine%mainprog%=O&;p0019J2:&beginOn;p0020J2&:na%=% combinations%(3,&2);1O;;[COMBINATIONS]:% Parameter&binding#O;;[COMBINATIONS](1)=K3#OE;;[COMBINATIONS](2)=K2(O;;[COMBINATIONS]:% Expansion O;;%[COMB]:% Parameter%binding O;; [COMB](1)=J3 Oe;;e [COMB](2)=J2 O;;[COMB]:% Expansion O;;P[COMB]=JFACT%(&3%)%/&(%FACT%(&3%-%2&)%*%FACT&(%2%)&)BO=;;[COMBINATIONS]=K(%IF%3%LSS%2%THEN&ERROR&(%)PELSE%FACT&(%3%)&/%(%FACT&(%3%-&2%)%*&FACT%(%2&)%)%)O;p0021J2&:b%=% combinations%(6,&4);1O ;;[COMBINATIONS]:% Parameter&binding#O] ;;[COMBINATIONS](1)=K6#O ;;[COMBINATIONS](2)=K4(O ;;[COMBINATIONS]:% Expansion O5 ;;%5 [COMB]:% Parameter%binding O} ;;}  [COMB](1)=J6 O ;;  [COMB](2)=J4 O ;; [COMB]:% Expansion OU ;;PU [COMB]=JFACT%(&6%)%/&(%FACT%(&6%-%4&)%*%FACT&(%4%)&)BO ;;[COMBINATIONS]=K(%IF%6%LSS%4%THEN&ERROR&(%)P ELSE%FACT&(%6%)&/%(%FACT&(%6%-&4%)%*&FACT%(%4&)%)%)O, ;p0022J2Ot ;p0023J2 :t 1+Ot !&VMS%wants%a&success%returnO ;p0024J1: end;O ;p0025J1OL ;p0026J1endO ;p0027J0eludom O;Library% Statistics Og; O;8--------&Symbols%--------pPages Processing O;zFile.TotalLoadedpPercentpMappedpTime O>;-O;&BLISS$:[ELLIS.B32]COMBN.L32;1K2 2 100 4 6_ 00:00.1 O;$COMMAND% QUALIFIERSOTEST84 2-Mar-1987%14:15:39VAX% BLISS--32&T4.3-793 Pagep2= 16-Apr-1983%20:02:35BLISS$:[ELLIS.B32]TEST.BLI;1 (1) Oa;:za*BLISS/NOCODE/LIST/SOURCE_LIST:TRACE_MACROS%TESTO;&Run%Time:00:00.7$O;&Elapsed%Time:00:01.1"OZ;& Lines/CPU%Min:2250$O;&Lexemes/CPU-Min:%17333%O;&Memory%Used:J10%pages"O2;& Compilation&Completeo9 O2.1BTerminalOutputMOUThecompilerproducestwokindsof informationontheter-JOminal:,errormessagesand statistics.,YoucanrequestorNOsuppresseachofthesebyusingthe /TERMINAL qualifier,asO^ describedin^Section1.3.1^Bydefault,errormessagesarere-LOportedduring compilation,but statisticsare suppressed.+ANOfinal compilationsummaryisevokedaspartofa statisticsOhrequest.*!}?>! aMOErrormessagesshowthesourceprogramline associatedwithTOtheerrorfollowedbya descriptionoftheerror.'The statisticsOO5showthenameofeachroutine declarationinthemoduleandKOthenumberofbytes associatedwiththat declaration.+TheKO compilation statisticsgivethenumberofwarningander-NO>ror messages,thenumberofcodebytesanddatabytesusedNObytheprogram,theruntimeandelapsedtimerequiredforIOthe compilation,andthenumberofpagesofVAXmemory*OHrequiredforthe compilation./MOThelastlineoftheterminaloutput indicateswhetherthePO compilationproducedanobjectfileoralibraryfile.,IfanHO5objectfileis produced,thelastlineisasfollows: t ;Compilation&Complete!|POIfalibraryfileis produced,thelastlineisasfollows:,t;Library%Precompilation%Completeb+8COConsidertheterminaloutputforthesamplemoduleBOTESTFACT containedinthefile MYPROG.B32.-Toob-NO5tainbothkindsof information,compilethemodulebyusing/Othe followingBLISScommandline: $+BLISS/TERMINAL=STATISTICS%MYPROG *HOThe qualifier/TERMINAL=STATISTICSisusedsothatbothQOtypesofoutputaresenttothe terminal.(TheterminaloutputO5isasfollows: ;p0002K0begin! %%WARN#0481KL1:0002)TISyntax&error&in&module%head ;p0014p2result%=& .reult*.I;4 %% WARN_#000..................1KL1:0014"T! Undeclared%name:JREULT iIFACT&22 RFACT&26 MAINPROG&28 A;% Information:K0 ;% Warnings:2 ;%Errors: _0 ;%Size:%_76%code&+%8%data&bytes a;%Run&time:a00:01.5$ ;%Elapsed%time:00:03.5" ;% Lines/CPU&Min:1663# 9;%Lexemes/CPU-Min:J6252% ;%Memory&used:K15%pages" ;% Compilation%Complete? %BLS32-W-ENDDIAGS,% Compilation%with&2% diagnosticsS! )HOTerminaloutputfor compilingMYPROGincludestwowarn-QOings,whichare describedlater.' Statistics followingthewarn-KO5ingsshowthenumberofbytesrequiredforeachroutine.HOThemoduleTESTFACTcontainsthreeroutine declarations,AOnamely,IFACT,RFACT,and MAINPROG,andtheyuseMO>22,26,and28bytes, respectively.(The compilationsummaryKOshowsthatthe compilingofTESTFACTrequired1.2secondsKOof processortimeandthat3.0secondselapsed; moreover,IOH1663sourcelines comprising6252lexemeswere processedFOperCPUminute.-The compilationrequired15pagesofJOmemory, excludingmemoryrequiredbythecompileritself.!t J2OTable2-2:7SymbolType Abbreviations O OFSymbolTypeF Abbreviation Ob OBindBindOEBindroutineEBindRoutOBuiltinBuiltinO8 Compiletime8ComptimeOEnableEnableO,External,ExternalOExternalliteralExtLitO Externalregister ExtRegOExternalroutineExtRoutOFieldFieldOFieldsetFieldsetOForwardForwardOForwardroutineForwRoutOGlobalGlobalOtGlobalbindtGlobBindOGlobalbindroutineGlBiRoutOg Globalliteralg GlobLitO Globalregister GlobRegO[ Globalroutine[ GlobRoutO Keywordmacro KeyWMacr OO KeywordmacroformalO KeyWFormO Label LabelOB LinkageB LinkageO Literal LiteralO6 Local6 LocalO Macro MacromZC O OSymbolType Abbreviation O  OxMap xMapOMacroformalMacrForm)OlSymbolwithouta declarationlNotDecl OOwn OwnO_Psect_PsectORegisterRegisterOSRoutineSRoutineORoutineformalRoutFormOF StructureFStructurO StacklocalStacklocO: Structureformal:StruForm%ONamewhichisnotboundUnboundO- Undeclare-Undeclar OT ;"Q &ROExample2-7:7OutputListingwithCross-ReferenceListingIncludedOBTEST84B 2-Mar-1987%14:17:29VAX% BLISS--32&T4.3-793 BPagep1= 16-Apr-1983%20:02:35BLISS$:[ELLIS.B32]TEST.BLI;1 (1):O;p0001J0module&test%(main%=% mainprog)%=O;;p0002J1beginO;p0003J1O;p0004J1ownO;p0005J1 :a,O[;p0006J1 :[b;'O;p0007J1external%routineO;p0008J1:error;)O3;p0009J1library%'combn'&;)O{;p0010J1require%'rfact'&;OTEST84 2-Mar-1987%14:17:29VAX% BLISS--32&T4.3-793 Pagep2>, 13-Apr-1983%10:27:34BLISS$:[ELLIS.B32]RFACT.REQ;2 ,(1),O;KR0011J1ROUTINE%FACT&(N)%=O;KR0012J1:IF&.N&GTR%1O%;KR0013J1:%THENOm;KR0014J1m.N%*&FACT(.N%-%1)O;KR0015J1:ELSEO;KR0016J1 1;O.TITLEKTESTO.PSECTK $OWN$,NOEXE,2Z00000%A:.BLKBp400004%B:.BLKBp4* .EXTRNJERROR *t .PSECTJ$CODE$,NOWRT,22d 0000%00000%FACT:p.WORDpSave%nothing ;%0011 % 01_% 04pACKD1%00002*% CMPLN,%#1 % ;%0012m 0EK15%00006*m BLEQ1$  m ;O 7E04pAC 01KC3%00008* SUBL3p#1,&N,&-(SP) ;%0014T EFpAF 01KFB%0000D* CALLSp#1,&FACT  ; E 50_E 04pACKC4%00011*E MULL2pN,%R0  E ; 04%00015 * RET  ;  50+ 01KD0%00016%1$:MOVL#1,&R0 ;%0012 04%00019 * RET  ;%0016HO ;&Routine%Size:K26&bytes,Routine&Base:K$CODE$%+%0000O TEST84  2-Mar-1987%14:17:29VAX% BLISS--32&T4.3-793 Pagep3=Q  16-Apr-1983%20:02:35BLISS$:[ELLIS.B32]TEST.BLI;1 Q (1)O ;p0017J1*O;p0018J1routine%mainprog%=OJ;p0019J2:JbeginO;p0020J2&:a%=% combinations%(3,&2);O;p0021J2&:b%=% combinations%(6,&4);O";p0022J2Oj;p0023J2 :j1+Oj!&VMS%wants%a&success%returnO;p0024J1:end; 001C%00000% MAINPROG:(.WORDpSave%R2,R3,R4p;%0018 /54/E1pAFK9E%00002/MOVABpFACT,%R4  /;w03KDD%00006wPUSHLp#3 w;%0020 6401KFB%00008CALLSp#1,&FACT  ; 5350KD0%0000BMOVLR0,&R3  ;O01KDD%0000EOPUSHLp#1  O; 6401KFB%00010CALLSp#1,&FACT  ; 5250KD0%00013MOVLR0,&R2  ;'02KDD%00016'PUSHLp#2  '; o64o01KFB%00018oCALLSp#1,&FACT  o; 5052KC4%0001BMULL2pR2,&R0  ;O0000'JCF5350KC7%0001EDIVL3pR0,&R3,%A  ;G06KDD%00024GPUSHLp#6 G;%0021 6401KFB%00026CALLSp#1,&FACT  ; 5350KD0%00029MOVLR0,&R3  ;02KDD%0002CPUSHLp#2  ; g64g01KFB%0002EgCALLSp#1,&FACT  g; 5250KD0%00031MOVLR0,&R2  ;04KDD%00034PUSHLp#4  ; ?64?01KFB%00036?CALLSp#1,&FACT  ?; 5052KC4%00039MULL2pR2,&R0  ;O0000'JCF5350KC7%0003CDIVL3pR0,&R3,%B  ; 5001KD0%00042MOVL#1,&R0 ;%0024^04%00045 ^RET  ^;HO;&Routine%Size:K70&bytes,Routine&Base:K$CODE$%+%001AOR;p0025J1O;p0026J1endO;p0027J0eludom O;PSECT%SUMMARY O;O?;KName?Bytes? Attributes O;O;K$OWN$L8KNOVEC,KWRT,KRD& ,NOEXE,NOSHR,KLCL,KREL,KCON,NOPIC,ALIGN(2)XO;K$CODE$96K NOVEC,NOWRT,KRD&,K EXE,NOSHR,KLCL,KREL,KCON,NOPIC,ALIGN(2)OTEST84 2-Mar-1987%14:17:29VAX% BLISS--32&T4.3-793 Pagep4= 16-Apr-1983%20:02:35BLISS$:[ELLIS.B32]TEST.BLI;1 (1)OSymbol(TypeKDefinedK Referenced&...9O9 ------------%--------%-----%---------------- OA 4Own520= OB 4Own621=OCOMB4MacroLib012021,OX COMBINATIONS%MacroLib012021OERROR4ExtRout82021OFACT$4Routine1114c20c21cO0MAINPROGRoutine18 OxN 4xRoutForm1112.14.$ CROSS% REFERENCE&MAPO Line&#Event File%...+O -----J---------------K ---------:!1JSource&(start)pBLISS$:[ELLIS.B32]TEST.BLI;1e!1JModule&TEST!9JLibrary%#1'!BLISS$:[ELLIS.B32]COMBN.L32;1=!11JRequire%(start)KBLISS$:[ELLIS.B32]RFACT.REQ;2="16JRequire%(end)"27JEludom&TEST)z#KEY%TO% REFERENCE%TYPE%FLAGSx#.pFetch#=pStore$cpRoutine%callP$apAddress%use$@pIndirect%useN$ep External,&external&routine,&or&external&literal% declaration7(%fpForward%or%forward&routine% declaration)p%hp Condition&handler%enabling%mpMap& declaration#&up Undeclare& declarationmQ LC O.;.Library% Statistics Ov; O;8--------%Symbols%--------pPages Processing O;zFile.TotalLoadedpPercentpMappedTime ON;-O;&BLISS$:[ELLIS.B32]COMBN.L32;1K2 o21006 00:00.1OTEST84 2-Mar-1987%14:17:29VAX% BLISS--32&T4.3-793 Pagep5=a 16-Apr-1983%20:02:35BLISS$:[ELLIS.B32]TEST.BLI;1 a(1) O;$COMMAND% QUALIFIERS O3;@z30BLISS/SOURCE_LIST:(REQUIRE)/LIST/CROSS_REFERENCE%TESTO;&Size:%96%code%+&8%data%bytesO;&Run%Time:00:01.7$O-;&Elapsed%Time:00:20.3!Ot;& Lines/CPU%Min:947#O;&Lexemes/CPU-Min:K7298%O;&Memory%Used:J28%pages"OL;& Compilation&Complete0 !#<! T'O2.3BCross-ReferenceListingPO(Thecross-referencelistingisanoptionalpartoftheoutputNOlistingthatisproducedbythecompileronrequest.+Cross-LO referencedataare generatedonamodulebasis; therefore,OO1the reference information associatedwithagivenmodulewillTOappearasthelastmodule-specificiteminthelistingfile,be-GOforethe compilationsummaryandbeforeany subsequentO;moduledata.#(O2.3.1BCross-ReferenceHeaderHO4Thecross-referenceheaderis separatedfromtheoutputMOlistingheaderbyablanklineand subsequentlyappearsonSOthefirsttwolinesofeachpageofthe referencelisting.*The3O=cross-referenceheaderisasfollows:TSymbol(TypeJDefinedp Referenced%...=/ ---------------%--------%-----%-----------------)O2.3.2BCross-ReferenceEntriesIO4The referenceentrieslistedundereachheadernameareKO fixed-lengthfieldsthatare separatedbyasinglespace. OSymbolFieldPO4Thesymbolfieldisusedtolistthenamesofthe differentTOsymbols.*ThelengthofthefieldisfixedatthelengthofthePOlongestnameinthemodule.'AnameappearsjustonceintheTO>symbolfield,definingitsinitial recognitionbythecompilerasOOadeclaredsymbol.(IfmultiplesymbolsaredeclaredwiththeMOsamename,linesdirectly followingthefirst appearanceofMOGthenameareused;however,foreach subsequent recognition5Othefieldisleftblank.'Forexample:/FALPHAp.K.K.Z.K.K./GAMMAp.K.K.! OTypeFieldOO4Thetypefield describesthe condition(suchasLOCAL,BIND,GOorBUILTIN)underwhichthe symbol-namewasusedwhenNOitwas declared.-Thefieldiseight characterslong;there-KO>fore,symboltype abbreviationsareused.+Thesymboltype(O abbreviationsarelistedinTable2-2.*Yb?UNOTheNotDecl abbreviation indicatestheuseofasymbolthatLOhasnotbeen declared.+Thus,the appearanceofNotDeclin1O<thetypefield indicatesanerror._! 5IOTheEnable,Forward, ForwRout,Map,orUndeclarabbrevi-QOationreferstosymbolsthataredeclared elsewhereasroutineGO5or data-segmentnames.-Thus,the appearanceofanyofTOthese abbreviationsinthetypefieldusually indicatesanerror. JOTheUnbound abbreviation indicatesthatthecompilermadePOnoattempttofinda declarationforthesymbolnamebecauseKO5thenameisnotboundtoasymbol.,Forexample,asym-QObolinamacro actual-list,orinthefalsebranchofa%IFIO compile-timeconditional-function,isdeclaredasUnbound.KOAsanexampleofusingthesymbolnameandtypefields,2Oconsiderthe followingcodesegment:/a00050BEGIN/00051LOCAL/00052:ALPHA,/900053:9GAMMA; . . ./z00080END;/00081/ 00082BEGIN/R00083LOCAL/00084ALPHA; . ). q./00095END; GOThe appearanceofthesymbolsinthecross-referencing*Olistingwouldbeasfollows:#/aALPHALocal52p.K.K.Local84p.K.K.#/GAMMALocal53p.K.K.*! ODefinedFieldMO4Thedefinedfield identifiesthecompilerlistinglinenum-OOberofthe declarationorthelibrary(Lib)filenumberandOOhasafixedlengthoffive characters.) ExceptionsoccurwithJO>theNotDeclandUnboundsymboltypes.(BecausethesymbolOOnameinthesecasescannotbe associatedwitha declaration,POnolinenumbercanappear,andthefieldisblank.)Thefol-NOGlowingexampledepictsthe appearanceoflinenumbersanda9Olibraryfilenumberinthedefinedfield: %A %Ownd%520= mB mOwndm620= COMBMacropLib0120=b! 8PONotethatacross-referencemapappearsatthebottomoftheROlistingwhichlocatesand identifieseachcompiledfile(source,RO5require,orlibrary)byitsinitiallinenumberanditssystemDOlocation(device, directory,andfilespecification). O ReferencedFieldSO4The referencedfieldlists additional referencesandusesoftheOOsymbol.'Eachentryconsistsofa 5-characterlinenumber(orPOalibraryfilenumber)anda 2-characterusagefield.*IftheOO> referencesrequiremorethanoneline,the additionalentries(Oappearon subsequentlines.NLOThe 2-character usage-fieldsdescribethewayinwhichthePOsymbolsareused.)A usage-fieldmayconsistofnone,one,or.O5twoofthe following characters:X s. OOFlagyMeaning OObDeclaration-Usage Oe+y EXTERNAL,EXTERNALROUTINE,or(y)EXTERNALLITERAL declaration Of/yFORWARDorFORWARDROUTINEdecla-yration OjmyjMAP declaration Oh&y Conditionhandlerenabling O^u y^ UNDECLARE declarationO Data-Usage OQ.yQFetch O=yStore OEcyERoutinecall OayAddressuse O8@y8Indirectuse OT4  TOAblankusagefield indicatesthatusageisimpliedbythetypeLOofsymbol,forexample,amacronameusedwithinamacroMO5 expansionora structurenameusedasastructure-attributeOina declaration.1! `OAn( e ),( f ),( m ),( h ),or( u )flag appearingintheus-POagefield indicatesa referencetothesymbolnamewithinan;O5 EXTERNAL,FORWARD,MAP,ENABLE,or UNDECLAREOtype declaration.\ 2QOThefetchflag( . ) indicatesthatadatasegmenthasbeenPO ``fetchedfrom''alocationdefinedbythesymbolname,whileSO5thestoreflag( = ) indicatesthatavaluehasbeen``stored>Ointo''alocationdefinedbythesymbolname.(! UOThe address-useflag( a ) indicatesthattheaddressofadataLOsegment,definedbythesymbolname,hasbeenstoredintoOO5anotherdatasegment.(Forexample,A=B indicatesthattheOOaddressofthedatasegmentdefinedbyBisstoredindataWOsegmentA.Thus,symbolBwouldbeflagged( a )foritsuseasVO>anaddress,andsymbolAwouldbeflagged( = )foritsuseasOstorage. WROThe indirect-useflag( @ )neverappearsalone.*ThisflagisLOalwayscombinedwiththe remaining data-usageflagstoin-PO5dicatethatadatasegmenthasbeenused indirectly,suchasQOfetchedfrom(@.))orstoredinto(@=);however,notethatallSOmultiplelevelsof indirectionareflaggedthesameasasingle!O>levelof indirection.,NOThe followinglistprovidessamplesofthe 2-characterdata-LOusagecodes.+TheexamplesreflectdirectandindirectdataMO5usesofsymbolBasaBLOCK structureandthenasaREFOBLOCK structure. OOCode%b B;BLOCK[n]B:REFBLOCK[n] OObA=.B bb. vb.OA=..B b@. v@.OVA=...B bV@. vV@.OA=B[C] ba v@aOIA=.B[C]. vI@.OB=.A b= v=O=(.B)=.A b=@= v=@=OB[C]=.A= v@=O0B( )=A b0c v0cO(.B)( )=A@c v@c OSOThus,inrelationtodirectandindirect addressing,theutilityHO recognizesordinary structuresandFIELD references.*ForLO5example,considerthe followingcodesegmentwhereexplicit;OFIELD referencesaremadetodata segments: 00030FIELD Z00031Z My_fields%= 00032 _SET 00033#_ This_field&=% [0,0,8,0], 200034"_2 That_field&=% [0,1,8,0] z00035_zTES; 00036OWN  000371 B&:%REF&BLOCK[]%FIELD% (My_fields); R000388 00039 B[This_field]%=%.B[That_field]%+&1; COThecross-referencelistingsforBareasfollows: B:Own3739@=39@. /P. /. /.$ ( THAT_FIELDField3439.$ p THIS_FIELDField3339= KONotethatbecauseBisdeclaredasaREF structure,theBO structure referencestoBareindirect references. NOThenextcodeexamplereflectsanindirectaddressusageof OB: a00030FIELD 00031 My_fields%= 00032 _SET 900033#_9 This_field&=% [0,0,8,0], 00034"_ That_field&=% [0,1,8,0] 00035_TES; 00036OWN Y000371YB&:%REF&BLOCK[]%FIELD% (My_fields); 00038 T. T0. Tx.$ 00108C%=% B[That_field] A5OThelistingforBisnowasfollows: /B Own37108@a TP. T. T.$/( THAT_FIELDpField33108 NKOInthisexample,BpointstoaBLOCKinmemory.)ThroughMOB,anaddresswithintheBLOCKis indirectlystoredinC;AO5thus,anindirectaddressuseisflaggedforB.yO@O2.3.3BOutputListingwithCross-ReferenceListingO4ThelistinginF4Example2-7-<4includesacross-referencelist-JOingthatwasproducedby compilingmoduleTESTwiththeO followingoptions: Oi$@i0BLISS/SOURCE_LIST:(REQUIRE)/LIST/CROSS_REFERENCE%TEST*FOyHONotethatthelistingincludescross-referencedinforma-GOtionfortheLIBRARYandREQUIREfiles.+The referenceQO5listisfollowedbyacross-referencemap,which specifiestheWOfirstandlastlinesofthefilesused,andaflagslegend,whichBO describesthecodesusedinthe referencedfield.%%v \JOExample2-8:7ExampleofErrorMessagesinSourceListing ._.J(header) .;O;p0001%0&MODULE%TESTFACT%(MAIN%=& MAINPROG)O7;p0002%0&BEGIN!O;&WARN#048K1KL1:0002,O;&Syntax%error%in%module%headO;p0003J1OW;p0004J1%OWNO;p0005J1A,O;p0006J1B;O/;p0007J1,Ow;p0008J1%ROUTINE&IFACT&(N)%=O;p0009J2BEGINO;p0010J2LOCALOO;p0011J2%RESULT;#O;p0012J2RESULT&=%1;0O;p0013J2INCR%I&FROM%2%TO%.NDO6O';&WARN#000K.....................1KL1:0013#Oo;& Undeclared%name:KNDO+O;p0014%2KRESULT%=% .REULT*.I;)O;&WARN#066K ........1KL1:0014gOF;&Two% consecutive%operands%with&no& intervening& operator.JA%"DO"&has%been&inserted2O;&WARN#000K.................1KL1:0014%O;& Undeclared%name:KREULTO;p0015J2.RESULTOf;p0016J1END;O;p0017J1+O;p0018J1%ROUTINE&RFACT&(N&=EO> ;&ERR%#0712......3.........1KL1:0018KL2:0018KL3:0016ZO ;&Missing%comma%or%closing%bracket&in&formal% parameter%list%for%RFACT0O ;&The% incorrect% delimiter&was%"="$O ;p0019J1IF%.N%GTR&1O^ ;p0020J1THEN,O ;p0021J1%.N%*&RFACT(.N&-%1)O ;p0022J1ELSEO6 ;p0023J1%1;O~ ;p0024J1*O ;p0025J1%ROUTINE&MAINPROG&=O ;p0026J2BEGIN%OV ;p0027J2A%=& IFACT(5);%O ;p0028J2B%=& RFACT(5);O ;p0029J2:O- ;p0030J21%!&VMS%wants%a&success%returnOu ;p0031J1END;O ;p0032J1%ENDO;p0033J0%ELUDOMO;& Information:J0O;& Warnings:4O;&Errors: 1 `. . .Y# $#O2.4B CompilationSummaryEO(The compilationsummaryappearsattheendofeveryOO compilationlistingandconsistsofthe following information:^! 4 ` GTheroutinesizeandprogramsectionrelativestarting-(address (followingeachroutine) ` GAprogramsectionsummary(attheendofthemodule) `' I'Ifacross-referencelistingisadded,across-referenceNmapofthefilesusedandthelinenumberwhereeachfileisfirst referenced `W OWIfacross-referencelistingisadded,akeytothemeaning*ofthe usage-field characters `/ K/Libraryusage statistics indicatingthe librariesusedandKthenumberofnamesloadedfromeachlibrary(omittedif#no librariesareused) `` F`Thenumberofmemorypagesmappedandthe processingtime `8 <8Thecommandlineusedtocompilethemodule ` IThenumberofwarningsanderrors(omittedifnowarn-"ingsorerrorsexist) ` GAsummaryof statisticsforthemodule, consistingofMsizeofcodeanddata(inbytes);runtime;elapsedtime;G@numberoflinesandlexemes processedperCPUminute;Fmemoryused;anda statementthatthe compilationiscomplete&$'&2O3.2Linking,! Executing,!and! DebuggingOOdThischapter describestheprocessoflinking, executing,and'O debuggingaBLISSprogram. ' &(' {O3.1BLinkingHOUBeforeyoucanexecuteyourprogram,youmustusetheMOVMSLinkertolinkthevariouspiecestogethertoformanHO executableimage.+Thelinkingprocessmakestheconnec-NO^tionbetweenexternal variables referencedinonemoduleand:Oglobal variablesdefinedinanothermodule.b(88OSomeexamplesoflinkingareasfollows:)np ` ETolinkasinglemodule,usethe followingcommand: U$DULINK&ALPHAg*=KbInresponsetothiscommand,thelinkerreadstheobjectEmodulein ALPHA.OBJandcreatesthe executableimage ALPHA.EXE. ` ATolinkthemodulesALPHA,BETA,andGAMMA,use"the followingcommand: p$ ipLINK%ALPHA,BETA,GAMMAJ+ FbInresponsetothiscommand,thelinkercombinestheEobjectmoduleinthefile ALPHA.OBJwiththeobject=modulesBETA.OBJand GAMMA.OBJtoproducetheElsingle executableimage ALPHA.EXE,whichcanthenbe executed.,BOThelink operationis describedindetailinthe  V AX/VMS#O Linker ReferenceManual .-&O3.1.1BLINKCommandSyntax?O4ThesyntaxoftheLINKcommandisasfollows:2OLINK[/qualifier...]! object-file,....)O3.1.2BLINKCommand SemanticsMO4Thelinkerreadstheobjectmodules containedineachfileKOnamedinthelinkcommandtocreatealinked, executableMOimage.(Thenameofthe executableimageistakenfromtheRO=nameofthefirst object-file,andthefiletypeEXEisused.TOIfnofiletypeisincludedinthe file-spec,filetypeOBJisOassumed./KOIfthe/DEBUG qualifierisusedinthe link-command,theHOVMSDebuggerislinkedwiththe specified object-files.0NLOThelinkerhasmany qualifiers,butonlythe/DEBUGqual-QOifieris discussedhere.*Other qualifiersare describedinthe O5 V+}5 AX/VMSLinker ReferenceManual p5.1KO Appearanceofthe followingerrormessageduringthelinkO operation:Ita%LINKER-W-TRUNC,%Trunc.%error%in%module&,% P-section(t,%offset%%X%
s2IIO generallyimpliesthattheprogramislargerthan32KB.3! zNO Specifyingthe followingmodule qualifiercausesthecompilerOOtogeneratelong displacementvaluesfor instruction operands:MOa'ADDRESSING_MODE(EXTERNAL=LONG_RELATIVE,%NONEXTERNAL=LONG_RELATIVE)N*4G] 8OTable3-1:7 Arithmetic Expression Operators O OF CharacterKFInterpretation Ob  O.#KFetch(prefix)operator OE+KKE Arithmeticaddition(infix)operatoror(prefix)plussign O-OK Arithmetic subtraction(infix)operatoror(prefix)minussign OC*.K8 Arithmeticmultiplicationoperator O/(K Arithmeticdivisionoperator O,^>K, Arithmeticshiftoperator(unlikeMACROsyntax) OMOD'K Arithmeticmodulusoperator O NOT%K Booleannegationoperator OAND KBooleanANDoperator OOR)KBoolean inclusive-ORoperator OXOR)KBoolean exclusive-ORoperator OEQV(KBoolean equivalenceoperatorj ...PK Precedence operators;do (enclosed)first(unlikeMACROsyntax)O%DECIMAL@KDecimalradixoperator(either%DECor %DECIMAL) Ot%O t'tstring t' KtOctalradixoperator O%X 'string '&K Hexadecimalradixoperator Og %E g 'g string g '4Kg Single-precisionfloating-pointoperator O ]+CIz :OTable3-2:7AddressRepresentation Characters O #OF CharacterInterpretation Ob  O.obWhenusedaloneor immediatelybeforea delimiter, representsthelastlocation addressed^bbyanEXAMINE,DEPOSIT,SETBREAK,SETTRACE,orSETWATCHcommand."This-bfiscalledthecurrent location. O\hb Representsthelastvalue displayedbyEXAMINEor EVALUATE.(The backslashisalsoBb-usedinformingpathnames,asinMACROsyntax.) O.hb ``Contentsof''orindirect operator,whenusedasaprefixoperator(unlikeMACRObsyntax). On:TbnRangeoperator(low address:highaddress)fortheEXAMINEcommand. O (')4K,O3.2B ExecutingaLinkedProgramLOUTorunyourprogram,usethe executableimageproducedas timization procedureresultsinamachine instructionbeingSO generatedthatis differentfromtheone specifiedinthecall.! VMOMachine-specific functionsinBLISS-32aredividedintocat-'Oegories,as illustratedinTable4-1.&MAseparate descriptionofTO5eachfunctionisgiveninthe following sections.'Foradetailed#O discussion,consultthe%w VAX ArchitectureHandbook f.*b?C >!OInput ParameterUsageOO4The definitionsofthese functionsrequire addressesasinputMO parameters,evenwherevaluescouldhavebeen specifiedforJOwhatVAXterms``source operands'',whicharealongwordUO>orlessinsize.'Forexample,wherealengthisrequiredastheLOsecondinput-parameterofthePROBER function,thecallisOwrittenasfollows:"tPROBER(...,UPLIT(5),...) Oor$%PROBER(...,%REF(.A+2),...)MO(The%REFis preferred,asthecompilerisfreetocreate;O immediateor short-literal addressingmodes.)@bPOMost functionsalsoallowthenameofaregistertobeusedKOasthe parameter,eventhoughregisternamesdonothave.O5valuesin BLISS-32.'Forexample:OREGISTER%R; O...*OIIF%PROBER(...,R,...)%THEN&...qOis equivalentto:OREGISTER%R; OP...1OIF%PROBER(...,%REF(.R),...)%THEN%...KOThe followingaregeneralrulesfortheuseof%REFandBOundottedregisternameswiththeinput parameters:  ` @A%REFvaluecannotbeusedwitha DESTINATION(address. ` GWiththe exceptionoftheirusewith TESTBITxxbuilt-Jin functions,anundottedregistercanonlybeusedfor?YoperandsthatareBYTE,WORD,LONG,orsingle-$ precisionfloating-point. `1 M1Aregisternamecannotbeusedastheaddressofachar-5acterstringorpackeddecimalstring. "OOutput ParameterUsageNO4Output parametersallowthereturnofregistercontentsthatGOresultfrom executingcertainmachine-specific functionsO(suchasCALLG).OForexample:OBUILTINOPCALLG;OBIND"OARGLIST=%UPLIT(1,%PI);O(....%)#THEN kBEGINp! ...!% CONSEQUENCE END!Od Generated%Code:BBCSK#3,X,1$ ... 4; ]...4];% CONSEQUENCE ... 4; O1$: LONotethatthecompilerhaschosenan instructionwiththeNOoppositesensetothemachine-specific function.*If1$couldMO5notbereachedbyabyte displacement,the expansionwouldObeasfollows:BBSSp3,X,1$ZBRWp2$ O1$: ...;S...;& CONSEQUENCE...; O2$: >IOIntheaboveexample,the TESTBITSSroutineisusedinOOa situationwhereitisrequiredtogenerateonlyacontrolSO5flowresult.*Ifarealresultactuallywasneeded,itmightbe5O generatedasinthe followingexample.tBLISS%Source:%{Y%=& TESTBITSS(%X<3,1>&)O Generated%Code:MCLRLpYBBCSp#3,X,1$INCLpY O%1$: LOAmachine-specificfunctiondiffersfromaroutinecallinLOthatthecompilercan determineexactlyhowthe parametersWO5oftheroutinecallaregoingtobeused,andsotherearecasesLOwhere%REFdoesnotneedtoallocatea temporarystorage.OForexample:AkBISPSW(&%REF% (%X'80'));p!%ENABLE&DECIMAL%OVERFLOWzMOThiscallwouldbecodedwithoutany temporarybeingallo-Ocated,asfollows:aBISPSW%#^X80&a;&ENABLE%DECIMAL&OVERFLOWKOThecompilercanmakesimilar decisionswhenyouusetheIOundottednameofalocalasa parameterinamachine-LO5specificfunctioncall.-Youare syntactically specifyinganKOaddress,but dependingonthe parameter,thatlocalmight?Ostillbe allocatedina register.'Forexample:kMOVPSL(ALOCAL)v!L8OThismightresultinthe followingcode:MOVPSL%R2.,/X4O4.1B ADAWI-AddAlignedWord Interlocked$OADAWIN (SRCADDR,DSTADDR)O Parameters:O4SRCADDRNOAddressofawordwhosecontentsareaddedtothedestina-Otion.ODSTADDROO(Addressofawordtowhichthesourceistobeadded.+TheOOaddressmustbewordaligned(thatis,thelowbitmustbeOzero).[M1OResult: O4ContentsofthePSL/.0}S-O4.2BADDD-Add D-FloatingOperands&OADDDM(SRC1A,SRC2A,DSTA)O Parameters:O4SRC1AJOAddressofadouble-precisionfloating-pointquadwordusedOastheaddend.sOSRC2AJO(Addressofadouble-precisionfloating-pointquadwordusedOastheaugend.xANODSTA@O(Addressofaquadwordwherethesumisstored.LM"OResult:O4NOVALUE0/1}S-O4.3BADDF-Add F-FloatingOperands&OADDFN(SRC1A,SRC2A,DSTA) O Parameters:O4SRC1ANOAddressofasingle-precisionfloating-pointlongwordusedasOtheaddend. sOSRC2ANO(Addressofasingle-precisionfloating-pointlongwordusedasOtheaugend.xANODSTA@O(Addressofalongwordwherethesumisstored.LM"OResult:O4NOVALUE102} S-O4.4BADDG-Add G-FloatingOperands&OADDGN(SRC1A,SRC2A,DSTA)! O Parameters:O4SRC1ALOAddressofanextendeddouble-precisionfloating-pointquad-&Owordusedastheaddend." OSRC2ALO(Addressofanextendeddouble-precisionfloating-pointquad-&Owordusedastheaugend.x#ANODSTA@O(Addressofaquadwordwherethesumisstored.L$M"OResult:O4NOVALUE213}%S-O4.5BADDH-Add H-FloatingOperands&OADDHM(SRC1A,SRC2A,DSTA)&O Parameters:O4SRC1AIOAddressofanextended-exponentdouble-precision floating-1Opointoctawordusedastheaddend.'OSRC2AIO(Addressofanextended-exponentdouble-precision floating-1Opointoctawordusedastheaugend.y(AOODSTAAO(Addressofanoctawordwherethesumisstored.L)M"OResult:O4NOVALUEZ324*Y,O4.6BADDM-Add MultiwordOperands-OADDMM(SIZE,SRC1A,SRC2A,DSTA)+O Parameters:O4SIZELO Compile-timeconstant expression indicatingthesizeofthe9Ooperandsin longwords(BLISSvalueunits).,jOSRC1ALO(Addressofextendedmultiprecisionintegerusedasthead-Odend.-jOSRC2ALO(Addressofextendedmultiprecisionintegerusedastheau-Ogend.w.AMODSTA?O(Addressofthesumofsource1andsource2.L/M"OResult:O4NOVALUEi4 3509O4.7BASHP-ArithmeticShiftandRoundPacked;OASHPN(SCALE,SRCLEN,SRCADDR,ROUND,DSTLEN,0mDSTADDR[;OUT0,OUT1,OUT2,OUT3])Z10OInput Parameters:O4SCALEOOAddressofabytewhosecontentsspecifythescalecountbyOOapowerof10(apositivecount effectively multiplieswhileKO>anegativecountdivides,azerocountmovesandaffectsO conditioncodes).2OSRCLENNO(Addressofabytewhosecontentsspecifythelengthofthe)Osourcestringtobescaled.3A_OSRCADDRNO(Addressofaquadword containingthequantitytobescaled.4OROUNDMO(AddressofabytewhosecontentsspecifythedecimalroundIOoperand(onlyusedwhenanegativecountis specified).5ODSTLENNO(AddressofabytewhosecontentsspecifythelengthoftheFO destinationstringwheretheresultistobestored.6 AdODSTADDRSO(Addressofaquadwordwherethescaledresultistobestored.7WOOutput Parameters:O4OUT0,OValuereturnedinR0iszero.8! OOUT1SO(ValuereturnedinR1istheaddressofthebyte containingthe:Omost significantbitofthesourcestring.d9A:OOUT2,O(ValuereturnedinR2iszero.:! OOUT3SO(ValuereturnedinR3istheaddressofthebyte containingtheAOmost sugnificantdigitofthe destinationstring.L;M"OResult:O4NOVALUE546<V+O4.8BASHQ-ArithmeticShiftQuad+OASHQM(SHIFT,SRCADDR,DSTADDR)=pO Parameters:O4SHIFTLOAddressofabytewhosecontentsspecifytheshiftcount.>A`OSRCADDROO(Addressofaquadword containingthequantitytobeshifted.?! AeODSTADDRTO(Addressofaquadwordwheretheshiftedresultistobestored.[@M1OResult: O4ContentsofthePSL657kAA%O4.9B BICPSW-BitClearPSWOBICPSWN (MASKADDR)BO Parameters:O4MASKADDRKOAddressofawordwhosecontentsaretobeonescomple-HOmentedandANDedintothe processorstatusword(PSW).LCM"OResult:O4NOVALUE|768jD@$O4.10C BISPSW-BitSetPSWOBISPSWM (MASKADDR)EO Parameters:O4MASKADDRMOAddressofawordwhosecontentsaretobeORedintotheOPSW.LFM"OResult:O4NOVALUE879cG9&O4.11C BPT-BreakPointTrapOBPT()MHM#O Parameters:O4NoneLIM"OResult:O4NOVALUE98:qJG2O4.12C BUGL-BugcheckwithLongOperandOBUGL(ARG)KO Parameters: O4ARGJO Link-timeconstant expression(LTCE)tobe interpretedby2Othebugcheckexception-handlingcode.LLM"OResult:O4NOVALUEM NOThe followingexampleisbasedontheDISPATmoduleintheOF11ACP:tabuiltin BUGWtexternal%literal 9BUG$_UNXSIGNAL;t......*tBUGW(%BUG$_UNXSIGNAL%or%4%);N)O generatesthecode sequence: t.EXTRN&BUG$_UNXSIGNALtP......tBUGW!t.WORD%BUG$_UNXSIGNAL!4OLOTheinline generationofthiscode eliminatestheneedto%REFvalue).kUAA ORTN4O(Addressoftheroutinetobecalled.wVMOOutput Parameters:O4OUT0"OValuereturnedinR0.ZWA0OOUT1"O(ValuereturnedinR1.zXMPOResult:?O4Sameasresultoftheroutinethatiscalled.[Y 1MONotethatthisfunctiondoesnotinteractwithanylinkageLO attribute informationthatmaybe associatedwiththesec-RO5ond parameter.)ItmustbeusedonlytocallaroutinewithaFOstandardVMSlinkage(BLISSandFORTRANin BLISS-32).ZRQOTopassa routine'sargumentlisttoanotherroutine,usetheO following sequence:taBUILTIN AP, CALLG;t9CALLG(.AP,OTHERRTN);<;=[u!O4.15C CHMx-ChangeModeOCHMEN(ARG)O2CHMKN(ARG)OCHMSN(ARG)OhCHMUN(ARG)\}O Parameters: O4ARGLOAddressofawordwhosecontentsareusedasa parameterOcode.L]M"OResult:O4NOVALUE|= <>^ 5O4.16C CMPC3-Compare Characters3OperandFOCMP3N(LENA,SRC1A,SRC2A[;OUT0,OUT1,OUT2,OUT3]) r)_ OInput Parameters:O4LENAOOAddressofaword containingthebyte comparisonlengthsfor$Ostring1andstring2.i`A?OSRC1A0O(Addressofthebaseofstring1.iaA?OSRC2A0O(Addressofthebaseofstring2.+b WOOutput Parameters:O4OUT0LOValuereturnedinR0isthenumberofbytes remaininginOOstring1 (includingthebytethat terminatedthe comparison);;O>R0iszeroonlyifthestringsareequal.!cOOUT1QO(ValuereturnedinR1istheaddressofthebyteinstring1OOthat terminatedthe comparison;ifthestringsareequal,R0IOcontainsanaddressequaltoonebytebeyondstring1.fdA<OOUT2.O(ValuereturnedinR2equalsR0.!eOOUT3QO(ValuereturnedinR3istheaddressofthebyteinstring2OOthat terminatedthe comparison;ifthestringsareequal,R3IOcontainsanaddressequaltoonebytebeyondstring2.;fOResult:Yg</ O-1#O#SRC1AlessthanSRC2A.Wh<- O0"O#SRC1AequaltoSRC2A.[i<1 O1&O#SRC1AgreaterthanSRC2A. >=?j5O4.17C CMPC5-Compare Characters5Operand=OCMPC5M (SRC1LENA,SRC1A,FILLA, SRC2LENA,SRC2A'[;OUT0,OUT1,OUT2,OUT3])kuOInput Parameters:O4SRC1LENAGOAddressofaword containingthelengthofstring1.ilA?OSRC1A0O(Addressofthebaseofstring1.mOFILLAQO(Addressofaword containingabytefillvalue,whichextendsAOtheshorterstringtothelengthofthelonger.nAYOSRC2LENAGO(Addressofaword containingthelengthofstring2.ioA?OSRC2A0O(Addressofthebaseofstring2.p gOOutput Parameters:O4OUT0LOValuereturnedinR0isthenumberofbytes remaininginLOstring1 (includingthebytewhich terminatedthecompari-WO>son);R0iszeroifthestringsareofequalvalueandlengthorMOifstring1was exhaustedbeforethe comparison terminated.LqK"OOUT1PO(ValuereturnedinR1istheaddressofthebytethattermi-KOnatedthe comparison;ifthe comparisondidnot terminateNObeforestring1was exhausted,R1containsanaddressequal+O2toonebytebeyondstring1.pr KFOOUT2LO(ValuereturnedinR2isthenumberofbytes remaininginOOstring2 (includingthebytethat terminatedthe comparison);TOR0iszeroifthestringsareofequalvalueandlengthorifIO2string2was exhaustedbeforethe comparison terminated.YsK/OOUT3QO(ValuereturnedinR3istheaddressofthebyteinstring2LOthat terminatedthe comparision;ifthe comparisondidnotIO terminatebeforestring2was exhausted,R3containsan;O2addressequaltoonebytebeyondstring2.;tOResult:Yu</ O-1#O#SRC1AlessthanSRC2A.Wv<- O0"O#SRC1AequaltoSRC2A.[w<1 O1&O#SRC1AgreaterthanSRC2A.r?>@{xQ2O4.18C CMPD-Compare D-FloatingOperandsOCMPDN(SRC1A,SRC2A)yWO Parameters:O4SRC1ACOAddress ofaquadword containingadouble-precisionKOfloating-pointvalue(mustnotbethenameofaregisterO>nora%REFvalue).zrOSRC2ACO(Address ofaquadword containingadouble-precision Ofloating-pointvalue.;{OResult:Y|</ O-1#O#SRC1AlessthanSRC2A.W}<- O0"O#SRC1AequaltoSRC2A.[~<1 O1&O#SRC1AgreaterthanSRC2A.,@?A{Q2O4.19C CMPF-Compare F-FloatingOperandsOCMPFM(SRC1A,SRC2A) O Parameters:O4SRC1ANOAddressofalongword containingasingle-precision floating-Opointvalue. tOSRC2ANO(Addressofalongword containingasingle-precision floating-Opointvalue.;OResult:Y</ O-1#O#SRC1AlessthanSRC2A.W<- O0"O#SRC1AequaltoSRC2A.[<1 O1&O#SRC1AgreaterthanSRC2A.BA@B{Q2O4.20C CMPG-Compare G-FloatingOperandsOCMPGN(SRC1A,SRC2A)O Parameters:O4SRC1AEOAddressofaquadword containinganextendeddouble-+O precisionfloating-pointvalue.OSRC2AEO(Addressofaquadword containinganextendeddouble-+O precisionfloating-pointvalue.;OResult:Y</ O-1#O#SRC1AlessthanSRC2A.W<- O0"O#SRC1AequaltoSRC2A.[<1 O1&O#SRC1AgreaterthanSRC2A.RBAC{Q2O4.21C CMPH-Compare H-FloatingOperandsOCMPHN(SRC1A,SRC2A)O Parameters:O4SRC1AFOAddressofanoctaword containinganextended-exponent2Odouble-precisionfloating-pointvalue.OSRC2AFO(Addressofanoctaword containinganextended-exponent2Odouble-precisionfloating-pointvalue.;OResult:Y</ O-1#O#SRC1AlessthanSRC2A.W<- O0"O#SRC1AequaltoSRC2A.[<1 O1&O#SRC1AgreaterthanSRC2A.CBDW1O4.22C CMPM-Compare MultiwordOperands&OCMPPM(SIZE,SRC1A,SRC2A)O Parameters:O4SIZEKOCompile-time-constant expression indicatingthesizeofthe9Ooperandsin longwords(BLISSvalueunits). kOSRC1ALO(Addressofalongword containinganextendedmultiprecisionOvalue. kOSRC2ALO(Addressofalongword containinganextendedmultiprecisionOvalue.;OResult:Y</ O-1#O#SRC1AlessthanSRC2A.W<- O0"O#SRC1AequaltoSRC2A.[<1 O1&O#SRC1AgreaterthanSRC2A.%D CE$O4.23C CMPP-ComparePacked>OCMPPM (SRC1LENA, SRC1ADDR, SRC2LENA,SRC2ADDR[;%wOUT0,OUT1,OUT2,OUT3]) OInput Parameters:O4SRC1LENAQOAddressofaword containingthelengthofthedecimalstringOSRC1.AVOSRC1ADDRDO(AddressofthebaseofpackeddecimalstringSRC1.mOSRC2LENALO(Addressofaword containingthelengthofdecimalstringOSRC2.AVOSRC2ADDRDO(AddressofthebaseofpackeddecimalstringSRC2.WOOutput Parameters:O4OUT0,OValuereturnedinR0iszero.! OOUT1SO(ValuereturnedinR1istheaddressofthebyte containingthe5Omost significantdigitofstringSRC1.dA:OOUT2,O(ValuereturnedinR2iszero.! OOUT3SO(ValuereturnedinR3istheaddressofthebyte containingthe5Omost significantdigitofstringSRC2.;OResult:W<- O-1!O#SRC1lessthanSRC2.U<+ O0 O#SRC1equaltoSRC2. 0 O1$O#SRC1greaterthanSRC2.IONotethatCMPP3orCMPP4is generated dependingontheOoperands provided.EDF-O4.24C CRC-Cyclic RedundancyCheck4OCRCM (TABLEADDR, INICRCADDR, STRLENADDR,7 STREAMADDR,DSTADDR)UO Parameters:O4 TABLEADDR-OAddressofa 16-longwordtable.A[O INICRCADDRGO(AddressofalongwordwhichcontainstheinitialCRC. O STRLENADDRPO(Addressofaword containingtheunsignedlengthofthedataOstreaminbytes.}ASO STREAMADDR?O(Addressofthefirstbyteofthedatastream.tODSTADDRNO(Addressofalongwordwherethe resulting32-bitCRCistoObestored.LM"OResult:O4NOVALUEFEGW9O4.25C CVTDF-Convert D-Floatingto F-FloatingOCVTDFN(SRCA,DSTA)O Parameters:O4SRCACOAddress ofaquadword containingadouble-precision Ofloating-pointvalue.ODSTAKO(Addressofalongwordwherethesingle-precision floating-(Opoint conversionisstored.;OResult:\<2 O1'O#Nofloating-point overflow.X<. O0#O#Floating-point overflow.GFH~T6O4.26C CVTDI-Convert D-FloatingtoIntegerOCVTDIN(SRCA,DSTA)O Parameters:O4SRCACOAddress ofaquadword containingadouble-precision Ofloating-pointvalue.wAMODSTA?O(Addresswheretheinteger conversionisstored.;OResult:U<+ O1 O#Nointeger overflow.Q<' O0O#Integer overflow.HGI{Q3O4.27C CVTDL-Convert D-FloatingtoLongOCVTDLN(SRCA,DSTA)O Parameters:O4SRCACOAddress ofaquadword containingadouble-precision Ofloating-pointvalue. A^ODSTAPO(Addressofalongwordwheretheinteger conversionisstored.;OResult:U<+ O1 O#Nointeger overflow.Q<' O0O#Integer overflow.DIHJW9O4.28C CVTFD-Convert F-Floatingto D-FloatingOCVTFDN(SRCA,DSTA) O Parameters:O4SRCANOAddressofalongword containingasingle-precision floating-Opointvalue.ODSTAKO(Addressofaquadwordwherethedouble-precision floating-(Opoint conversionisstored.LM"OResult:O4NOVALUELJIKW9O4.29C CVTFG-Convert F-Floatingto G-FloatingOCVTFGM(SRCA,DSTA) O Parameters:O4SRCANOAddressofalongword containingasingle-precision floating-Opointvalue.ODSTAJO(Addressofaquadwordwheretheextendeddouble-precision1Ofloating-point conversionisstored.LM"OResult:O4NOVALUEVKJLW9O4.30C CVTFH-Convert F-Floatingto H-FloatingOCVTFHN(SRCA,DSTA) O Parameters:O4SRCANOAddressofalongword containingasingle-precision floating-Opointvalue.ODSTABO(Addressofanoctawordwheretheextended-exponentCOdouble-precisionfloating-point conversionisstored.LM"OResult:O4NOVALUELKM~T6O4.31C CVTFI-Convert F-FloatingtoIntegerOCVTFIM(SRCA,DSTA) O Parameters:O4SRCANOAddressofalongword containingasingle-precision floating-Opointvalue. A^ODSTAPO(Addressofalongwordwheretheinteger conversionisstored.;OResult:U<+ O1 O#Nointeger overflow.Q<' O0O#Integer overflow.MLN{Q3O4.32C CVTFL-Convert F-FloatingtoLongOCVTFLM(SRCA,DSTA) O Parameters:O4SRCANOAddressofalongword containingasingle-precision floating-Opointvalue. A^ODSTAPO(Addressofalongwordwheretheinteger conversionisstored.;OResult:U<+ O1 O#Nointeger overflow.Q<' O0O#Integer overflow.ONMOW9O4.33C CVTGF-Convert G-Floatingto F-FloatingOCVTGFM(SRCA,DSTA)O Parameters:O4SRCAEOAddressofaquadword containinganextendeddouble-+O precisionfloating-pointvalue.ODSTAKO(Addressofalongwordwherethesingle-precision floating-(Opoint conversionisstored.LM"OResult:O4NOVALUEaONPW9O4.34C CVTGH-Convert G-Floatingto H-FloatingOCVTGHN(SRCA,DSTA)O Parameters:O4SRCAEOAddressofaquadword containinganextendeddouble-+O precisionfloating-pointvalue.ODSTABO(Addressofanoctawordwheretheextended-exponentCOdouble-precisionfloating-point conversionisstored.LM"OResult:O4NOVALUE&POQ{Q3O4.35C CVTGL-Convert G-FloatingtoLongOCVTGLN(SRCA,DSTA)O Parameters:O4SRCAEOAddressofaquadword containinganextendeddouble-+O precisionfloating-pointvalue. A^ODSTAPO(Addressofalongwordwheretheinteger conversionisstored.LM"OResult:O4NOVALUEUQPRU9O4.36C CVTHF-Convert H-Floatingto F-FloatingOCVTHFN (SRCA,DSTA)O Parameters:O4SRCAFOAddressofanoctaword containinganextended-exponent2Odouble-precisionfloating-pointvalue.ODSTAKO(Addressofalongwordwherethesingle-precision floating-(Opoint conversionisstored.LM"OResult:O4NOVALUERQSW9O4.37C CVTHG-Convert H-Floatingto G-FloatingOCVTHGN(SRCA,DSTA)O Parameters:O4SRCAFOAddressofanoctaword containinganextended-exponent2Odouble-precisionfloating-pointvalue.ODSTAJO(Addressofaquadwordwheretheextendeddouble-precision1Ofloating-point conversionisstored..SRT{Q3O4.38C CVTHL-Convert H-FloatingtoLongOCVTHGN(SRCA,DSTA)O Parameters:O4SRCAFOAddressofanoctaword containinganextended-exponent2Odouble-precisionfloating-pointvalue. A^ODSTAPO(Addressofalongwordwheretheinteger conversionisstored.LM"OResult:O4NOVALUETSU~T6O4.39C CVTID-ConvertIntegerto D-FloatingOCVTIDN(SRCA,DSTA)fO Parameters:O4SRCACOAddressofalongword containinganintegervalue.ODSTAKO(Addressofaquadwordwherethedouble-precision floating-(Opoint conversionisstored.LM"OResult:O4NOVALUEUTV~T6O4.40C CVTIF-ConvertIntegerto F-FloatingOCVTIFM(SRCA,DSTA)fO Parameters:O4SRCACOAddressofalongword containinganintegervalue.ODSTAKO(Addressofalongwordwherethesingle-precision floating-(Opoint conversionisstored.LM"OResult:O4NOVALUEiVUW{Q3O4.41C CVTLD-ConvertLongto D-FloatingOCVTLDN(SRCA,DSTA)fO Parameters:O4SRCACOAddressofalongword containinganintegervalue.ODSTAKO(Addressofaquadwordwherethedouble-precision floating-(Opoint conversionisstored.LM"OResult:O4NOVALUEM##ONooverflowcanoccur.iWVX{Q3O4.42C CVTLF-ConvertLongto F-FloatingOCVTLFM(SRCA,DSTA)fO Parameters:O4SRCACOAddressofalongword containinganintegervalue.ODSTAKO(Addressofalongwordwherethesingle-precision floating-(Opoint conversionisstored.LM"OResult:O4NOVALUEM##ONooverflowcanoccur..XWY{Q3O4.43C CVTLH-ConvertLongto H-FloatingOCVTLHN(SRCA,DSTA)fO Parameters:O4SRCACOAddressofalongword containinganintegervalue.ODSTABO(Addressofanoctawordwheretheextended-exponentCOdouble-precisionfloating-point conversionisstored.LM"OResult:O4NOVALUE"YXZZ/O4.44C CVTLP-ConvertLongtoPacked+OCVTLPM(SRCA,DSTLENA,DSTADDR)fO Parameters:O4SRCACOAddressofalongword containinganintegervalue. oODSTLENAMO(Addressofaword containingthelengthofthe destinationOstring.z APODSTADDR?O(Addressofthebaseofthe destinationstring.; OResult:U <+ O1 O#Nodecimal overflow.Q <' O0O#Decimal overflow.ZY[Z/O4.45C CVTPL-ConvertPackedtoLong+OCVTPLM (SRCLENA,SRCADDR,DSTA)wO Parameters:O4SRCLENAQOAddressofaword containingthelengthofthesourcestring.uAKOSRCADDR:O(Addressofthebaseofthesourcestring. A^ODSTAPO(Addressofalongwordwheretheinteger conversionisstored.;OResult:U<+ O1 O#Nointeger overflow.Q<' O0O#Integer overflow.U[ Z\V<+ O1 O#Nointeger overflow.Q?<' O0O#Integer overflow.`_a@\=O4.51CCVTRHL-ConvertRounded H-FloatingtoLongOCVTRHLN(SRCA,DSTA)AO Parameters:O4SRCAFOAddressofanoctaword containinganextended-exponent2Odouble-precisionfloating-pointvalue.B A^ODSTAPO(Addressofalongwordwheretheinteger conversionisstored.<COResults:UD<+ O1 O#Nointeger overflow.QE<' O0O#Integer overflow.Ba `bF Thelowbitofthatbyteisbitpositionzero.OSIZADDRMO(Addressofabytewhosecontent,whenzeroextendedto32SObits,hasavaluelessthanorequalto32.+Thisvaluespeci-WOfiesthesizeofthefieldtobe searched.*ThesizeofthefieldPO2ismeasuredinbits,beginsatthebitposition specifiedbyCOPOSADDR,andextendstoward increasingbitnumbers. AgOBASEADDRUO(Addressofabytewhoselowbitis interpretedaspositionzero.! ODSTADDRTO(Addressofalongwordwherethepositionofthefirstbitfound8Ointhe specifiedstateistobestored.;OResult:<] O1RO#Nobitinthe specifiedstateisfoundinthefield searched.I< O0O# Otherwise.kjl\2$O4.62C HALT-Halt ProcessorOHALTMM#O Parameters:O4NoneLM"OResult:O4NOVALUEyMOO Description:9O4Thisroutine generatesaHALT instruction.Wlkmu(O4.63C INDEX-Index Calculation:OINDEXM (SUBSCRIPT,LOW,HIGH,SIZE,INDEXIN, INDEXOUT)gO Parameters:O4 SUBSCRIPT?OAddressofalongword containingthe subscript.r OLOWJO(Addressofalongword containingthelowerboundoftheO subscriptrange.sOHIGHJO(Addressofalongword containingtheupperboundoftheO subscriptrange.{AQOSIZECO(Addressofalongword containingthescalefactor.A\OINDEXINKO(Addressofalongword containingtheinitialindexvalue.A]OINDEXOUTKO(Addressofalongwordwheretheresultistobestored.LM"OResult:O4NOVALUEm ln0?=O4.64CINSQHIand INSQTI-InsertEntryinQueue,'( InterlockedEO INSQHI(ENTRY,HEADER)MInsertentryinqueueathead,1= interlockedEO INSQTI(ENTRY,HEADER)NInsertentryinqueueattail,,& interlockedO Parameters:O4ENTRYPOAddressofanentrytobeinsertedinaqueue followingtheOheader.dA:OHEADER*O(Addressofthequeueheader.;OResult: <^ O0SO#IfENTRYwasnotthefirstentrytobeinsertedinthequeue.w<M O1BO#Ifthe secondary interlockcouldnotbe acquired.du O2PO#IfENTRYwasthefirstentrytobeinsertedintothequeue.RONotethatifarealresultisneeded,the instructionsequence otherwise,R0isazero.! OOUT1TO(ValuereturnedinR1istheaddressofthebytelocatediftheUObyteislocated; otherwise,R1istheaddressofonebytebeyondOthestring.;OResult:!  O1MO#Abytewaslocatedwhichwasthesameas .CHARA<0,8>(the)O|Z conditioncodeisclear).z<P O0EO#Nobytewaslocated(theZ conditioncodeisset).p oq(O4.67C MATCHC-Match CharactersOaddressofonebytebeyondthesourcestring.;OResult:x<N O1CO#Amatchwasfound(theZ conditioncodeisset).{<Q O0FO#Nomatchwasfound(theZ conditioncodeisclear). qprW4O4.68C MFPR-Movefrom ProcessorRegister#OMFPRN (PROCREG,DSTADDR)vLO Parameters:O4PROCREG&O Processorregisternumber.ODSTADDRLO(Addressofalongwordwherethecontentsofthe processor'Oregisteristobestored.LM"OResult:O4NOVALUEr qs 1O4.69C MOVC3-Move Character3OperandCOMOVC3M(LENA,SRCADDR,DSTADDR[;OUT0,OUT1,OUT2,OUT3,OUT4,OUT5]){OInput Parameters:O4LENAQOAddressofaword containingthelengthofthesourcestring.uAKOSRCADDR:O(Addressofthebaseofthesourcestring.kAAODSTADDR0O(Addressofthe destinationstring.WOOutput Parameters:O4OUT0,OValuereturnedinR0iszero.vOOUT1OO(ValuereturnedinR1istheaddressofonebytebeyondtheOsourcestring.dA:OOUT2,O(ValuereturnedinR2iszero.{OOUT3OO(ValuereturnedinR3istheaddressofonebytebeyondtheO destinationstring.dA:OOUT4,O(ValuereturnedinR4iszero.dA:OOUT5,O(ValuereturnedinR5iszero.LM"OResult:O4NOVALUEs rt1O4.70C MOVC5-Move Character5Operand>OMOVC5M (SRCLENA,SRCADDR,FILL,DSTLENA,DSTADDR7[;OUT0,OUT1,OUT2,OUT3,OUT4,OUT5]){OInput Parameters:O4SRCLENANOAddressofword containingthelengthofthesourcestring.uAKOSRCADDR:O(Addressofthebaseofthesourcestring.yAOOFILLAO(Addressofabyte containingthefill character.AZODSTLENAIO(Addressofword containingthedestination-stringlength.kAAODSTADDR0O(Addressofthe destinationstring.0 WOOutput Parameters:O4OUT0KOValuereturnedinR0isthenumberofunmovedbytesre-SOmaininginthesourcestring;R0isnonzeroonlyifthesource=O>stringislongerthanthe destinationstring.OOUT1OO(ValuereturnedinR1istheaddressofonebytebeyondthe@Olastbyteinthesourcestringthatwasmoved.dA:OOUT2,O(ValuereturnedinR2iszero.{OOUT3OO(ValuereturnedinR3istheaddressofonebytebeyondtheO destinationstring.dA:OOUT4,O(ValuereturnedinR4iszero.dA:OOUT5,O(ValuereturnedinR5iszero.LM"OResult:O4NOVALUEt sus!O4.71C MOVP-MovePackedBOMOVPM(LENA,SRCADDR,DSTADDR[;OUT0,OUT1,OUT2,OUT3]){OInput Parameters:O4LENAQOAddressofaword containingthelengthofthesourcestring.~ATOSRCADDRCO(Addressofthebaseofthesourcedecimalstring.rAHODSTADDR7O(Addressofthebaseofthe destination.WOOutput Parameters:O4OUT0,OValuereturnedinR0iszero.! OOUT1SO(ValuereturnedinR1istheaddressofthebyte containingthestringislongerthanthe destinationstring.OOUT1OO(ValuereturnedinR1istheaddressofonebytebeyondtheEOlastbyteinthesourcestringthatwas translated.dA:OOUT2,O(ValuereturnedinR2iszero.A_OOUT3QO(ValuereturnedinR3istheaddressofthe translationtable.dA:OOUT4,O(ValuereturnedinR4iszero.{OOUT5OO(ValuereturnedinR5istheaddressofonebytebeyondtheO destinationstring.LM"OResult:O4NOVALUE wvxK9O4.74C MOVTUC-Move TranslatedUntil Character9OMOVTUCN (SRCLENA,SRCADDR,ESCADDR,TBLADDR,4DSTLENA,DSTADDR[;OUT0,OUT1,OUT2,2OUT3,OUT4,OUT5])~OInput Parameters:O4SRCLENAQOAddressofaword containingthelengthofthesourcestring.uAKOSRCADDR:O(Addressofthebaseofthesourcestring.~ATOESCADDRCO(Addressofabyte containingtheescape character.qOTBLADDRGO(Address of the translationtable(can be created withOCH$TRANSTABLE).oODSTLENAMO(Addressofaword containingthelengthofthe destinationOstring.zAPODSTADDR?O(Addressofthebaseofthe destinationstring.f <OOutput Parameters:O4OUT0LOValuereturnedinR0isthenumberofbytes remaininginQOthesourcestring (includingthebytethatcausedtheescape);SO>R0iszeroonlyiftheentiresourcestringwas translatedand!Omovedwithoutescape.F KOOUT1RO(ValuereturnedinR1istheaddressofthebytethatresultedNOin destinationstring exhaustionorescape;ifno exhaustionUOorescape,R1istheaddressofonebytebeyondtheendoftheO2sourcestring.dA:OOUT2,O(ValuereturnedinR2iszero.|AROOUT3DO(ValuereturnedinR3istheaddressofthetable.! }OOUT4QO(ValuereturnedinR4isthenumberofbytes remainingintheO destinationstring. OOUT5QO(ValuereturnedinR5istheaddressofthebyteinthedes-NOtinationstringthatwouldhavereceivedthe translatedbyteNOthatcausedtheescape,orwouldhavereceiveda translatedQO2byteifthesourcestringwasnot exhausted;ifno exhaustionUOorescape,R5istheaddressofonebytebeyondtheendoftheO destinationstring.OResult:OO4Ifthestringwas successfully translatedwithoutescape,theVOresultis0.) Otherwise,theresultistheaddressofthebytein:Othesourcestringwhichcausedtheescape.xwy U2O4.75C MTPR-Moveto ProcessorRegister#OMTPRN (SRCADDR,PROCREG) O Parameters:O4SRCADDRNOAddressofalongwordwhosecontentsaretobeloadedinto/Othe designated processor register.a A7OPROCREG&O( Processorregisternumber.L M"OResult:O4NOVALUEyxz Y3O4.76C MULD-Multiply D-FloatingOperands&OMULDM(SRC1A,SRC2A,DSTA)O Parameters:O4SRC1AJOAddressofadouble-precisionfloating-pointquadwordusedOasthe multiplier.yOSRC2AJO(Addressofadouble-precisionfloating-pointquadwordused Oasthe multiplicand.|ARODSTADO(Addressofaquadwordwheretheproductisstored.LM"OResult:O4NOVALUEzy{Y3O4.77C MULF-Multiply F-FloatingOperands&OMULFN(SRC1A,SRC2A,DSTA) O Parameters:O4SRC1ANOAddressofasingle-precisionfloating-pointlongwordusedasOthe multiplier. yOSRC2ANO(Addressofasingle-precisionfloating-pointlongwordusedasOthe multiplicand.|ARODSTADO(Addressofalongwordwheretheproductisstored.LM"OResult:O4NOVALUE{z|Y3O4.78C MULG-Multiply G-FloatingOperands&OMULGN(SRC1A,SRC2A,DSTA) O Parameters:O4SRC1ALOAddressofanextendeddouble-precisionfloating-pointquad-*Owordusedasthe multiplier. OSRC2ALO(Addressofanextendeddouble-precisionfloating-pointquad-,Owordusedasthe multiplicand.|ARODSTADO(Addressofaquadwordwheretheproductisstored.LM"OResult:O4NOVALUE|{}Y3O4.79C MULH-Multiply H-FloatingOperands&OMULHM(SRC1A,SRC2A,DSTA)O Parameters:O4SRC1AIOAddressofanextended-exponentdouble-precision floating-3Opointoctawordusedasa multiplier.OSRC2AIO(Addressofanextended-exponentdouble-precision floating-5Opointoctawordusedasa multiplicand.}ASODSTAEO(Addressofanoctawordwheretheproductisstored.L M"OResult:O4NOVALUE}|~^!4!O4.80CNOP-No OperationONOPN()M"#O Parameters:ONoneL#M"OResult:O4NOVALUE~}$e1O4.81C PROBER-ProbeRead Accessibility4OPROBERM (MODEADDR, LENGTHADDR, BASEADDR)%uO Parameters:O4MODEADDRNOAddressofabytewhosecontentsspecifya protectionmode.& O LENGTHADDRLO(Addressofawordwhosecontentsarezeroextendeddecre-OOmentedby1andaddedtoBASEADDRtospecifythelastbyte#Oofanareainmemory.'OBASEADDRQO(Addressofthefirstbyteofanareainmemory(mustnotbe;Othenameofaregisternora%REFvalue).;(OResult:t)<J O1?O#Bothfirstandlastbytesareread accessible.I*< O0O# Otherwise.~+f2O4.82C PROBEW-ProbeWrite Accessibility4OPROBEWM (MODEADDR, LENGTHADDR, BASEADDR),tO Parameters:O4MODEADDRMOAddressofabytewhosecontentsspecifya processormode.- O LENGTHADDRLO(Addressofawordwhosecontentsarezeroextendeddecre-OOmentedby1andaddedtoBASEADDRtospecifythelastbyte#Oofanareainmemory..OBASEADDRQO(Addressofthefirstbyteofanareainmemory(mustnotbe;Othenameofaregisternora%REFvalue).;/OResult:u0<K O1@O#Bothfirstandlastbytesarewrite accessible.I1< O0O# Otherwise. *2??O4.83CREMQHIand REMQTI-RemoveEntryFromQueue,'( InterlockedAOREMQHI(HEADER,ADDR)MRemovefromqueueathead,P= interlockedAOREMQTI(HEADER,ADDR)NRemovefromqueueattail,K& interlockedy3OO Parameters:O4HEADER*OAddressofthequeueheader.4~OADDRLO(Addressofalongwordwheretheaddressoftheentryre-$Omovedistobestored.;5OResult:t6<J O0?O#Thequeueisnotempty;anentrywasremoved.s7<I O1>O#The secondary interlockcouldnotbe acquired.{8<Q O2FO#Thequeueisnowempty;thelastentrywasremoved.;9  O3DO#Thequeuewasalreadyempty;noentrywasremoved.NOTheresultofREMQxIisTRUEifnoentrywasremoved,ei-LOtherbecausethequeuewasemptyorbecausethe secondary(Oo interlockwasnot acquired.:r~IOThe instructionsequence generatedin real-contextisasOfollows:/aCLRLtmp/REMQxIp HEADER,ADDR/BCS2$d;% Interlock%failed/9BVS1$d9;%Remove%failed/BEQL3$d;%Removed&an&entry/DECLtmp!d;%Removed&last%entry1$:%ADDL#2,tmpY2$:%INCLtmp; IOThe instructionsequence generatedin flow-contextisasOfollows:/aREMQxIp HEADER,ADDR/BVC1$d;%Entry%removed/.....d;%Remove%failed;{<Q1O4.84C REMQUE-RemoveEntryfromQueue OREMQUEN(ENTRY,ADDR)}=SO Parameters:O4ENTRY/OAddressofanentryinaqueue.>~OADDRLO(Addressofalongwordwheretheaddressoftheentryre-$Omovedistobestored.;?OResult:@  OO+ValuezInitialz+StateFinal+StateEntry+Removed OF O0%zNotemptyNotemptyYes O)2z)NotemptyEmpty )Yes O3zEmptyEmpty No OPO_NotethatthevalueofREMQUEistrueonlyifnoentrywasOremoved.A!mMOThevalueiscomputedfromthe conditioncodesasfollows: t (Z-bit)^1&OR&(V-bit)lBB$O4.85C ROT-RotateaValueOROTM(VALUE,SHIFT)oCEO Parameters:O4VALUE!OValuetoberotated.`DA6OSHIFT'O(Numberofbitstorotate.vEMLOResult:;O4VALUErotatedthe specifiednumberofbits. F~&O4.86C SCANC-Scan CharactersAOSCANCM(LENA,ADDR,TBLADDR,MASKA[;OUT0,OUT1,OUT2,OUT3])GOInput Parameters:O4LENAPOAddressofaword containingthelengthofthestringtobeOscanned.jHA@OADDR2O(Addressofthebaseofthestring.jIA@OTBLADDR/O(Addressofthe translationtable.JA\OMASKAMO(Addressofabyte containingthemasktousein scanning.;KWOOutput Parameters:O4OUT0LOValuereturnedinR0isthenumberofbytes remaininginMOthestring (includingthebytethatproducedanonzeroANDMO>result);R0iszeroonlyiftherewasazeroANDresult. LOOUT1NO(ValuereturnedinR1istheaddressofthebytethatpro-LOducedanonzeroANDresultor(ifnononzeroANDresult);Otheaddressofonebytebeyondthestring.dMA:OOUT2,O(ValuereturnedinR2iszero.|NAROOUT3DO(ValuereturnedinR3istheaddressofthetable.O! OResult:UO4IftheSCANCfailstofindamatch,theresultis0.' Otherwise,ROtheresultistheaddressofthebytethatproducedanonzeroOANDwiththeMASK. P^$O4.87C SKPC-Skip Character:OSKPCM(CHARA,LENA,ADDR[;OUT0,OUT1]))QwOInput Parameters:O4CHARALOAddressofabyte containingthe charactertobeskipped.RAVOLENAHO(Addressofaword containingthesearchstringlength.mSACOADDR5O(Addressofthestringtobe searched..T! WOOutput Parameters:O4OUT0QOValuereturnedinR0isthenumberofbytes remainingintheQOstring (includingthelocatedorunequalone)ifthe (unequal)7O>byteislocated; otherwise,R0iszero.U! OOUT1VO(ValuereturnedinR1istheaddressofthebytelocated(ifbyteUOis located); otherwise,R1istheaddressofonebytebeyondtheOstring.;VOResult:W  O1LO#Abytewaslocatedwhichwasnotthesameas .CHARA<0,8>/O|(theZ conditioncodeisclear).zX<P O0EO#Nobytewaslocated(theZ conditioncodeisset). Y~&O4.88C SPANC-Span CharactersAOSPANCN(LENA,ADDR,TBLADDR,MASKA[;OUT0,OUT1,OUT2,OUT3])ZOInput Parameters:O4LENAPOAddressofaword containingthelengthofthestringtobeOspanned.j[A@OADDR2O(Addressofthebaseofthestring.j\A@OTBLADDR/O(Addressofthe translationtable.]A\OMASKAMO(Addressofabyte containingthemasktousein spanning.>^! WOOutput Parameters:O4OUT0QOValuereturnedinR0isthenumberofbytes remainingintheOOstring (includingthebytethatproducedazeroANDresult);IO>R0isazeroonlyiftherewasanonzeroANDresult._ OOUT1RO(ValuereturnedinR1istheaddressofthebytethatproducedPOazeroANDresult; otherwise,R1istheaddressofonebyteObeyondthestring.d`A:OOUT2,O(ValuereturnedinR2iszero.|aAROOUT3DO(ValuereturnedinR3istheaddressofthetable.b OResult:LO4IftheSPANCfailstofindamatch, theresultiszero.RO Otherwise,theresultistheaddressofthebytethatproduced(OazeroANDwiththeMASK.cY3O4.89C SUBD-Subtract D-FloatingOperands&OSUBDM(SRC1A,SRC2A,DSTA)dO Parameters:O4SRC1AJOAddressofadouble-precisionfloating-pointquadwordusedOasthe subtrahend.etOSRC2AJO(Addressofadouble-precisionfloating-pointquadwordusedOastheminuend.fAWODSTAIO(Addressofthequadwordwherethe differenceisstored.LgM"OResult:O4NOVALUEhY3O4.90C SUBF-Subtract F-FloatingOperands&OSUBFN(SRC1A,SRC2A,DSTA)i O Parameters:O4SRC1ANOAddressofasingle-precisionfloating-pointlongwordusedasOthe subtrahend.j tOSRC2ANO(Addressofasingle-precisionfloating-pointlongwordusedasOtheminuend.kAUODSTAGO(Addressofalongwordwherethe differenceisstored.LlM"OResult:O4NOVALUEmY3O4.91C SUBG-Subtract G-FloatingOperands&OSUBGN(SRC1A,SRC2A,DSTA)n O Parameters:O4SRC1ALOAddressofanextendeddouble-precisionfloating-pointquad-*Owordusedasthe subtrahend.o OSRC2ALO(Addressofanextendeddouble-precisionfloating-pointquad-'Owordusedastheminuend.pAUODSTAGO(Addressofaquadwordwherethe differenceisstored.LqM"OResult:O4NOVALUErY3O4.92C SUBH-Subtract H-FloatingOperands&OSUBHM(SRC1A,SRC2A,DSTA)sO Parameters:O4SRC1AIOAddressofanextended-exponentdouble-precision floating-5Opointoctawordusedasthe subtrahend.tOSRC2AIO(Addressofanextended-exponentdouble-precision floating-2Opointoctawordusedastheminuend.uAVODSTAHO(Addressofanoctawordwherethe differenceisstored.LvM"OResult:O4NOVALUEMw_2O4.93C SUBM-Subtract MultiwordOperands-OSUBMM(SIZE,SRC1A,SRC2A,DSTA)xO Parameters:O4SIZEJO Compile-time-constant-expression indicatingthesizeofthe9Ooperandsin fullwords(BLISSvalueunits).yoOSRC1AKO(AddressofanextendedmultiprecisionintegerusedastheO subtrahend.zlOSRC2AKO(AddressofanextendedmultiprecisionintegerusedastheOminuend._{A5ODSTA'O(Addressofthe difference.L|M"OResult:O4NOVALUE } 6O4.94C TESTBITx-TestandModify OperationsBO TESTBITSS(FIELD)MTestforbitset,thensetbitDO2 TESTBITSC(FIELD)MTestforbitset,thenclearbitDO TESTBITCS(FIELD)MTestforbitclear,thensetbitFOh TESTBITCC(FIELD)NTestforbitclear,thenclearbitRO TESTBITSSI(FIELD)NTestforbitset,thensetbit (interlocked)GO TESTBITCCI(FIELD)MTestforbitclear,thenclearbit (interlocked)`~ 6O Parameters:O4FIELDNOAddresswithoptionalfieldselectorwhich specifiesafieldROwhoselowbitwillbetestedfora particularstate.+ThatbitRO>willbesettothe specifiedstate.+Thesize parameteroftheVOfieldselectorisignored,andaliteralvalueoneis substituted.PO1Notethatthesearetheonlyroutinesinthemachine-specificQOsetwhichacceptanaddresswithafieldselectorthatcannot)Obe evaluatedtoanaddress.;OResult:k<A O16O#Bittestedwasinthe specifiedstate.I< O0O# Otherwise.mC,O4.95C XFC-ExtendedFunctionCallOXFCM(OPCODE)O Parameters:O4OPCODEIOLink-time-constant-expressiontobe depositedinthebyteIOwhichfollowstheXFCopcodeinthe instructionstream.LM"OResult:O4NOVALUErH M1=Some restrictionsapplytothese declarations.pV,)O 5.2 Programming!ConsiderationsLOThischapterprovides practicalhelponwritingBLISSpro-COgrams./First,usage differencesbetweenLIBRARYandFOBREQUIREfilesare considered.)Then,somecommonBLISS.O programmingerrorsare discussed.mb8&O5.3BLinkerErrorMessagesAOUTheTRUNCorTRUNCDATerrormessageis typicallyMOcausedbyamodulecompiledwiththe followingdefaultad-NOdressingmodebeinglinkedinanimagethatislargerthanO^32K:(tADDRESSING_MODE(WORD_RELATIVE) `POTheproblemcanberesolvedwithoneofthe followingproce-Odures:gr= ` 9Edit the source module to use ADDRESSING_.(MODE(LONG_RELATIVE)and recompile. ` G Rearrangethe placementoftheobjectmodulessothat@EXTERNAL referencesor referencesbetweenprogram9Ysectionsarewithin32KBoftheirtarget.A''O5.4BObscureErrorMessagesHOUObscureerrormessagesthatappearafteraprogramhasHObeenrunare typicallycausedbyaprogramwhosemainFOroutinefailstoreturnavalidVMS completioncode. )5O5.5BPosition-IndependentCode Generation?OUTheBLISS-32compileralways generates position-JO independentcode(PIC)for expressionsthatinvolverelo-MOcatable quantities.'Thismaycause surprisinglycomplexcodeJO^tobe generated.+However,itisthe programmer'srespon-KOsibilitytoensurethatPICdatahasbeen generatedwhenO necessary.<,/O5.6BAdvancedUseofBLISSMacrosMOUThissectionprovidessomeexamplesoftheadvanceduseofJOBLISSmacros.)In particular,theexamples demonstratethe"Ouseofthe following: ` # Conditional compilations `O O Iterativemacros ` >Lexical functions(suchas%QUOTEand%EXPAND) =O5.6.1B AdvantageousUseofMachine DependenciesBO4The followingexamplesshowhowmachine-independentIO constructscanbemodifiedtotake advantageofmachineO dependencies.JOAssumea high-level constructisneededtomoveafull-MOwordsequencefromasourcetoa destination;thesimplestJO5 transportableimplementationofthismightbeasfollows:tMACRO, MOVECORE(%SRC,%DST,&LENTH&)%= IBEGIN BINDT$S=(SRC)%:%VECTOR,T!$D=(DST)%:%VECTOR;A INCR%I%FROM&0%TO% (LENTH)-1&DO&$D[.I]%=&.$S[.I] END%%;LONoticethattheBINDofSRCandDSTguardsagainsttheirKO producingany extraneous side-effects.*Forexample,iftheFO5assignment-expressionintheINCRloopusedageneralLO structure referenceofthe followingform,andtheDSTorOOSRC expressionswereroutinecalls,acallwouldbeexecuted>O>everytimeapasswasmadethroughtheloop:9tVECTOR[%DST,&.I&]%=%.VECTOR[%SRC,&.I&];kNOThus,theBINDto$Dand$SensuresthatthissideeffectOoccursonlyonce.! ,O5.6.2BUsingString InstructionsMO4Themacroshowninthepreviousexampleis,however,inef-TOficientforuseinthemovingoflargeblocksofmemoryduetoNO excessive executiontimeand instructionsize;more efficientMO=codingwouldtake advantageofstring instructions supported8ObytheVAXand DECsystem10/20 hardware. [JOAsanexample,the transportableCH$MOVEfunctioncanbeNOused,with appropriate adjustments,todealwith8-bitbytesHO5ontheVAXand36-bitbytesonthe10/20asfollows:tMACRO@ WORD_PTR(A)%=&CH$PTR(%A% %BLISS36(,&0,&36)%)&%,.TkMOVECORE(SRC,DST,LENTH)%=%CH$MOVE((LENTH)*%UPVAL,WORD_PTR(SRC),B WORD_PTR(DST)&)%%;! = OOThismethodproducesfairly efficientcode;butfor DECsystemOO10/20anevenmore efficientimplementationispossibleusing@O5theBLT(Block Transfer) instructionasfollows:tMACRO"MOVECORE(SRC,DST,LENTH)= I%IF%%BLISS(BLISS36) %THENTBEGINT!BINDi$D%=&(DST);TBUILTIN%MACHOP;/TLITERAL% BLT=%O'251';!%BLT%opcodeTAREGISTERRQQQ,SQQQ=1;!%Must&not%be%AC07T[ RQQQ<18,18>%=%(SRC);!% Source-ptr&in&LH6T RQQQ<0,18>%=&($D);!% Destination%in%RH6T %IF&%LTCE(%LENTH%)!% Effective%addressTT%THEN#T!%tells%where%to%stopSQQQ&=% .RQQQ<0,18>;3MACHOP(&BLT,%RQQQ,% (LENTH)-1,%SQQQ&)T,%ELSE$tSQQQ&=%($D)%+&(LENTH);( MACHOP(BLT,%RQQQ,%-1,%SQQQ) T%FI TLEND %ELSE-TCH$MOVE((LENTH)*%UPVAL,%SRC,%DST) $ %FI%%,  NHOTheBLISS-36versionofMOVECOREisnowheavilycondi-PO tionalizedtogeneratethebestpossiblecodewhenthelengthIO5ofthememoryblockisknownatcompileorlinktime.+LOForexample,the%LTCElexicalfunctionisusedtodeter-JOmineif advantagecanbetakenofthePDP-10 effective-JO5address calculationto completelyevaluatethe expression:!t.SQQQ%+%(LENTH)&-%1  NQOHowever,ifthe expressionisnota link-time constant,itisNO necessarytocomputetheendingaddressbya combinationofBO5run-timeadditionandeffective-address computation.kAPOFurther,itshouldbenotedthatthereissomeriskinvolvedHOwiththisimplementation,inthattheBLTalwaysmovesLO5atleastoneword.*Thus,iftheLENTH parameteriszero,GOtheBLTmethodwill incorrectlymoveonewordtotheO destination.Vj2O5.6.3BDealingwith EnumerationTypesIO4Oneofthemorepowerfulfeaturesof languagessuchasWOPascalistheabilitytodefineafinitesetof elements.)ThisisNOknownasan ``enumeratedtype'',becauseyoudefinethesetJO=by exhaustivelynamingeachpossibleelementintheset.! wTOWhileBLISSisunawareofsuchtypes,itispossibletoprovide#Oanadequate simulation.o'O5.6.3.1CTheSETDataTypeLO)Setsare implementedinBLISSthroughasystemofmacros.QOAnelementofthesetisgivenasmallintegervaluebetweenLOzeroand %BPVAL-1.)Thus,setsarelimited(inthisimple-GO3 mentation)tocontainnomorethan%BPVALelementsinOtheirdomain. ROYoustoreasubsetbysettingbitsina fullword.)ForreasonsTOtobe discussedlater,thebitsinthefullwordarenumberedinKO5reverseorderfromthenormalBLISS conventions.)Thusfor/OtheVAXasetlooksasfollows: t31 05tZ++--+--+--+--+--+--+--+--+--------+--+--+--+=t|%0|%1|%2|%3|%4|%5|%6|%7|........|29|30|31|5t++--+--+--+--+--+--+--+--+--------+--+--+--+  NPOThedigitsinsidetheboxrefertoelement-numbers,whilethePOdigitsoutsidetheboxrefertothemost-significant(31)andAO5least-significantbits( 0 )ofaVAX longword.fNOThe followingtableshowssomesimplesetsandtheelementsOtheycontain:  OOSet(Hexadecimal)bContents OOb80000000 bb0O80000001b0,31OV00000002 bV30#OFF0000000,1,2,3,4,5,6,7 OA e#O5.6.3.2CCreatingaSet@O)The followingmacrodefinesan enumerationtype.tMACROENUMERATION(NAME)= >!+H !%Creates%a& PASCAL-like& ENUMERATION&type.&The% parameterF !%NAME%will&be&defined%as%a%macro% expanding%to%the9 !% comma-list%of%the% %REMAINING% parameters. ]!-  COMPILTIMETNAME%=&0; VLITERAL#TENUM_%(NAME,%REMAINING);  UNDECLARE%NAME;@ PMACRO&NAME%=%%QUOTE%%EXPAND% %REMAINING&%QUOTE%% %,5 ENUM_(V)[N]%=&N%=%V&%ASSIGN(V,V+1)&%;g +=GONotethatthe ENUMERATIONmacrois particularlyinter-POestingduetotheuseofthe%QUOTElexical function.(AsanGO5example,considertheuseofthe ENUMERATIONmacroto#OdefinethetypeTREES:%); t...6tIF%(.FOREST%AND&SUBSET)&EQL%0tZTHEN6!&No&trees&in&common%between&two%setss! LI)O5.6.3.4C MembershipinaSetLO)TheONEOFmacro efficiently determinesifanelementisaPOmemberofagivensubsetbydoinga left-shiftand examiningXOthesignbitoftheresultvalue.&Forthisreason,setsarestored,O3inreverse-numberedbitfields.D! fKOThisexamplealsodealswithmachine dependencies,astheNOBLISS-36 arithmeticshiftoperator( ^ )mustchooseeitherIO5anASHoraLSH instruction.,AnASH instructionleavesKOthesignbit unchanged.+ThisisthebehaviorwantedwhenLOright-shiftinganyvalue,butwhenleft-shifting,theBLISSPO> semanticsdemandthataLSHbe generated.&IftheshiftcountLOisunknownatcompiletime,BLISS-36mustgeneratearun-LOtimetestand conditionallyexecuteeithertheASHortheQOHLSH.Becausetheshiftswillalwaysbetotheleft,thegen-OOeratedcodeis optimizedbyforcingaLSHtobeemittedasOshownbelow.t~MACRO ONEOF(ELEMENT,SUBSET)= %IF%%BLISS(BLISS36) V%THENTBEGINTBUILTIN%LSH;'T. LSH(SUBSET,%ELEMENT)%LSS&0 TvEND %ELSE,T (((SUBSET)%^& (ELEMENT))%LSS&0) M%FI%%;bAOForexample,ontheVAX,considerthe following:;tLOCAL%TREE%:&INITIAL(&ELM%);p!%An%element tq...3tIF%ONEOF(&.TREE,% SUBSET%)tTHEN I...iBOThiscodefragmentwouldexpandtothe following:>tIF%(% (1^(31-3))&OR& (1^(31-2))% )^(.TREE)&LSS%0tPTHEN~3OThisis equivalenttothe following:0tIF% (%X'30000000'%^&(.TREE))&LSS%0tPTHEN ... QOAssumingthatTREEstillcontainsitsinitialvalueof3(for:OELM),thisis equivalenttothe following:$taIF%(%X'80000000')%LSS&0tTHEN ...! uMOThis evaluatestoTRUEand indicatesthatELMisamember(Oofthesubset{ELM,PINE}. l! BO6.1B IntroductionPOUA transportableBLISSprogramisonethatcanbecompiledtoTOexecuteonatleasttwo,and preferablyall,ofthethreemajorEOarchitectures:+PDP-10,PDP-11,andVAX.Varioussolu-PO^tionstotheproblemoftransportabilityexist,each requiringRO differentlevelsofeffort.)Variouskindsof solutionsarerec-KO ommended.'Forexample,insomecases,programtextshouldJOhbe rewritten.+However,largeportionsofprogramscanbePOwritteninsuchawaythattheywillrequireno modificationOOandyetbe functionally equivalentin differingarchitectures.ROrThelevelsof solutionsinorderof decreasing desirabilityareOasfollows: S ` DNochangetoprogramtextis needed-theprogramis$( completelytransportable. ` FParameterizationsolvesthetransportability problem-theIprogrammakesuseofsomefeaturesthathaveananalog-Yonalltheotherarchitectures. ` CParallel definitionsarerequired-eithertheprogramM1makesuseoffeaturesofan architecturethatdonothaveKanalogsacrossallotherarchitectures,or different,sep-Iarately transportableaspectsoftheprograminteractin!:nontransportableways.! WNOThegoalistomaketransportabilityassimpleas possible,MOwhichmeansthattheeffortneededin transportingprogramsNO5shouldbe minimized.)Centraltotheideas presentedhereisQOthenotionthattransportabilityismoreeasily accomplishedifJO consideredfromthe beginning.( TransportingprogramsafterDO>theyarerunningbecomesamuchmorecomplextask.WLOItis advantageoustorunparallel compilations frequently.SOItis fortunate, therefore,thatwiththerighttoolsandtech-PO5niquestransportabilityisnot difficulttoachieve.,ThefirstKO transportableprogramisthehardest.)Before undertakingaMOlarge programmingproject,youmayfinditusefultowrite6O>and transportaless ambitiousprogram.x NROThese guidelinesaretheresultofa concentratedstudyoftheLOproblems associatedwithtransportability.(NoclaimismadeMO5thatthese guidelinesare complete;however,anattempthasOObeenmadetoidentifylessobviousproblemareasandprovideO solutions."O6.2BGeneral StrategiesOOUTwoglobal strategiesare importanttothewritingoftrans-AOportableBLISS programs:' isolationand simplicity. ! O6.2.1B IsolationMO4Rememberthe followingrulewhenyouare designingorcod-TOingaprogramthatistobe transported:)Ifa constructisnot&Otransportable,isolateit.! aMOYouwillprobably encounter situationsforwhichitisde-IOsirabletousemachine-specific constructsinyourBLISSRO5program.'Insuchcases, isolatingthe constructswill facilitateMOanyfuturemovementoftheprogramtoa differentmachine.NO Generally,onlyasmall percentageoftheprogramorsystemPO>willbe sensitivetothemachineonwhichitisrunning.)ByRO isolatingthose sections,youcanmainlyconfinetheeffortin-ROvolvedin transportingtheprogramtotheseeasily identifiable,KOHmachine-specific sections.' Specifically,followtheserules:D  ` IIfmachine-specificdataaretobe allocated,placetheH( allocationinaseparatemoduleorinaREQUIREfile. ` MIfmachine-specificdataaretobe accessed,placetheac-LcessingcodeinaroutineoramacroandthenplacetheEYroutineormacroinaseparatemoduleoraREQUIREfile. `1 O1Ifamachine-specificfunctionor instructionistobeused,=isolateitbyplacingitinaREQUIREfile. `  T Ifitis impossibleor impracticaltoisolatethispartofyourFaprogramfromitsmodule,commentitheavily.)MakeitJobvioustothereaderthatthecodeisnontransportable.6  TOTheserulesare applicableinthelocalcontextofaroutineorPOmodule.*Inalargerormoreglobalcontext(for instance,inOO5thedesignofanentiresystem), isolationis implementedbyKOthe techniqueofmodularization.*By separatingthosepartsKOofthesystemthataremachineoroperating-systemdepen-SO>dentfromtherestofthesystem,thetaskof transportingthePOentiresystemis simplified.)Itbecomesamatterof rewritingROasmallsectionofthetotalsystem.)ThemajorportionoftheQOHcode(ifwrittenina transportablemanner)shouldbeeasytoJOmovetoanewmachinewithaminimumof rewriting.(TheKOBLISSlanguage facilitatesboththedesignand programmingKORofprogramsandsystemsinamodularfashion.)YoushouldLOusethisfeatureto advantagewhenwritinga transportableOsystem. sO6.2.2B SimplicityLO4Abasicconceptinwriting transportableBLISSsoftwareisNO simplicityintheuseofthe language.)BLISSwas originallyIO developedfortheimplementationofsystems software.+AsMO=aresultofthis,BLISSisoneoffew high-levelprogram-KOming languagesthatallowreadyaccesstothemachineonNOwhichtheprogramwillberunning.(YouareallowedtohaveLOGcompletecontroloverthe allocationofdata,forexample.LOUnfortunately,thesamelanguagefeaturesthatallowaccessOOto underlyingfeaturesofthehardwarearetheveryfeaturesROQthatleadtonontransportablecode.'InasystemintendedtobeNOtransportable,thesefeaturesshouldbeusedonlywherenec-OOessarytomeetaspecific functional, performance,oreconomyOZ objective.! khOOItisoftenthecasethatBLISSlanguagefeaturesthatmakeFOaprogramnontransportablealsomaketheprogrammoreIO5complex.-Reducingthe complexityofdata allocation,forOOexample,resultsina transportablesubsetoftheBLISSlan-ROguage.'This reductionof complexityisoneofthebasicthemesPO>thatrunsthroughthese guidelines.*Ineffect,thewritingofKO transportableprogramsisasimplertaskbecausethenum-OOberofoptions availablehasbeenreduced.* SimplicityintheOOHwritingeffortisoneofthereasonsforthe developmentofLO higher-level languageslikeBLISS.TheuseofthedefaultsNOinBLISSwillresultinprogramsthataremuchmoreeasilyOR transported.\6)O6.3BToolsOOUThissectionontoolspresentsvariouslanguagefeaturesthatJOprovideameansforwriting transportable programs.)TheseLOfeaturesareeithernormalfeaturesofBLISSorhavebeenKO^designedfortransportabilityorsoftware engineeringuses.AOThetools describedherewillbeused throughout-Section6.4Oaswell.*-z}?)gO6.3.1BLiteralsIO4Literalsprovideameansfor associatinganamewithaGO compile-timeconstant expression.,Thissection considersKOsome predeclaredorbuilt-inliteralsthataidinwritingNO= transportable programs.)In addition,it discusses restrictions%Oon user-defined literals.! d(O6.3.1.1C PredeclaredLiteralsMO)Oneofthekey techniquesinwriting transportableprogramsLOisparameterization.'LiteralsareaprimaryparameterizationNOtool.'TheBLISSlanguagehasasetof predeclared,machine-SO3specificliteralsthatcanbeuseful.'Theseliterals parameterizeNOcertain architecturalvaluesofthethree machines.(Theval-NOuesoftheliteralsare dependentonthemachineforwhichIO<theprogramis currentlybeing compiled..HerearetheirOnamesandvalues:> W| OOLiteralO+Name Description!+DEC10/20BVAXNPDP-11 OF3O%BPUNITCBitsper addressableunit36C88,O)%BPADDR3Bitsperaddressvalue )18C)3216)O%BPVALcBitsperBLISSvalue 36C3216*O%UPVALXUnitsperBLISSvalue 1C42 O8NNOThenames beginningwithapercentsign( % )areliteralKOnamesthatcanbeusedwithout declaration.,Theseliteral6O5namesareused throughoutthischapter.  LOBitspervalueisthemaximumnumberofbitsinaBLISSUOvalue.(BitsperunitisthenumberofbitsinthesmallestunitPO5ofstoragethatcanhaveanaddress.*BitsperaddressrefersLOtothemaximumnumberofbitsanaddressvaluecanhave.GOUnitspervalueisthequotient%BPVAL/%BPUNIT.ItisKO>themaximumnumberof addressableunits associatedwithaOvalue.! SOYoucanderiveotherusefulvaluesfromthesebuilt-in literals.OForexample:taLITERAL&  HALF_VALUE%=%%BPVAL%/%2;pROThisdefinesthenumberofbitsinahalfword(halfalong-OwordontheVAX).! )O6.3.1.2C User-DefinedLiteralsPO)Strictly speaking,aliteralisnota self-definingterm.+YouQOarriveatthevalueand restrictions associatedwithaliteralMOby assigningcertain semanticstoitssourceprogramrepre-TO3 sentation.*Itis convenienttodefinethevalueofaliteralasQOafunctionofthecharacteristicsofa particular architecture,HOwhichmeansthattherearecertain architecturaldepen-SO<denciesinherentintheuseof literals.*BecausethesizeofaOOBLISSvalue determinesthevalueandtherepresentationofaGOliteral,therearesometransportabilityconsiderations.'HOBLISSvalue(machineword)sizesare differentoneachPOofthethree machines.+OnVAX,thesizeis32bits;ontheMO5 DECsystem10/20systems,itis36;andonthePDP-11,theOvalueis16.E NOTherearetwotypesofBLISS literals:*numericliteralsandQOstring literals.(Thevaluesofnumericliteralsare constrainedPO5bythemachinewordsize.)Therangesofvaluesforasigned,Onumber( i )areasfollows:7  OVAX -(2 ** Z31) 0 qi  (2 **R31)-1O]DECsystem-10/20U-(2 g** Z]35) 0] q]i ] ](2 g**R]35)-1OPDP-11 -(2 ** Z15) 0 qi  (2 **R15)-1 OPAll P-(2 Z**ZP(%BPVAL- 1)) 0P qPi P P(2 Z**RP (%BPVAL-1))-1O %HOAnumericliteral(%C'single-character')hasbeenimple-NOmented.)ItsstoredvalueistheASCIIcode correspondingtoSO5the characterinquotes.(Itisright-justifiedinaBLISSvalueNO(wordor longword).(Amorethorough discussionofitsusageOcanbefoundinSection6.4.3.(Therearetwowaysofus-SO>ingstring literals:'asintegervaluesandas characterstrings.POWhenstringliteralsareusedasvalues,theyarenottrans-NO portable.*Thisarisesoutoftherepresentational differencesPOHandfrom differingwordsizes.)The followingtable illustratesPOthese potential differencesforan%ASCIItypestringliteral:*?b)*  O KVAX!DECsystem-10/20PDP-11 OObMaximumnumberofO characters Kb4 b5 b2@O) Character placementkrighttoleftZlefttoright)righttowleft O TOThistypeofstring-literalusageandalsoitsuseasacharac-)Oterstringare discussedinSection6.4.3.*?bpVF6O6.3.2BMacrosand Conditional CompilationKO4BLISSmacroscanbean essentialtoolinthe developmentIOof transportable programs.*Becausetheyevaluate(expand)POduring compilation,itispossibletousemacrostotailora,O=programtoaspecificmachine.! 3OAgoodexamplecanbefoundintheySection6.4.5.1,whereHOtwomacrosare developedwhose functionsare completelyFO5transportable.,Themacroscan determinethenumberofJO addressableunitsneededforavectorof elements,whereSOtheelementsizeis specifiedintermsofbits.)TherearealsoEO> predefinedmachineconditionalizationmacros available.OO Dependingonwhichcompilerisbeingrun,youcanusetheseJOmacrostoselect declarationsor expressionsforcompila-SOHtion.'Therearethreesetsof definitions,each containingthreeOmacro definitions.*yF?FOThe definitionsfortheBLISS-32setareasfollows:tMACRO P %BLISS16[]%=%%&,  %BLISS36[]%=%%&,)  %BLISS32[]%=% %REMAINING&%%;p ! FMOThereare analogous definitionsfortheother machines.(TheQOneteffectisthatintheBLISS-32 compiler,the argumentstoIO5%BLISS16and%BLISS36will disappear,while argumentstoPO%BLISS32willbereplacedbythetextgiveninthe parameterOlist.K ! ]!TOAveryexplicitwayof tailoringaprogramtoaspecificarchi-NOtectureusesthe%BLISSlexicalfunctionin conjunctionwithJO5the conditional compilationfacilityinBLISS.The%BLISSJOlexicalfunctiontakeseitherBLISS36,BLISS32orBLISS16MOasa parameter,andreturns1ifthe parameter correspondsJO>tothecompiler currently executing,and0 otherwise.-InLOthe followingexample,INSQUEisan executablefunctionin8O BLISS-32,butisaroutinefor BLISS-36:tt%IF&%BLISS(BLISS32)t%THEN BUILTINLINSQUE;t%ELSE %IF%%BLISS(BLISS36) $%THEN lFORWARD%ROUTINEINSQUE; %FI tD%FI%  !O6.3.3BModuleSwitchesNO4Amoduleswitchanda correspondingspecialswitcharepro-NOvidedtoaidinthewritingof transportable programs.*This>Oswitch, LANGUAGE,isprovidedfortworeasons: !  ` MToindicatetheintendedtransportabilitygoalsofamodule `O FOToprovide diagnosticcheckingoftheuseofcertainlanguagefeatures OOUsingthisswitch,youcan thereforeindicatethetargetar-LO chitectures(environments)forwhichaprogramis intended. NLOTransportabilitycheckingconsistsofthecompiler determin-MOingwhether,inthemodulebeing compiled,certainlanguageJO5featuresappearthatfallintoeitheroftwo categories:Er ` DFeaturesthatarenotcommonly supportedacrossthe((intendedtarget environments ` EFeaturesthatmostoftenprovetobe troublesomeinC transportingaprogramfromanyone environmenttoYanotherz!P'OThesyntaxisasfollows:)tLANGUAGE%(language-name%,...)bBOwhere language-nameisany combinationofBLISS36, OBLISS16,orBLISS32.iY+OTwootherformsare possible:tLANGUAGE(COMMON)tP LANGUAGE() WQOIfnoLANGUAGEswitchis specified,thedefaultisthesingleJOlanguagename correspondingtothecompilerusedfortheKO5 compilation,andnotransportabilitycheckingis performed.KOIfmorethanone language-nameis specified,thecompilerIOassumesthattheprogramisintendedtorunundereach&O> corresponding architecture.NNOIfnolanguagenameis specified,notransportabilitycheck-JOingwillbe performed.*A specificationofCOMMONisthe=O5 equivalentofthe specificationofallthree.! JOEachcompilerwillgiveawarning diagnosticifitsownNO language-nameisnotincludedinthelistoflanguage-names.s IPOWithinthescopeofalanguageswitch,eachcompilergivesaJOwarning diagnosticforanynontransportableor problematicPO5language constructrelativetothe specifiedsetof languages.MOThischapter discussesmostofthe constructsthatwillbeOchecked.NMOTheprecisesetoflanguage constructsthataresubjecttot9!%Full&Transportability%Checking%is%in%effect. t!-- ... 2... z...tBEGIN t+!+Cts!%BLISS36&no&longer%in%effect:& BLISS--16/32%Subset:t!%checking%to%be% performed%in%this%block. t!--tKSWITCHES&LANGUAGE(BLISS16,% BLISS32); ... #... j...=Within%this%block%(that%is,%within&the%scope?of%the%SWITCHES% declaration)&a%relaxed%form&of:dfull&transportability%checking%is% performed.;(This%takes% advantage%of%the&greater%degree;of% commonality%that&exists%between& BLISS--161;and% BLISS--32&target%architectures.)>The% compilation%of%this%section&of&code%by%a> BLISS--36%compiler%will%result%in%a% disgnostic4 warning.  ...  ... . ...t END; t !+calledalibraryfile;libraryfilesare processedbyacompilerGOwhenit encountersaLIBRARY declaration.'Forexample:tLIBRARY d 'IOPACK';$ROEachcompilercheckstoseethatthelibraryfileitisusingOOwasproducedbyitselfinapreviousrun.,Thus,tobuildaNO5 transportablelibraryfromasingle transportablesource,youJOmustbuilduniqueLIBRARYfilesforeach architectureofFO interest,usingthe appropriate compilersof interest.%! aOOForexample,letusassumethatthefile SYSDCL.BLIcontainsNOasetof transportable declarationscommontoan applicationKO5thatistorunona DECSYSTEM-20andaVAX.Toprecom-ROpileitrequiresthatitberunontheBLISS-32compilerwithIOthe/LIBRARYswitchandtheBLISS-36compilerusingtheOO>/LIBRARYswitch.'TheobjectfileproducedbythecompilerisXOthelibraryfile,andifno extensionisgivenforitinthecom-QOmandline,adefault extensionisused(forexample,.L32andOH.L36respectively).& aO6.3.6BRoutinesQO4Thekeytotransportabilityistheabilitytoidentifyanab-PO stractionthatcanexistinseveral environments.(YoudothisMObynamingthe abstractionand describingitsexternalchar-MO= acteristicsinawaythatpermitsimplementationinanyofJOthe environments.(The abstractioncanthenbe implementedJO separatelyineach environment.*Theclosed subroutinehasJOGlongbeenregardedasthe principal abstraction mechanismGOin programming languages.)WithBLISS,other abstractionKO mechanismsarealso available,suchas structures,macros,UOQ literals,REQUIREfiles,andsoon,buttheroutinecanstillbeHOeasilyusedasatransportability abstraction mechanism.'! ~MOFor instance,when designingasystemof transportablemod-KOuleswhichusestheconceptoffloating-pointnumbersandOO5 associated operations,youwillneedtoperformfloating-pointKO arithmetic.-Thequestion naturallyarisesastotheenvi-IOronmentinwhichthe arithmeticshouldbedone.-IftheQO>floating-point arithmeticresidesentirelyina well-definedsetNOof routines,andno knowledgeofthevariousrepresentationsNOoffloating-pointnumbersisusedexceptthroughthesewell-QOHdefined interface routines,thenitbecomespossibletoperformLO``cross-arithmetic'',whichis important,for instance,whenPOwritingcross-compilers.'Eveniftheabilitytoperformcross-ROR arithmeticisnotdesired, isolatingfloating-point operationsinOOroutinesmaybeagoodideabecausetheseroutinescanthenSObereusedmoreeasilyinanotherproject.(AlittlethoughtwillQO[indicatethatthefloating-pointroutines themselveshavetobeLO transportableiftheyaregoingtoperformcross-arithmeticNO (becausethesystemunder constructionistransportable),butOOeneednotbe transportableifcross-arithmeticisnotagoal.\(! 2MOThe principal objectiontousingroutinesasan abstractionQO mechanismisthatthecostofcallinga procedureissignifi-MO5cant,andthatcostisstrictlyprogram overhead.( ComposingIOroutine abstractionsproducesserious performancedegrada-TOtions.'Forthisreason,youshouldnotattempttousearoutineHO>asatransportability mechanismwhenasmallamountofQOeffortis sufficientforthewritingofasingle transportableOmodule.}f)! w<@O6.4B TechniquesforWriting TransportableProgramsKOUThissectionon techniquesshowsyouhowtowritetrans-JOportable programs.+Thesectionis organizedin dictionaryNOformbyBLISS constructorconcept.'Each subsectioncontainsO^the following:v*L ` 8A discussionofthe constructorconcept `O COTransportabilityproblemsthatitsusemayengender ` HSpecific guidelinesand restrictionsontheuseofthe ' constructorconcept ` = Examples-both transportableandnontransportable+! vUOInallcases,theexamplesattempttousethetools describedin!Otheprevioussection.,! %O6.4.1B AllocationofDataSO4Thissectiondealswiththe allocationofdatainaBLISSpro-LOgram.,Inthissection, charactersequence(string)dataorNOthe formationofaddressdataisnot discussed.*Thesetypes&O=ofdataare discussedin=Section6.4.2 =and"=Section6.4.3.=ThisOOsection describesthe allocationofscalardata(forexample,PO counters, integers, pointers, addresses,andsoon.)(Apresen-ROGtationofmorecomplexformsofdatacanbefoundinSectionsO6.4.4 and6.4.5.*,?G*,"?b*,Ob?t*,b?-xKOThefirst discussionconcernstransportabilityproblemsen-JO countereddueto differingmachinearchitectures.,ThisisMO5followedbya presentationontheBLISSallocation-unitat-POtribute,andthena discussionofotherBLISSdata attributesFOyoumustconsiderwhenwriting transportable programs.~. LT"O6.4.1.1CProblemOriginDO)The allocationofdata(throughOWN,LOCAL,GLOBAL,QOandother declarations)tendstobeoneofthemost sensitiveNOareasofaBLISSprogramintermsoftransportability.)ThisOO3problemof transportingdataariseschieflyfromtwosources:/ho ` %Themachine architectures `O 4OThe flexibilityoftheBLISSlanguage 0 NLOIn consideringwritingaBLISSprogramfor transportingtoNOanothermachine,youwillbe confrontedwiththeproblemofIO5 allocatingdataonatleasttwo differentarchitectures.81KOAlthough differingwordsizeshavealreadybeen discussed,MOtherearefurther differencestobe considered.)OnVAXar-KO5 chitecture,forexample,datamaybe typicallyfetchedinTO longwords(32bits),inwords(16bits),andinbytes(8bits);MOwhileonthePDP-11,bothwordsandbytesmaybefetched;EO>andontheDECsystem-10/20only18-bit halfwordsandEO36-bitwordscanbefetchedwithoutabytepointer.2 NKOWhat decisionsmustyoumakeinthe transportablealloca-OOtionofdata?(Needyoube concernedwithhowmanybitsare#O5goingtobe allocated?3 NPOThese questionscanbefurther complicatedbytheotherchiefJOsourceofdatatransportabilityproblems-namely,theBLISSO5languageitself.u4 KOOBLISSisunlikemanyother higher-level languagesinthatitMOallowsreadyaccesstomachine-specificcontrol, particularlyPO5instorage allocation.'Thishelpsyouwrite efficientmachine-LOspecific software.)YouhavemuchmorecontroloverexactlyNOhowmanybitsofdatayouwilluse.+ThisfeatureofBLISSJO>can,however, complicatethe decisionsyoumustmakere-OOgardingtransportability.'Forexample,doyouallocatescalars,Obybytes,words,or longwords?5g.O6.4.1.2C Transportable DeclarationsMO)Considerthe followingsimpleexampleofadata declarationOin BLISS-32:tLOCAL N PAGE_COUNTER:%BYTE;N!%Page&counter6 aQOOnebyte(eightbits)is allocatedforavariablenamedPAGE_IOCOUNTER.Nomatterwhatthe intentionwasin requestingQO5onlyonebyteofstorage,this declarationisnontransportable.POTheconceptofBYTE(inthiscontext)doesnotexistontheLODECsystem-10/20.(Infact,inBLISS-36theuseofthewordIO>BYTEresultsinanerrormessage.+ Moreover,becausetheWOstorageis allocatedonthestackorina register,thereisevenROless motivationtomakeitabyteduetothefrequentuseofOHthese locations.7NOSupposethis declarationhadbeen originallywrittenasfol-Olows:taLOCAL  PAGE_COUNTER;!%Page&counterE8 LOThiscouldhavebeen transportedtoanyofthethreema-QOchines.(The functionality(inthiscase,storingthenumberofSO5pages)hasnotbeenlost.'Bynot specifyingany allocationunitMOintheLOCAL declaration,theBLISScompilerisallowedtoQOallocatestoragebydefault.*InallBLISSdialectsthedefaultRO>sizeforan allocationunitconsistsof%BPVALbits.(Thus,the;Ofirst transportable guidelineisasfollows:9Am ` LDonotusetheallocation-unit attributeinascalardata( declaration.7: QOInthecaseofscalardata,usingthedefault allocationunitNO sometimesresultsinthe allocationofmorestoragethanisOO5strictly necessary.*Thisgaininprogramdatasize(whichisKOsmallinmost instances)mustbeweighedagainstthede-POcreaseinfetchingtimefor particularscalarvalues,andtheJO> knowledgethatbecauseofthedefault alignmentrulesno:Ostoragesavingsmay,infact,be realized.;tNOIntheBLISS language,thedefaultsizeof%BPVALbitswasOOchosen(amongotherreasons)becausethisisthelargestandNO5most efficientlyaccessedunitofdatafora particularma-OOchine.)Inotherwords,savingbitsdoesnot necessarilymean:Oamore efficientprogramhasbeenwritten.<NROThereareother attributesbesidesthe allocationunitthat,ifKOused,maypresenttransportability problems.*In particular,JO5when allocatingdata,adheretothe following guidelines:h=> ` 3Donotusethe following attributes:i>?YSIGNEDY(UNSIGNEDYALIGNYWEAK?! NPOInotherwords,beforewritinga declaration,considerwhetherOOyouneedtospecifyanydata attributesotherthan structureO5 attributes.@ GOThe extension attribute(SIGNEDand UNSIGNED) specifiesTOwhetherthesignbitistobeextendedinafetchofascalarSO5(or equivalently,whetherornottheleftmostbitistobein-UO terpretedasasignbit).'Inanycase,nosign extensioncanbeCO performedifthe allocationunitisnot specified.A _KOThe alignment attribute(ALIGN) specifiesthekindofad-SOdressboundaryatwhichadatasegmentistostart.)ItisnotKO5 supportedinBLISS-36or BLISS-16;hence,itis nontrans-MO portable.(Suitabledefault alignmentsare available dependent)Oonthesizeofthescalar.BNFOTheweak attribute(WEAK)isa VMS-specific attributeNOandisnot supportedbyBLISS-36or BLISS-16; therefore,it:O5cannotbeusedina transportableprogram.C]MOThese guidelinesare relativelysimpleandcanrelieveyourMOconcernsastohowthecompilerwillactuallyallocatetheOO5 program'sdata.+ThereisoftenverylittlereasontospecifyOOan allocationunitorany attributes.*Thedefaultvaluesare%Oalmostalways sufficient.^D! 4SOTherewill undoubtedlybecaseswhereitis impossibletoavoidSOusingoneormoreoftheabove attributes.)Infact,itmaybePO5 desirabletotake advantageofaspecificmachinefeature.(In>Osuchcases,adheretothe following guideline:E A{ ` JConditionalizeorheavilycommenttheuseof declarations&(thatarenontransportable.KF !POThisisan``escape-hatch'' guidelinethatmustbeusedspar-JOinglyandonlywhere justified;frequentusewillmerelyOO5producemorecode,whichwillhavetobe rewrittenwhenthe8Oprogamis transportedtoanothermachine.G!  O6.4.2BData AddressesNO4Thissection discussesaddressvaluesandaddressvaluecal-NO culations.(Thesectionfirstpresentsproblems resultingfromNOusinganaddressoranaddress calculationasavalue,andPO=thenoffers transportable solutionstosomeofthese problems.SOThisisfollowedbya discussionoftheneedforaddressformsJOofBLISS relational operatorsandcontrol expressionsandLOGhowandwhentousethem.(Finally,some importantdiffer-KOencesin interpretingBLISS-10andBLISS-36addressvaluesOare discussed.H 8O6.4.2.1C AddressesandAddress CalculationsNO)ThevalueofanundottedvariablenameinBLISSisanad-ROdress.*Inmostcases,thisaddressvalueisusedonlyfortheJOsimplefetchingandstoringofdata.,WhenaddressvaluesIO3areusedforother purposes,wemustbe concernedwithOOthe portabilityofanaddressoranaddress calculation.*TheHOterm ``address calculation''meansany arithmeticopera-KO<tions performedonaddressvalues.+anaddress calculation.JOTheterm ``address calculation''meansany arithmeticop-IOerations performedonaddressvalues.*TheprimaryreasonTOFforthisconcernisthe differentsizes(inbits)of addressableKOunits, addresses,andBLISSvalues(machinewords)ontheHOthree machines.,For convenienceinwriting transportableMOP programs,thesesizevalueshavebeen parameterizedandareROnow predeclared literals.(Atableoftheirvaluescanbefound OinSection6.3.1.*H?|I +RROToseehowthesesize differencescanhaveaneffectonwrit-FOing transportable programs,consideracommontypeofJO5address expressionthatcomputesanaddressvaluefromaNObase(apointeroranaddress)andanoffset.&Forexample:"...%base%+&index&...JFONowconsiderthe followingBLISS assignment expression6Ousingthisformofaddress calculation: taOWN ELEMENT_2; t. t9. t..t ELEMENT_2&=%.(INPUT_RECORD%+%1);wK! MROTheintentofthecodeistoaccessthecontentsofthesec-FOondvalueinthedatasegmentnamed INPUT_RECORDandKO5toplacethatvalueinanareapointedtoby ELEMENT_2.ROHowever,aswillbeshown,theeffectofthiscodediffersonOeachmachine.cL! 9EOAdding1toanaddress(inthiscase, INPUT_RECORD)POcomputestheaddressofthenext addressableunitonthema-GO5chine.,ForBLISS-32and BLISS-16,thenext addressableUOunitistheaddressofthenextbyte(8bits),whileforBLISS-QO36thenext addressableunitistheaddressofthenextwordRO>(36bits).'Becausethe addressableunitsandthe resultantval-POuesdiffer,thecodesegmentdoesnotreflecta transportableO expression.fM<sons.V!|OOForexample,considerthis relationaltestofaddressvalues:-t...& ADDRESS_1%LSS% ADDRESS_2&...eW+;OOThistestrequirestwo differentinterpretations.(Thisexpres-IOsionwouldevaluate correctlyonDECsystem-10/20systems.JO5ButonVAXandPDP-11 machines,thetestwouldhaveto+Ohavebeenwrittenasfollows:.t...& ADDRESS_1%LSSU& ADDRESS_2%...XuOOAnothertypeof relational operator,designed specificallyforNOaddressvalues,isneeded.*Such operatorsexistandarere-LO5ferredtoasaddress relational operators.) BLISS-36,BLISS-NO16,andBLISS-32haveafullset(forexample,LSSA,EQLA,>Oandsoon),whichsupportaddress comparisons.,Y! KOInBLISS-16and BLISS-32,address relational operatorsareIO equivalenttounsigned relational operators.,In BLISS-36,LO5address relational operatorsare equivalenttosignedrela-QOtional operators.'However,forall practical purposes,youneedKOnotbe concernedwiththis,because``equivalencing''per-JO>mitsaddress comparisonstobe performed correctlyacrossLOarchitectures.-In addition,thereareaddressformsofthe%=&.X<3,7>;` zOOThemeaningofthis expressionis unchanged,butthefollow-'Oing expressionisinvalid:taY%=&X<3,7>;`a! 6JO Moreover,itisstrongly recommendedthatfield selectorsPOneverappearoutsideofa structure declaration,becauseposi-QO5tionandsizeareapttobehighlymachine dependent.'Amore2Othorough discussioncanbefoundinjSection6.4.5.*ajP?b! +O6.4.3BData Character SequencesQO4Thissection discussestheuseof character sequences (strings)OOinBLISS programs.' Historically,therehasbeenno consistentMOmethodfor transportablydealingwithstringsandthefunc-OO=tions operatinguponthem.&Adhocstring functionshavebeenNOtherule,havingbeen implementedby individualsorprojectsQOtosuittheir particularneeds.)ThissectionbeginsbylookingNOGatquotedstringsintwo different contexts.*TransportabilityKOproblems associatedwithquotedstringsand guidelinesfor+Otheirusearealso described.mcCCOQuotedstringsareusedintwo different contexts:dhV `  Asvalues (integers) `O  OAs characterstringse `=O6.4.3.1CQuotedStringsUsedasNumericValuesLO)Usingquotedstringsasvalues(in assignmentsandcompar-OOisons) illustratestheproblemof differingrepresentationsonLO differingarchitectures.)Forexample,considerthe followingO3code sequence: tOWN*CHAR_1;!%To%hold&a%literaltGCHAR_1&=%'ONE';f! vROAnaturalinterpretationforBLISS-32touseisthatonelong-LOwordwouldbe allocatedandthethree characterswouldbeKO5assignedto increasingbyte addresseswithinthe longword.JOInmemory,thevalueofCHAR_1wouldhavethe followingOrepresentation:*tkCHAR_1:p/%00%E%N&O%/%(32)tg JKOBLISS-16wouldnotallowthis assignmentbecauseonlytwoKOASCII charactersareallowedperstringliteral.,Thisre-LO5 strictionarisesfromthefactthatBLISS-16workswithaLOmaximumof16-bitvalues,andthree8-bitASCII charactersOrequire24bits.kh +AKOOntheDECsystem-10/20awordwouldbe allocatedandtheOO characterswouldbe positionedstartingatthe high-orderendQO5oftheword.(Thusthestringliteralwouldhavethe following%Orepresentationinmemory:1tCHAR_1:p/%O%N&E%00%00%0%/&(36)Ri+(KOEveniftheDECsystem-10/20stringliteralhadbeenrightSO justifiedintheword,itstillwouldnotequaltheVAXrepre-QO5 sentation numerically.(So,infact,the followingwouldnotbeOtransportable:!tWRITE_INTEGER('ABC'%);j NOThisisbecause }' ABC R'6isinvalidsyntaxin BLISS-16,hastheJOvalue -33543847936in BLISS-36,andthevalue4276803inO5 BLISS-32.k oOOBasedontheseproblemswithrepresentation,thefirstguide- Olineisasfollows:slI ` >Donotusestringliteralsasnumericvalues.mMOInthosecaseswhereitis necessarytoperformanumericKO operation(forexample,a comparison)witha characterasMO5an argument,youmustusethe%Cformofnumericliteral.OOThisliteraltakesone characterasitsargumentandreturnsROasavaluetheintegerindexinthe collatingsequenceoftheEO>ASCII characterset,sothatthe followingistrue:!t%C'B'%=%%X'42'%=%66ln BMOThe%Cnotationwas introducedto standardizethe interpre-NOtationofaquoted characteracrossallpossible ASCII-basedCO5 environments..%C'quoted-character'canbethoughtofMOasright-adjustingthe characterinabitstring containingO%BPVALbits.,o@O6.4.3.2CQuotedStringsUsedas CharacterStringsOO)The necessityofusingmorethanone characterinaliteralROleadstotheother situationinwhichquotedstringsareused:!Oas characterstrings.Tp*NOTo facilitatethe allocation, comparison,and manipulationofIO character sequences,abuilt-incharacter-handlingpackageNO5hasbeen constructedaspartoftheBLISS language.*IthasEObeen implementedin BLISS-32, BLISS-36,and BLISS-16.q NOThesebuilt-in functionsprovideacompleteandpowerfulsetQOof operationson characters.'Thenext guidelineisasfollows:.r  ` FUsethebuilt-incharacter-handlingpackagewhenallo-J(catingand operatingon character sequences.)ThisistheLonlywayyoucan guaranteethe portabilityofstringsandstring operations.s ROAmoredetailed descriptionofthese functionscanbefoundin Othe, BLISSLanguage ReferenceManual .t +O6.4.4BPLITsandInitializationQO4Thissectionis primarily concernedwiththeusesofthePLITFO(PointertoLiteral)andtheUPLIT (UncountedPointerOOto Literal).+First,thereisgeneral discussionofPLITsandMO=thecontextsinwhichtheyoftenappear.*A presentationofJOhowscalarPLITitemsshouldbeusedfollows.,Next,theOOproblemsinvolvedinusingstringliteralsinPLITsandsug-MOGgested guidelinesfortheiruseare presented.,Finally,theROuseofPLITsto initializedatasegmentsis illustratedbythe?O developmentofa transportabletableofvalues.Yu U/%O6.4.4.1CPLITsinGeneralGO)BecauseBLISSvaluesareamaximumofamachinewordROinlength,anyliteralthatrequiresmorethanawordforitsIOvalueneedsaseparate mechanism,andthat mechanismisMO3thePLIT.Hence,PLITsareameansfordefining referencesOOto constantsthatarelongerthanoneword.)PLITsareoftenROusedto initializedatasegments(suchastables)andareused:O<todefinethe argumentsforroutinecalls.vNGOPLITs themselvesaretransportable;however,theircon-KOstituentelementsandtheirmachinerepresentationarenot O5alwaystransportable.Mw #LOAPLITconsistsofoneormorevalues(PLITitems).*PLITPOitemscanbestrings,numeric constants,address constants,orPO5any combinationoftheselastthree, providingthatthevalue7Oofeachisknownbefore executiontime.x {&O6.4.4.2CScalarPLITItemsIO)Thefirsttransportabilityproblemthatmightbeencoun-LOteredwiththeuseofPLITsisin specifyingscalarPLITOOitems.)Aswithanyother declarationofscalaritems(point-WO3ers, integers, addresses,andsoon)itispossibletodefinethemJOwithanallocation-unit attribute.+Forexample,inBLISS-HO32,machine-specificsizes(suchasBYTEandLONG)canNO<be specified.(Thus,the followingexampleisnontransportableJOand,infact,willnotcompileonBLISS-36or BLISS-16:tBIND4 bQ1&=%PLIT%BYTE(1,&2,&3,&LONG%(-4));oyEEOThislastexampleprovidesthefirstPLIT guideline:zAr ` NDonotuse allocationunitsinthe specificationofaPLIT(orPLITitem.{ QOThislast guidelineis necessarybecauseofthe differencesinTOthesizesofwordsonthethree machines,afeatureofthear-PO5 chitectures.(A discussionoftheroleofmachine architecturesAOinthetransportabilityofdatacanbefoundinSection6.4.1.1OFurther guidelinesare presentedin`Section6.4.4.5.*{P?,*{`?6|!  /O6.4.4.3CStringLiteralPLITItemsQO)Thenext guidelineisbasedontherepresentationofPLITsinLOmemory.' Specificallytheproblemis encounteredwhenscalar@OandstringPLITitemsappearinthesamePLIT.&}GOThe difficultyarises primarilyfromtherepresentationGOof charactersonthe different machines./Amorethor-IO5ough discussionof characterrepresentationcanbefound OinSection6.4.3.*}P?b~! scPOUsecautionwhenyouusestringsasitemsinPLITs.'Forex-NOample,itmaybe necessarytospecifyaPLITthatconsistsMO5oftwo elements:*a 5-characterstringandanaddressofadressoffset.'Forexample,thesecondelement(theaddress)isOOaccessedbythe following expressionintheBLISS-36version,>ObutnotintheBLISS-32orBLISS-16 versions: tt...&CONABC%+&1%... !qQOFortheBLISS-32version,theaccess expressionisasfollows: t...&CONABC%+&8%...!_?OFor BLISS-16,itwouldhavetobeasfollows: t...&CONABC%+&6%...4 LOTakingadata segment'sbaseaddressandaddingtoitanTOoffset(asinthiscase)is particularly sensitiveto transporta-QO5bility.+A discussionontheuseof addressescanbefoundinOSection6.4.2.*OP?G MOThissectionon addressessuggeststheuseoftheliteral,GO%UPVAL,toensuresomedegreeoftransportability..ItsOO5valueisthenumberof addressableunitsperBLISSvalueorNOmachineword.(Asalready discussed,in BLISS-32,theliteralWOequals4;in BLISS-16,itis2;andin BLISS-36,itsvalueis1.V +,RO Multiplyinganoffsetbythisvaluecan,insomecases,ensureROanaddress calculationthatwillbetransportable.(SotoaccessMO5thesecondelementintheabovePLIT,youwouldwritetheO following:'t...&CONABC%+&1*%UPVAL&...~! TNOButthiswillnotworkfortheVAXrepresentation.*Anoff-SOsetvalueof8isneededbecausethestringoccupiestwoBLISSRO5values.(The situationissimilarforthe11version,wherethePOstringoccupies3wordsandwouldneedaoffsetvalueof6,Onot2.! WLOTheproblemwiththis particularexample(and,ingeneral,YOwithstringsinPLITs)isnotinusingastringliteralbutinitsLO5positionwithinthePLIT.Becausethenumberof charactersROthatwillfitinaBLISSvaluediffersonallthree machines,SOthe placementofastringinaPLITwillveryoftenresultinEO> different displacementsforthe remainingPLITitems.rHHOThereisa relativelysimplesolutiontothisproblem:A ` HInaPLITtherecanonlybeamaximumofonestringO(literal,andthatliteralmustbethelastiteminaPLIT. NO Followingthis guideline,theexampleshouldhavebeenwrit-Otenasfollows:taBIND. CONABC%=&PLIT(ABC_ROUT,& 'ABCDE');KOThus,the following expressionwouldhaveresultedinthePOaddressofthesecondelementinthePLIT(inthiscasetheO5string).'t...&CONABC%+&1*%UPVAL&...*O6.4.4.4CInitializationExamplePO)As mentionedinthe beginningofthissection,PLITsareof-POtenusedto initializedatasegmentssuchastables.)YoucanJO initializeadatasegment allocatedbyanOWNorGLOBALHO3 declarationbyusingtheINITIAL attribute.+TheINITIALTO attribute specifiestheinitialvaluesandconsistsofalistofOPLITitems. |OOThe followingexampleusesatableofemployeedatatoshowPOhowto initializedataina transportableway.( InformationonLO5eachemployeeconsistsofthree elements:'anemployeenum-JOber,acostcenternumberandthe employee'sname.+(TheGO employee'snameisafixedlength, 5-characterfield.)z|ROForexample,alineofthetablecontainsthe followinginfor-Omation:ta345201SMITH zSO ConvertingthislineintoalistofPLITitemsthatconformtoCOthis section's guidelinesresultsinthe following:ta(345,%201,%'SMITH'){NONoticethatno allocationunitswere specifiedandthattheMO characterstringwas specifiedlast.-ThislineisnowusedPO5to initializeasmalltableofonlyoneline..ThetablehasGOthebuilt-in BLOCKVECTOR structure attribute.*Thetable'O declarationisasfollows: tkOWN TABLE:tBLOCKVECTOR[1,3]tBINITIAL(t345,t201,t'SMITH' tb);8! OOThis definitionworkswellin BLISS-36.'Thatis,threewordsSOare allocatedforTABLE.Thefirstwordis initializedwiththeMO5employeenumber;thesecondwordwiththecostcenter;andNOthethirdwiththename.)However,the declarationisincor-NOrectforBLISS-32orBLISS-16becausenotenoughstorageisRO> allocatedforalloftheinitialvalues.(BLISS-32requiresfour1O longwordsand BLISS-16,fivewords.&! KOTosolvethisproblem,you determinethenumberofBLISSJOvaluesthatareneededforthe characterstringoneach@O5machine.-Youthenusethe CH$ALLOCATIONfunctionKOfromthe characterhandlingpackagetoreturnthisvalue.DOThe CH$ALLOCATIONfunctiontakesasanargumenttheNO>numberof characterstobe allocatedandreturnsthenumberROofwordsneededto representastringofthislength.(YoucanWOusethisvalueasan allocationactualinthetable definition,asOHfollows: tOWN7 TABLE:JBLOCKVECTOR[1,2&+%CH$ALLOCATION(5)]t]INITIAL(t345,t201,t5'SMITH' t|); COThe declaration is now!transportable.4By!using theAO CH$ALLOCATIONfunctionyoucanensurethatenoughKO5wordswillbe allocatedoneachmachine.,No rewritingisO necessary.U +SOYouarefreetoaddotherlinestothetableandnotbecon-QOcernedwiththerepresentationor allocationofthedata.'HereAO5isalargerexampleofthesamekindoftable. :... :... :I... !+ !Table% Parameters B!--LITERALz NO_EMPLOYEES%=&2,z; EMP_NAME_SIZE%=%25,z EMP_REC_SIZE%=&2%+'CH$ALLOCATION(EMP_NAME_SIZE); 5!+ |!(|Employee%Name&Padding%Macro !--.MACROzvNAME_PAD(NAME)&=4 %EXACTSTRING%(EMP_NAME_SIZE,&0,&NAME)%; '!+ o!&oEmployee% Information%Table ! !.Size:% NO_EMPLOYEES%*% EMP_REC_SIZE F!-- OWNz EMP_TABLE:2@ BLOCKVECTOR[NO_EMPLOYEES,& EMP_REC_SIZE] INITIAL(: 345,: 201,#:_ NAME_PAD(SMITH%PETER),: 207,: 345,":X NAME_PAD(JONES%PENNY) : );  ... Q ...  ... iLOTheliteralsserveto parameterizecertainvaluesthatareHOsubjecttochange.,Theliteral EMP_REC_SIZEhasasitsKO5valuethenumberofwordsneededforatableentry.,TheFO charactersequence function,CH$ALLOCATION,returnstheDOnumberofwordsneededfor EMP_NAME_SIZE characters.k ALOThemacrowill,basedonthelengthoftheemployeenameGOargument(NAME),generate zero-filledwordstopadoutLO5thenamefield.*Thus,youareassuredofthesamenumberMOofwordsbeing initializedforeachemployeename,nomat-QOterwhatitssizemightbe.(Thisis importantbecausestorageSO>is allocated accordingtothefixedlengthofa characterfieldOO (employeename).'Theactualstringlengthmay,ofcourse,be"Olessthanthatvalue.1! MOThislastexamplewas developedwiththe specificationthatHOtheemployeenamefieldwasfixedinlength (EMP_NAME_QO5SIZE).However,ifyouwantthetabletoholdvariablelengthOOnames(thatis,youwanttoallocateonlyenoughstoragetoJOholdthetabledata,notthemaximumamount),thetableOO> structure developedabovewillnotworkbecauseitispredi-TOcatedupontheconstantsizeofthenamefield.'IfyouweretoPOusevariablelength characterstrings,eithertoomuchornotOOHenoughstoragewouldbe allocated.'Therewouldbenoconsis-LOtentwayof accessingtheemployeenamebecauseyouwouldKOnotknowwhereeachnamewouldstart.+Youcould,ifyouKORknewthelengthofeveryemployeename, determineinad-QOvancethenumberofwordsneededbutthisisnota practicalO solution. NOOne transportablesolutionistoremovethe characterstringUOfromthetableandreplaceitwithapointertothestring.'TheJO5 characterpackagehasafunction(CH$PTR)that constructsPOapointertoa character sequence.*Asanaddedbenefit,thisOOpointercanbeusedasanargumenttothe functionsinthePO> characterpackage.(Thecostofthis techniqueistheadditionMOofanextraword(the charactersequencepointer)foreachSOtableentry.'ThelengthofthenamemayalsobestoredintheQOHtable.(Hereisatypicalexample,againbasedontheemployeeOtable: t%!+ tm!mTable% Parameters t!--tLITERAL f NO_EMPLOYEES%=&2,  EMP_REC_SIZE%=&4; t!+ t_!A_Macro%to% construct&a% CS-pointer%to%employee%name t!--tMACRO XNAME_PTR(NAME)&=8zCH$PTR(UPLIT(NAME&)),% %CHARCOUNT&(NAME)%%; t !+ tR!&REmployee% Information%Table t! t!.Size:% NO_EMPLOYEES&*% EMP_REC_SIZE t) !-- t OWN   EMP_TABLE:2" BLOCKVECTOR[NO_EMPLOYEES,& EMP_REC_SIZE]j INITIAL( 345, 201,#B NAME_PTR(SMITH%PETER), 207, 345,"; NAME_PTR(JONES%PENNY)  );  ... 4 ... | ...+! )-O6.4.4.5C InitializingPackedDataOO)Inthissectionwewilldiscusssometransportabilityconsid-OOerationsinvolvedin initializingofpackeddata.)PackeddataWOmeansthatfordatavaluesv1,v2,...,vnwithbit positionsp1,`O3p2,...,pnandbitsizesofs1,s2,...,sn, respectively,thevalueofQOthePLITitemwillbe representedbythe following expression:.Ov1^p1%OR%v2^p2%OR%...%OR%vn^pnOwhere max ( p 1'; p i2; :::; pn O)<s1+ ns2+ ::: Z+ sn Oforalli  F2~ si  ?vi z 2 8( Wsi  1)i ?KOTheORoperatorcouldbereplacedbytheadditionopera-ZOtor( + ),buttheresultwouldbe differentif,by accident,thereOO4were overlappingvalues.)NotethatthepackingofdatainaKO transportablemanneris dependentonthevalueof%BPVAL.! SOThe followingisan illustrationoftheinitializationofpackedKOdataobtainedby modifyingtheemployeetableexamplede-RO5velopedabove.*Whenafieldwithinablockis accessed,itisPOacommonpracticeto associateeachfield reference(thatis,SOoffset, position,andsize)withafieldname.)So,forexample,SO>thefieldnamesfortheoriginalemployeetablewouldlooklikeOthe following:tFIELD%EMP&= dSET$ EMP_ID%=&[0,0,%BPVAL,0],*  EMP_COST_CEN%=&[1,0,%BPVAL,0],* ; EMP_NAME_PTR%=&[2,0,%BPVAL,0]; TES;:POYoucanusethesefieldnamesin developinganinitializationLOmacro,byusing parametricvalues.(ThisisanotherexampleMO5ofhowyoucanuseparameterizationasakey techniquein'Owriting transportablecode. aQOIfthenumberofbitsneededto representthevaluesofEMP_COIDand EMP_COST_CENwereeachknownnottoexceedPO516,youcouldpackthesetwofieldsintooneBLISSvalueinJOBLISS-32and BLISS-36.)InBLISS-16the definitionoftheQOemployeetable,asitnowstands,wouldallocateonly16bitsJO>foreachfield,since%BPVALequals16.+In BLISS-36,anQO18-bitsizeforthesetwofieldswouldbechosen,becauseyouHOknowthatDECsystem-10/20systemshave instructionsthat.OHoperate efficientlyon halfwords.wMNOIftheinterestisonlyin transportingBLISS-36andBLISS-JO32,thefield declarationwouldlooklikethe following:taFIELD%EMP&= SET& EMP_ID%=&[0,0,%BPVAL/2,0],3 9 EMP_COST_CEN%=&[0,%BPVAL/2,%BPVAL/2,0],*  EMP_NAME_PTR%=&[1,0,%BPVAL,0]; TES; wQOBasedonthese declarations,youcandesignamacrothatwillOOtakeas argumentstheinitialvaluesandthendotheproperO5packing:tMACRO& #EMP_INITIAL(ID,CC,NAME)[]%='kID^%FIELDEXPAND(EMP_ID,2)&OR,CC^%FIELDEXPAND(EMP_COST_CEN,2)&,=NAME_PTR% (NAME^%FIELDEXPAND(EMP_NAME_PTR,%2))%%;! f@OThelexicalfunction %FIELDEXPANDsimplyextractsKOtheposition parameterofthefieldname.-The initializa-LO5tionmacro, EMP_INITIAL,makesuseofthisshiftvalueinOOpackingthewords.+ThegoalhereistorequiretheusertoNOspecifyas argumentsonlythe informationneededtoinitial-WO>izethetable,andnottospecify informationthatispartofitsPOrepresentation.'Anexampleofusingthesemacrosto initialize Opackeddatafollows: tt!+/t!JEmployee%Field% Reference&macros t!--tmFIELD%EMP&= SET& EMP_IDJ=%[0,0,%BPVAL/2,0],3 E EMP_COST_CENJ=%[0,%BPVAL/2,%BPVAL/2,0],*  EMP_NAME_PTRJ=%[1,0,%BPVAL,0]; TES;t>MACRO t!+programwiththeBLISS-16 compiler,achangetothefieldKO definitionsisneeded.*ThepackingmacroswouldnolongerQObeneeded,thoughtheycouldbeusedfor consistency.(Inthat:OHcase,theywouldalsoneedtobechanged. xOOAsafinalexampleof initializingpackeddata,considertheJODCB(datacontrolblock)BLOCK structure.,(DetailsastoNO5whatDCBisandhowitaccessesdataare discussedinthe,O BLISSLanguage ReferenceManual&S.'Here,weare concerned?Oonlywith initializingthistypeof structure.)*IOTheDCBBLOCKconsistsoffivefields..FourfieldsareKOpackedintooneword,theirtotalcombinedsizebeing32TO5bits,andthefifthfield,whichis32bitsinlength,occupiesOanotherword.V ,TOInthiscase,itispossibleto transporttheDCBinitializationFOveryeasilybetweenBLISS-32and BLISS-36.+ThereasonQO5isthatthetotalnumberofbitsrequiredforeachworddoesJOnotexceedthevalueof%BPVALforeachmachine.)Hence,UOinthiscaseatleast,youdonothavetomodifythedesignofJO>theBLOCKinanyway.) Typically,however,youwouldde-LOsignthe structureforeachtargetmachine.*OnemethodofVOdoingthisisbyplacingits definitioninaREQUIREfile.(ItisMOH preferable,however,toagainusetheparameterizationtech-MOnique,makinguseofthefield referencemacrosasintheOpreviousexample.H LOThenextexample describesamethodbywhichtheDCBcanGObe initialized.+Using BLOCKVECTORthe structureisex-LO5tended.,Notethatyoucanalso transportthe structuretoJOBLISS-16bymakingsuitablechangestothefielddefini-KOtionsandthepackingmacro.*Theonly considerationmightRO>bewhetherthelastfield,DCB_E,didrequireafull32bits. t!+"t !JDCB&size% parameters tS!--tLITERAL6 DCB_NO_BLOCKS%=&total&number%of%blocks,*LDCB_SIZE%=%size&of&a%block; t!+*t!JDCB&Field& Reference%macros tE!--tFIELD%DCB&= /SET/>DCB_A%=& [0,0,8,0],/DCB_B%=& [0,8,3,0],/DCB_C%=& [0,11,5,0],,/DCB_D%=&[0,%BPVAL/2,%BPVAL/2,0],#/^DCB_E%=&[1,0,%BPVAL,0];/TES;tMACRO tW!+t| !JDCB& Blockvector& definition%and&initialization t !-- t-OWN u DCB_AREA:/BLOCKVECTOR[DCB_NO_BLOCKS,% DCB_SIZE]INITIAL(4MDCB_INITIALIZE%(41,2,3,4,$!%first%word 45,$!%second%word4F6,7,8,9,$F!%first%word 410,$!%second%word 4... 2O6.4.5B StructuresandField SelectorsLO4TwoBLISS constructsare discussedinthissection:*struc-ROturesandfield selectors.'Whileusingonedoesnot necessarilySOimplyusingtheother,fortransportabilityreasons,fieldselec-OO=torusageisconfinedto structure declarations.)Hence,these4Otwo constructsare discussed together.! WPOInthe followinggeneral discussionof structures,itwillbeLOshownthatacertainmachine-specificfeatureof structuresOO5canbeusedina transportablemanner.'The developmentofaGO transportable structurecalled FLEX_VECTORis presented;SOfield selectorsare discussednext,followedbya descriptionof:O>amoregeneral structurecalled GEN_VECTOR. O6.4.5.1C StructuresQO) Structure declarationsare sensitivetotransportabilityinthatKOyoucanspecify parameters correspondingtocharacteristicsLOof particulararchitectures.*Also,inBLISS-32thereservedof addressable allocationunitsinoneelementofahomoge-OOneous structure.&Thisnumberwillbeusedin determiningtheROamountofstoragethatistobe allocatedforeachelementofOHthe structure.! WOOAs mentioned repeatedlyinthese guidelines,theprimetrans-KO portabilityproblemis differingmachinearchitectures.*ThePO5keytodealingwiththese differencesistheparameterization,OObythesizeofthemachineword (%BPVAL),ofthenumberofJObitsneededtoholdanaddress (%BPADDR)andthenumberNO>ofbitsoccupiedbythesmallest addressableunit (%BPUNIT).3! U O6.4.5.2C FLEX_VECTORIO)An applicationofparametizationis illustratedbyFLEX_NOVECTOR,a structurethatwill,bydefault,allocateandac-SOcessavector consistingofonlythesmallest addressableunits.RO3Ifthedefaultvaluegiveninthe structure declarationisnotTOused,thevectorelementsizewillbe specifiedintermsoftheLOnumberofbits.'TheexistingVECTOR mechanismwillnotdoO<this.! YPOAnexampleofitsusewouldbetocreateavectorof9-bitPO elements.+Thefirstdecisionthathastobemadeinitsde-UO5signiswhetherornoteachelementistobeexactlyninebits,QOoratleastninebits.)Forthisexample,youmustchoosethePOsmallestnaturalunitwhosesizeisgreaterthanorequaltoPO>ninebits.'Becausethereareno9-bit conveniently addressableQOunitsonanyofthe machines,youhaveachoiceof8-,16-,"O32-,or36-bitunits..! JONine bits will fit in the only addressable unit on theEODECsystem-10/20systems:*theword.*OnthePDP-11youSO5willneedtwobytesora16-bitwordandontheVAXyouwill"Oagainneedtwobytes.ROFora structuretodothe allocationandalsobe transportableIOtothethreesystemsrequiressome knowledgeofmachineIO5 architecture.-ThisiswhereparameterizationfindsakeyOusage.NMOThe predeclaredliteralshaveallthe informationyouneed.TOInfact,onlyonesetofvaluesisneeded:)bitsper addressableO5unit (%BPUNIT). WNOTheminimum necessarysizeofavectorelementwillbeoneOOofthe allocationformals(UNIT).OtherformalsthatwillbeOO5neededarethenumberofelements( N ),theindexparame-VOter( I )for accessingthevector,andan indicationofwhetherVOornottheleftmostbitofanelementistobe interpretedasaO>signbit(EXT).JOTheaccessand allocationformallistfor FLEX_VECTORisOasfollows:ta STRUCTUREB  FLEX_VECTOR[%I;%N,%UNIT&=%%BPUNIT,%EXT&=%1%]&= PONotethatifyousetUNITequalto%BPUNIT,thedefault(if1OUNITisnot specified)is%BPUNIT.NNOThenextstepistodeveloptheformulaforthe structure-MOsize expression.*The expressionmakesuseofthe allocation>O5formalsUNITandNandthevalueof%BPUNIT.} +SNOIfUNITwereallowedtoassumeonlyvaluesofintegermul--Otiplesof%BPUNIT(thatis,1_ *%BPUNIT,2_ *%BPUNIT,PO5andsoon),onlyastructure-size expressionofthe following"Oformwouldbeneeded:(t[%N&*%(UNIT)&/%%BPUNIT%]h >HODividingtheelementsize(UNIT)by%BPUNITwouldgiveSOthesizeofeachelementinthevectorintermsofanintegerNO5 multiple.(Thisvaluewouldthenbe multipliedbythenumberUOofelementstogivethetotalsizeofthedatatobe allocated.Q'NOSupposethe structureneedstobemoreflexibleinthatitQOshouldbepossibletospecifyanysizeelement(withincertainLO5limits).'The structuresizemustbeslightlymorecomplex: expression.n DMOThe structurebodyisanaddress expression,whichconsistsSOofthenameofthe structure(thebaseaddress)plusanoffsetVO5basedontheindexI.In addition,afieldselectorisneededtoNOaccessthepropernumberofbitsatthe calculatedaddress.)5HOTheoffsetissimplythe expression:) NO_OF_UNITSmulti-OOpliedbyindexI (rememberthatindicesstartatzero).+TheMO5size parameterofthefieldselectoristhe expressionNO_HOOF_UNITS multipliedbythesizeofan addressableunitFO (%BPUNIT).The structurebodylookslikethe following:tk (FLEX_VECTOR&+7 I%*%((UNIT%+%%BPUNIT&-%1)%/% %BPUNIT))=t <0,((UNIT&+%%BPUNIT%-&1)/%BPUNIT)*%BPUNIT,EXT>;SOThevalueoftheposition parameterinthefieldselectorisaPOconstant0sinceitalwaysstartsatan addressable boundary.~KOThe followingtableshowsthe structureonthethreema-3Ochinesfor differentvaluesofUNIT:  OOMachineK Structure O VAX O;OUNIT=0)KNostorageFLEX_VECTOR<0,0,1>OUNIT=1to8 K[N (*/1]Bytes (FLEX_VECTOR+ I)<0,8,1>OUNIT=9to16 K[N *'2]Bytes (FLEX_VECTOR+I {* 2)<0,16,1>OUNIT=17to32 K[N *'4]Bytes (FLEX_VECTOR+I {* 4)<0,32,1> ONOPDP-11 OOUNIT=0to16KSameasVAX OXODECsystem-10/20 OO%UNIT=0+K%Nostorage(FLEX_VECTOR)<0,0,1>OUNIT=1to365K[N]Words (FLEX_VECTOR+ I)<0,36,1> ODKOThetable illustratesthatifthedefaultvalueforUNITJOwassetto%BPVALthis structurewouldbe equivalenttoDO5aVECTORof longwordsontheVAXandaVECTORofAOwordsonbothDECsystem-10/20andPDP-11systems.2 2N! $MOElementsinadatasegmentthathasthis particularstruc-OOture attributeareaccessedvery efficientlybecausetheyareNO5alwayson addressable boundaries.'Also,theyarealwayssome:Omultipleofan addressableunitinlength.P+&QOIfthis structureweretoaccesselementsofexactlythesizeMO specified,theonlychangeneededwouldbethesizeparam-OO5eterofthefield selector.+This expressionthenbecomestheO following:%t...&FLEX_VECTOR<0,&UNIT>; XOOThisisaless efficientmeansof accessingdata(whenUNITKOisnotamultipleof%BPUNIT)becausethecompilerneedsSO5togeneratefield selecting instructionsinthecaseoftheVAXHOandDECsystem-10/20machinesandaseriesofmasksand#OshiftsforthePDP-11.% #O6.4.5.3CField SelectorsNO)Inthelast structure declaration,itwas necessarytomakeUOuseofafield selector.(Usingfield selectorsinamoregeneral5Ocontextare discussedinthissection.! WKOUsingfield selectorscanbenontransportablebecausetheyPOusethevalueofthemachinewordsize.'The unrestricteduseRO5offield selectorscancauseproblemsinaprogramwhenitisJOmovedtoanothermachine.*Theseproblemsarebestillus-YOtratedbythe followingtableof restrictionsonposition( p )and3O>size( s )forthethree machines:} O ODECsytem-10/20PDP-11 ^VAX O Ob0 b bp Kb0 b bpOp+s  B36Kp+s  >16 OV0 V Vs V =V36 KV0 V Vs V9V160 V Vs V LV32 Oq NQOFromthetable,youcanseethatthePDP-11isthemostre-MO strictive;theDECsystem-10/20is moderately restrictive;and0O5theVAXistheleast restrictive.POToensurethe transportableuseoffield selectors,youwouldNOhavetoabidebythesetof restrictionsimposedinBLISS-MO516.-Theseare restrictionsimposedbythevaluesofpandROs.,Thereisalsoa contextual restrictionontheuseoffieldFO selectors.'The following guidelineshouldbe followed:Av ` MField selectorscanappearonlyinthe definitionofuser-(defined structures.RO Restrictingthedomainoffield selectorsto structuresisolatesHOtheiruse.'Field selectorsshouldbeisolatedsothat:O % ` <Changesindata structuredesignareeasier. `O EOMachine dependenciescaneasilybeplacedinREQUIREfiles. `' A'Complexcodemakingheavyuseofthe predeclared2literalsislimitedto declarations.O6.4.5.4C GEN_VECTORJO) GEN_VECTORisa transportable structurethatisalsoaf-SOfectedbythetableoffieldselectorvalue restrictions.)NoticeGOthat FLEX_VECTORdoesnotattempttopackdata.)UsingPO3theexampleof9-bit elements,itisevidentthattherewillMObesomewastingof bits-fromsevenbitsonthePDP-11and9OVAXto27ontheDECsystem-10/20systems.b! 8KOA variationof FLEX_VECTORcanbe developedtoprovideaPOcertaindegreeofpacking.)Forexample,inthecaseof9-bitVO5elementsitwouldbepossibletopackatleastfourofthemintoGOaDECsystem-10/20wordandthreeintoaVAX longword.3!  COThe GEN_VECTOR structurepacksasmanyelementsasQOpossibleintoaBLISSvalueandsomakesuseofthemachine-PO5specificliteral%BPVAL.However,since allocationisintermsLOof%BPUNIT,aliteralisneededthathasasavaluetheQOnumberof allocationunitsinaBLISSvalue.(ThisliteralhasJO>been predeclaredfortransportabilityreasonsandhasthe>Oname%UPVAL,andisdefinedas%BPVAL/%BPUNIT. OOElementsdonotcrossword boundaries.'This constraintexistsSObecauseofthe restrictionsplacedonthevalueofthepositionGO5 parameterofaDECsystem-10/20andPDP-11fieldselec-JOtor.-ForthesamereasonelementscannotbelongerthanPO%BPVAL,asgiveninthetableoffieldselector restrictions. WEOAsin FLEX_VECTOR,the allocation expressionofGEN_JOVECTORneedsto calculatethenumberof allocationunitsQO5neededbytheentirevector.'Thisisagainbasedonthenum-XOberofelements( N )andthesizeofeachandthesizeofeachPOelement( S );however,becausetheelementsarepacked,the6O> expressionisslightlymore complicated.zROThefirstvalueisthenumberofelementsthatwillfitinaKOBLISSvalue.'The following expressioncomputesthisvalue:ta (%BPVAL/S)zMOGiventhis,toobtainthenumberofBLISSvaluesorwordsJOneededfortheentirevector,dividethisvalueintoN:ta(N/(%BPVAL/S))] +3POThisisthetotalnumberofvaluesneeded.(However,dataareNOnot allocatedbywordsonbothofthe machines.) MultiplyingKO5thisvalueby%UPVALresultsinthenumberof allocation)Ounitsneededbythevector:!t((N/(%BPVAL/S))*%UPVAL) +TOFor clarity'ssakeandbecausethis expressionisagainused,itGOis expressedasamacrowithNandSas parameters:taMACRO WHOLE_VAL(N,S)&=$((N/(%BPVAL/S))_*%UPVAL)%;H NOThenameofthemacrosuggeststhatit calculatesthenum-QOberofwholewordsneeded.'IfNwereanintegralmultipleofOO5thenumberofelementsinaword,thenthismacrowouldbe0O sufficientfor allocation purposes.y+ONOBecausethisisnotknowninadvance,another expressiontoNO calculatethenumberof allocationunitsneededforanyre-IO5mainingelementsisneeded.,ThenumberofelementsleftROoveristhe remainderofthelastdivisioninthis expression:t(N/(%BPVAL/S))!bDOTheMODfunction calculatesthisvalue,asfollows:t(N%MOD& (%BPVAL/S))zPO MultiplyingthisvaluebythesizeofeachelementgivestheCOtotalnumberofbitsthatremaintobe allocated:$ta(N%MOD& (%BPVAL/S))&*%SS )POThisvaluewillalwaysbestrictlylessthan%BPVAL.ForthePOsamereasonsoutlinedabove,this expressionwillbe expressed8O5asamacrowithNandSas parameters:OMACRO PART_VAL(N,S)%=(zk((N%MOD% (%BPVAL/S))%*%S)%; gMOPART_VALcomputesthenumberofbits allocatedinthelastO (partial)word.!NOTakingthisvalue,addingan arbitraryfactor,andthendi-LOvidingby%BPUNITgivesusthenumberof allocationunits,O5neededforthe remainingbits:1t(PART_VAL(N,S)%+%%BPUNIT& -1)/%BPUNIT OOThetotalnumberof allocationunitshasbeen calculatedandBOthe structure allocation expressionisasfollows:ta[WHOLE_VAL(N,S)&+4t(PART_VAL(N,S)%+%%BPUNIT&-% 1)/%BPUNIT]NIOAsitworksout,thestructure-body expressionforGEN_LOVECTORissimpletowritebecauseofthe expressionsthat'O5havealreadybeenwritten.<! 5IOThe accessingofanelementin GEN_VECTORrequiresthatMOanaddressoffsetbe computed,whichisthenaddedtotheKO5nameofthe structure.,Theoffsetissomenumberofad-TO dressableunitsandisafunctionofthevalueoftheindexI.OOThe expression calculatingthisnumberofunitsisthemacroMO> WHOLE_VAL.Thus,thefirstpartofthe accessing expressionOisasfollows:'t GEN_VECTOR%+&WHOLE_VAL(I,S)xNNONotethatthemacrowascalledwiththeindex parameterI.4! 5 QOThis expressionresultsinthe structurebeingalignedonsomeMO addressable boundary,butbecausetheelementmaynotbeginPO5atthispoint(thatis,theelementcanbelocated somewhereKOwithinaunit%BPVALbitsinlength),onemorevalueisROneeded.(Thatvalueistheposition parameterofafieldselec-MO>tor.'ThemacroPART_VAL calculatesthisvaluebasedontheOindexI:t NLOThesize parameteristhevalueS.Theposition parameterSOwillbe calculatedatruntime,basedonthevalueoftheindex O5I.iE?HOThis completesthe definitionof GEN_VECTOR.Theentire'O declarationisasfollows:ta STRUCTURE$ GEN_VECTOR[I;N,S,EXT=1]&=/[WHOLE_VAL(N,S)%+4/Z(PART_VAL(N,S)%+&%BPUNIT%-% 1)/%BPUNIT])/ (GEN_VECTOR%+&WHOLE_VAL(I,S)) /,;! yQOYoucancompilethis structuretoseehowitworksinBLISS-(O16, BLISS-32,and BLISS-36./! AO6.4.5.5CSummaryof StructuresandField SelectorsTO)Noclaimismadethateitherofthesetwo structureswillsolveLOalltheproblems associatedwith transportingvectors.(ManyJOsuchproblemswillhave interestingandunique solutions.EO3BLOCKSand BLOCKVECTORShavenotbeen discussed,butSOitishopedthatyouwillgetfromtheexamplesafeelingforBOthe techniquesinvolvedin transporting structures.S)LOThereisnoeasysolutionto transportingdata structures.IOWhen developingdata structures,youshouldconsidertheKO5machinesforwhichtheprogramorsystemistargetedandIOmakefulluseof predeclared literals,suchas%BPUNIT.|HOThisexercisein developing transportable structureshas4O demonstratedthe followingtwopoints:zhP ` Parameterization `O  OFieldselectorusage NIOByparameterizingcertainmachine-specificvalues,andbyGOtakingfull advantageofthepowerful STRUCTUREmecha-GO5nism,two transportable structureshavebeen developed.NLOAlthoughyoucanaccessodd(nonaddressable)unitsofdataOOusingfield selectors,theyshouldonlybeusedin structureO5 declarations.! r3O 7.ACompiler)Overview(and) OptimizationOrSwitchesIOThischapterprovidesanoverviewoftheBLISScompilerHOO organizationand processing.,Thematerial presentedhereKOassumesthatyouhaveageneral understandingofcompilerQOtheoryand practice.'Itneednotbe understoodfornormaluse2OYoftheBLISSlanguageand compiler. W5OSomeoftheswitches describedinthe BLISSLanguageO ReferenceManual8provide specializedcontroloverthepro-SO5cessingofthe compiler, especiallyintheareaof optimization.MOThissectionprovidesthebasisforamoredetailedunder-MOstandingofthese switches.*Theswitchesthatare describedO>areasfollows: ` CODEandNOCODE `O #OOPTIMIZEand NOOPTIMIZE ` OPTLEVEL `N NSAFEandNOSAFE ` ZIPandNOZIP`5xO7.1BCompilerPhasesHOUThecompileris organized conceptuallyintosevenmajorOphases:[13OLEXSYNDLexicaland syntacticanalysisO]FLOWFlowanalysisODELAYi HeuristicsBOPTNBINDI Temporarynamebinding (register allocation) OCODECode generation+ODFINALyCodestream optimization8OOUTPUT>Objectandlistingfile production MOThisdivisionofthecompilerinto conceptualphasescorre-KOspondsonly approximatelytotheactual compiler.*InsomeMO5cases,aphaseactuallyconsistsoftwoormore subphases.LOInothercases,phasesarecombinedintheimplementation;QOhowever,thislevelofdetailisnot importantinthefollow-RO>ing discussionofthephases.'Theterm ``phase''shouldnotbeOtaken literally.9O7.1.1BLexicaland SyntacticAnalysisPhaseFO4Thelexicaland syntacticphase(LEXSYN)performstheO following functions: p ` "Readstheinputfiles `O >ODividesthesource charactertextintolexemes ` C Identifiesandperformslexical functionsandmacro' expansions ` GParsesthe resultinginputlexemesequenceandcreatesK appropriatesymboltableentriesfor declarationsandtree+Wrepresentationsfor expressionsq! GQOTheBLISScompilerreadsthesourcetextonceandusesittoROcreateaninternalrepresentationofthemodule.&Inthissense,JO5theBLISScompilerisaone-pass compiler.,OntheotherOOhand,attheendofeach (ordinaryorglobal)routinedefi-LOnition,the remainingphasesofthecompilerare performedLO>inturntoanalyzeand completelyproduceandoutputcodeTOforthatentireroutine.(Inthissense,theBLISScompilerisaO multi-pass compiler. NOIftheNOCODEswitchis specified,thecompileroperatesinJO``syntax-only''mode,inwhichtheLEXSYNphasedoesnotPO5producethetreerepresentationsfor expressionsandthelaterQOphasesarenot performed.'Ifanerror(asopposedtoawarn-NOing)isdetectedandreportedbythe compiler,thecompilerGO> automaticallyenters syntax-onlymodeasifNOCODEhadObeen specified. yMO Syntax-onlymodeisusefulforinitialcheckingofanewlyJOcreatedmodule.-Thereisan important limitationinthisLO5mode,however,inthatsomeerrorscannotbedetectedbe-POcausecertainerror detectionand reportingcanoccuronlyinFOlaterphasesofthecompilerthatarenot performed.NJOThe differencebetweenanerrorandawarning diagnosticSOisbasedonthe seriousnessoftheeffectoftheerrorontheNO5internalrepresentationoftheprogramusedbythe compiler.KOInmostcases,thecompilercanrecoverandproceedwithMOnormal compilation.*Thispermitsfurthererrors,ifany,toPO5bedetectedand,insomecases,maypermitthe resultingob-MOjectmoduletobeusedfor executiontime debuggingbeforeLOthesourcemoduleis correctedand recompiled.(ErrorsfromJO>whichthecompilercancontinuenormallyarereportedasOwarning diagnostics.? TOInsomecases,theeffectofausererroristomakethecom-JOpiler'sinternalrepresentationofthemodule inconsistentLO5or otherwise unreliablefor continueduse.*Sucherrorsare+Oreportedaserror diagnostics.NGO Dependingonthecircumstances,thesameapparentuserJOerror(same diagnostic information)maybereportedasaBO5warninginonecasebutasanerrorinanother.&O7.1.2BFlowAnalysisPhaseEO4Theflowanalysisphase(FLOW)examinestheinternalLOtreerepresentationofacompleteroutineandperformstheO following functions: ` E Identifies expressionsthatappearmorethanonceinF(thesourcebutproducethesamevalue(commonsubex-C pressions)..Such expressionsneedbe evaluatedonlyJonceduring executionandtheresultusedseveraltimes,=2therebysaving executiontimeandcodespace. ` F Identifies expressions containedinloopswhosevaluesM willbethesameoneach iterationoftheloop.*Suchex-Jc pressionscanbe evaluatedoncebeforestartingtheloopKandtheresultusedduringeach iteration,therebysaving executiontime. ` N Identifies expressionsthatoccuronall alternativesoftheAIF,CASE,and SELECTONE expressions.)Suchexpres-KDsionscanbe evaluatedoncebeforeorafterthemultiple6 alternatives,therebysavingcodespace. pLOMore generally,theFLOWphase identifiespossiblealterna-ROtivewaysof evaluatingaroutinethatmightbemore efficientPO5intimeorspace,orboth.(Notethatthenextphase(DELAY)HO determineswhich alternativeisactuallyused;theFLOW:Ophaseonly identifiesthepossiblechoices.h>OOIfOPTLEVELis specifiedwithavalueof0or1,theflowKOanalysisphaseisskipped.,A consequenceofskippingflowJO5analysisisthattheOPTIMIZEandSAFEswitcheshavenoJOeffect,becauseOPTIMIZEandSAFEcontrolaspectsofhowJOflowanalysisisdone.+However,ifOPTLEVELis specifiedSO>withavalueof2(thedefault)or3,theflowanalysisphaseFOis performedandtheOPTIMIZEandSAFEswitcheshave-Oeffectsthatwillbe described.NDOTo understandtheeffectsoftheOPTIMIZEandSAFEOO switches,itisfirst necessaryto understandmoreabouthow(O5flowanalysisis performed.U L+3O7.1.2.1CKnowingWhenaValueChangesLO)OneoperatorinBLISS,the assignment operator,canchangePOthecontentsofadatasegment.'RoutinecallscanchangetheLOcontentsofdatasegmentsbecausetheycancontainassign-O3ments.w MMOForeach assignment,thecompilerexaminestheleftoperandLO expressionandattemptsto determinethenameofthedataKO5segmentwhosecontentswillbechangedbythe assignment.JO(Thecasewherenonamecanbe determinedis consideredJObelow.)+ThecompilerperformsthesameanalysisforeachSO>actual parameterthatappearsinaroutinecall.'Ineffect,theMOcompilertreatseachactual parameterasthoughitdidap-TOpearastheleftoperandofan assignment.'Inadditiontothis,MOHforeachroutinecallthecompiler determinesthenamesofKOallOWNandGLOBALdatasegmentsthatthecalledroutineIOmightchangeandassumesthatallofthemarechanged.HOMachine-specific functionsaretreatedasnormalroutineLOcalls,exceptthatthecompilerhasmoredetailedinforma-IO5tionaboutwhich parameterscancausechangesandwhichOcannot.>:ROSeveralaspectsofthisanalysisprocessare illustratedintheKO following examples.*Intheexamplesthese declarationsareO5assumed: tOWN X:& VECTOR[10], IY, Z;tEXTERNAL%ROUTINE !F;FOFirst,considerthe followingsequenceof assignments:tI%=&3;tPY%=&.X[.I];tX[7]%=&.X[.Y];tZ%=& .X[.I]+1;! SOInthethirdline,the assignmenttoX[7]isassumedtochangeSOallofthedatasegment identifiedbyX.Asa consequence,theKO5compilerdoesnot recognizethepossiblecommon subexpres-JOsion.X[.I]. (However,notethatthecommon subexpressionNOX[.I],whichcomputestheaddressoftheIthelementofX,OO>is recognizedbecausethe assignmenttoXcannotaffectthisOvalue.)]3JOIntheaboveexample,itmayseemapparentexactlywhatUOpartofXischanged,butinmostcasesitis difficultorim-OO5possibleforthecompilerto determinewhatpartofanamedEOdatasegmentchangesandwhatpartdoesnotchange.ij@OAnotheraspectis illustratedwiththisexample:tX[11]%=%11;tPY%=&.Z;u  KOOInthefirstline,the assignmenttoX[11]actuallymodifiesSOthecontentsofZ.(RecallthatXwasdeclaredasavectorofHO510elementsnumbered0through9).+Thecompileranaly-ROsisdoesnot determinethatstorageotherthanthestorageforNOXisbeingchangedbecausetheanalysisisbased completelyPO>onthenamesthatoccurinthe expression.(Asa consequence,KOthecompilermayinappropriatelyusethepreviouscontentsQOofZinthe assignmenttoY.Thiswouldhappen,forexample,MOHifthe expression.Zwereacommon subexpressionusedfre-TOquentlyenoughtoresultinthecontentsofZbeingcopiedinto4Oaregisterformore efficientaccess. NHOBothoftheseexamples emphasizethe importanceoftheNOnameusedto referencestorageintheanalysis performedbyO5FLOW.  OONowconsiderthecasewhereanamecannotbe identifiedforPOthestoragebeingchanged.)Thisisthecaseinthe followingO5example:tZ%=&F();t.Z%=%3; ! QOInthesecondline,nonameofadatasegmentcanbedeter-QOmined.'Insuchacase,thecompilerassumes(bydefault)thatLO5nonamedstoragehaschanged.*This assumptionis justifiedOObecauseitisalwaysthecasethatsuchindirect assignmentsCOareusedtochangethecontentsofthe following:Q  r' ` E Dynamicallycreateddata structuresthatdonothave(names ` JDatasegmentspassedas parametersofroutinecallsthatIcannotbe referencedinthecalledroutinebythename*Yusedtoallocatethestorageb 8JOYoucanusetheNOSAFEvalueofthe /OPTIMIZE qualifierMOtooverridethedefault assumption describedabove(SAFEisLO5the default).*IfNOSAFEis specified,thecompilerassumesJOthatindirect assignmentschangesomenameddatasegment.OOBecauseitisnearly impossibletoidentifythedatasegmentMO>thatischanged,this assumptionis guaranteedbythecom-NOpilerbymakingthestronger assumptionthatallnameddata!Osegmentsarechanged.kA+O7.1.2.2C AccountingforChangesKO)TheBLISSlanguage definition intentionallyleavesunspeci-NOfiedtheorderofoperand evaluationinoperator expressionsFOinordertopermitmaximum optimizationbytheBLISS"O3 compiler.'Forexample:tF(X)%+&.XT  *QOThis expressioncanbe evaluatedfirst,bycallingFwiththeQOaddressXasa parameter;second,byfetchingthecontentsofPO5X;andfinally,by performingthe addition.*ItmightalsobeTO evaluatedfirst,byfetchingthecontentsofX;second,bycall-MOingF;andsoon.+Thecompileruses informationaboutthePO>entireroutineinwhichthe expressionis containedtochooseLO alternatives.)BecausetheroutinecallF(X)maychangetheNOcontentsofX,thequestionbecomes:'WhendoesthecompilerMOHaccountforthe (potential)change?*ItdoesnotmakesenseMOtoaccountforthiswithinthe expressionwithout preciselyPO specifyingtheorderof evaluation.(ItmakessensetoaccountNORforchangesonlyatpointsinthelanguagewheretheorderPOof evaluationis specified.(Pointsatwhichchangesaretaken$Ointoaccountarecalledmarkpoints$~.(MarkpointsinBLISSJO[are summarizedinthe followingdiagram,whereanexcla-XOmationpoint( ! )isusedtopointtothemarkpointwithinthe6O languagesyntaxonthe subsequentline. !tBEGIN%exp&;...%END TB! B! B!'tIF%exp&THEN%exp&ELSE%exp!!t;WHILE%exp&DO&exp T! !tDO%exp&WHILE&expV !!!!:t INCR%name&FROM%exp&TO&exp%BY%exp%DO%exp  ! * !NtO CASE%exp%FROM%ctce&TO&ctce%OF%SET&[%...&]:&exp%;...&TES  ! !!  !It SELECT&exp%OF%SET%[%exp%TO%exp&,...%]:%exp&;...%TESD! LOThemostcommonmarkpointinmostprogramsisthesemi-KOcolon,which separates expressionsinablockorcompound$O5 expression.'Forexample:tBEGINtY%=&.X+2;tIZ%=& .X+2+F(X);tW%=&.X+2 tEND aROInthesecondline,thecontentofYischanged.(ThecompilerKOtakesthischangeintoaccountwhenthe semicolonisen-MO5 countered.)Inthethirdline,.X+2computesthesamevalueNOas.X+2inthesecondline;thus,.X+2isacommonsubex-TOpressionofthesecondandthirdlines.)Alsointhethirdline,TO>thecontentofZischangedandthecallF(X)is consideredtoMOchangethecontentofX.As discussedabove,thesechangesLOarenottakenintoaccountuntilthe semicolonisencoun-MOHtered.*Inthefourthline,.X+2mustbe recomputedbecauseYOofthechangeofthecontentofXinthethirdline;itisnotaBOcommon subexpressionwiththeprevious occurrences.3!  NOTheeffectoftheOPTIMIZEswitchisnoweasilystated.*IfROOPTIMIZEis specified(the default),fullflowanalysisisper-IO5formed.*If NOOPTIMIZEis specified,ateverymarkpointMOalldatasegmentsareassumedtochange.(Asa consequence,FOcommon subexpressionvaluescomputedbyone expressionMO>arenotreusedinlater expressions,thevalueiscomputedNOagain.* ExpressionsthathaveaconstantvaluewithinaloopSOarenotcomputedoncebeforetheloopisstarted;thevalueisNOH recomputedduringeach iterationoftheloop.)And similarly,QOotherkindsof``codemotion'' optimizationsarenot performed.J + JOHowever, specifying NOOPTIMIZEisnot equivalenttospec-KOifyingthatnoflowanalysisis performed,becausecommonMO5subexpressionsthatoccurbetweenmarkpointsarestillde- Otected.'Forexample:tY%=&(.X*2)+F(.X*2)N2OInthis expression, subexpression.X F*$k2iscomputedonceandIOthe resultingvalueusedtwice,evenwhen NOOPTIMIZEisO5 specified.! !O7.1.3B HeuristicPhaseIO4The heuristicphase(DELAY)furtheranalyzestheroutinePOtoobtaingeneral informationabouttheroutine.'SomeofthisOO informationisusedbyDELAYitselftomake optimizationde-PO=cisions,andsomeismade availableforusebylaterphases.5ODELAYperformsthe following functions: ` J Evaluatesthe effectivenessofthe alternatives identifiedF(byFLOWandchoosesthebest alternative.*Thisanal-Gysis considers,forexample,thenumberof occurrencesGofacommon subexpressionandthe potentialforusingI2 specialized operations availableintheaddresspartsofD instructions(forexample, indirectionand indexing). `  E  IdentifiessetsofuncommonsubexpressionsthatoccurBconlyonce.-ThesesubexpressionsshouldbecomputedFinthesame temporaryregisterormemorylocationtoGmaximizetheuseof 2-operandasopposedto 3-operandl instructions.YIONoneoftheswitchesaffectthe operationoftheDELAYOphase.S`)0O7.1.4B TemporaryNameBindingPhaseDO4The temporarynamebindingphase(TNBIND) determinesKOwhereeachvaluecomputedduringthe executionofarou-NOtineshouldbe allocated.*Thisphase correspondstowhatisLO= sometimescalledregister allocationinother compilers.,ItNOissomewhatmoregeneralinthatit considersand allocatesJO user-declaredlocal variablestogetherwithcompiler-needed8OG temporary locationsinan integratedway.`66OTNBINDperformsthe following functions:! 5 ` L Determinesthelifetime(thefirstandlastuses)ofeach-( temporaryvalueintheroutine. ` L Estimatesthe differenceincompiledcodecostofallocat-Jingeach temporaryvalueinaregisterversusinmemoryY(onthestack). ` GUsescost informationtorank temporaryvaluestode-G1terminethemost importantonestobe allocatedina register. `  G  Proceedingfrommost importanttoleast important,al-Falocatesthe temporaryvalues.(Morethanone temporaryGvaluemaybe allocatedinthesame location,providedOtheir lifetimesdonotoverlap.+(Thus,itispossibleforaNkless important temporarytobe allocatedinaregisterevenIthoughamore importantoneisnot-itsshorterlifetime*couldpermititto ``fit.'')NHOThemeasureof importanceused (normally)byTNBINDisNObased completelyon minimizingtheoverallsizeofthecode/O5 generatedfortheentireroutine.GLOTheZIPswitchmodifiesthe importancemeasure.)IfZIPisMO specified, temporaryvaluesusedwithinloopsaregivenin-MO5creased importance.)Thegreaterthedegreeofloopnesting,HOthegreaterthe importance.+Thus, temporaryvaluesusedSOinloopsbecomemorelikelytobe allocatedin registers.)AsaPO> consequence,codewithinalooptendstoexecutefaster,evenLOthoughtheoverallsizeoftheroutinecanbecomelarger. (O7.1.5BCode GenerationPhaseHO4Thecode generatorphase(CODE) processesthetreeandGO generates instructions./Becausethe allocationforeachPOoperandofanodeandtheresultlocationofeachnodehaveDO=alreadybeen determinedbyTNBIND,CODEselectstheOOlocallybestcodesequence consistentwiththose requirements.eOONoneofthe compilationswitchesaffectthe operationoftheOCODEphase.V V,2O7.1.6BCodeStream OptimizationPhaseDO4Thecodestream optimizationphase(FINAL) processesDOthecodestreamproducedbyCODEandmakesfurtherNO optimizationsatthemachinecodelevel.(The followingopti-$O= mizationsare performed:X!! \. ` FPeephole optimization.+Onesequenceof instructionsis<(replacedwithan equivalentshorter sequence. ` GTest elimination.+TST instructionsusedfor conditionalH branchingmaybedeletedifthe conditioncodesneededHYbythebranch instructionare appropriatelysetbythe0 instructionsthatprecedetheTST. `1 F1 Jump/Branch resolution.'Branch instructionsarereducedMtotheirshortestsize consistentwiththeactualrangeof,theneededbranch displacement. `a FaBranch-chaining.+Ifashortbranch instructionisnotKabletoreachthedesiredlocationbutcanreachanotherIbranch instructionthatgoestothedesired location,aBkchainofbranchesisusedtominimizecodesize. ` JCross-jumping.' Identical sequencesofcodethatflowintoICacommon instructionaremergedintoasingle sequence.|"RGOYoucanusetheOPTLEVELswitchto eliminatesomeofQOtheseoptimizations.(Theresultiscodethatmoreclearlyfol-KO5lowsthe organizationofthesourceprogram.+ThismaybeJOhelpfulduring debuggingorwhenthe generatedcodemust%Obe understoodindetail.T#V*0O7.1.7BOutputFile ProductionPhaseDO4Theoutputfile productionphase(OUTPUT) transformsKOthecodestreamintoobjectmoduleformatandoutputsitUOtotheobjectfile.*ItalsoformatsandoutputsthelistingfileO= information.=$ LOIftheDEBUGswitchis specified,symboltable informationROforusebytheDEBUGsystemutilityisincludedintheobjectJO5module.+IfNODEBUGis specified(the default),nosymbol+Otable informationis produced.d U% w++O7.2BSummaryofSwitchEffectsNOUTheprevioussectionshave describedthephasesofthecom-QOpilerandtheswitchesthataffecteachofthosephases.)ThisNOsection summarizestheeffectsofeachswitch throughouttheO^ compiler.7&   O%OSwitchNamePhaseEffect OObCODE6bLEXSYNNOCODE specifies syntax-onlypro-0vcessing;theotherphasesarenotvinvoked.OwOPTIMIZE2wFLOWIfflowanalysisis performed,,v NOOPTIMIZEprevents optimizationvacrossmarkpoints.OOPTLEVEL:FLOWAtlevels0and1,flowanalysisisvnot performed.6SFINALAtlevels0and1, cross-jumping/vandbranchchainingarenotper-1vformed.$Atlevel0,peepholeopti-2v; mizationsthatarenotadjacentarevnot performed.OSAFE2FLOWIfflowanalysisis performed,+vPNOSAFE specifiesthatindirect0vchangesareassumedtochangeallvstorage. OeZIP6eTNBINDZIP specifiesthatdatasegments2vusedinloopsaretobegivenin-.vcreased importancein determiningvMregister allocation. Oh'IOTheOPTLEVELswitchisa compositeswitchthatincludesPO appropriatesettingsoftheotherswitchesinanorderedway.OO5Itcanbe specifiedinthecommandlineormodulehead,orJOboth.,Theruleappliedto determinewhichswitchsettingSOhaseffectisthatthemostrecentswitchsetting specifiedhasHO>effectallowingtheotherswitches(SAFE, OPTIMIZE,andJOsoon)tooverrideOPTLEVELatanytime.*Inacompila-MOtionofmorethanonemodule,eachmodulebeginswiththeGOHsettingdefinedinthecommandlineand OPTLEVEL=2ifFOOPTLEVELhasnotbeen specifiedinthecommandline.(pCOThe optimizations performed at each setting ofthe-OOPTLEVELswitchareasfollows:)l `1. **Common subexpression detection `O2. [*4OCodemotionoutofloops,andsoon6`3.:Targetting/preferencingto temporaries`N4.:CrossjumpingE`5.:MultipleRETs(insteadofonlyonereturnpoint)`L6.: Peepholes`7.:TSTx elimination.`K8.:Scansfor( )+,-( )forms-`9.:ScansforPUSHR,andsoon8`J10.Scansforcheaperformof addressing`11.Branchchaining `H12. T*HSAFE optimizations `13. *8OPTIMIZEovermarkpoints(for example,;) `G14. S*GGZIP speed/spacetradeoff(fasterbutpossiblylarger)*bEOThe following table relates the optimizations to theOOPTLEVEL settings:+E OWOPTLEVEL O bb0 b1 b2 b3 O1 o* x x OV2 o`* Vx Vx O3 bx x x + OI4 Ix Ix O5 x x x O=6 b=r =x =x =x O7 bx x x x O08 b0x 0x 0x 0x O9 bx x x x O$10 b$x $x $x $x O11 x x O12 !* x x O13 * x x O 14 *  x O&O,%%OKeytoOPTLEVELSettings-  *H-Anotherswitchcancontrolthis optimization separately#( x-Allowable optimization/ +-Allowed(with increasedfreedom)2 r-Allowed(withcertain restrictions)X. .9O 8.2Tools,! Libraries,!and!System! InterfacesMOAnumberof programmingtools, libraries,andsysteminter-HOfacesare availableforusebyBLISS programmers.-ThisJOBchapterbriefly describeswhatis availableforusewithGOBLISS-32Version4.3..Notethatwiththe exceptionofHOtheVAXSourceCode Analyzer,theBLISStools(utilityGOL programs)andsystem interfaces describedherearenot@O supportedproductsatthetimeofthiswriting.*/IOThe residence locations specifiedforthevariousBLISS-HOrelatedprogramand informationfilesassumethattheseNO5fileshavebeen installedonyoursystemintheir standard,!O as-released locations.q0! G1O8.1BVAXSourceCodeAnalyzer(SCA)NOUTheVAXSourceCodeAnalyzer(SCA)isasourcecodecross-RO referenceandstaticanalysistoolthatisusedtoaidyouinHO understanding large-scalesoftwaresystems.+SCAisinte-IO^gratedwiththeVAXLanguage-SensitiveEditor(LSE),butUOcanalsobeused,inareduced capacity,attheDCLlevelasaQO standalonetool.(Ineithercase,SCA librariesarecreatedand?Ohanalysisdatafilesloaded,usingSCA commands.o1EEOFordetailsaboutLSEandSCArefertoAppendixG.2ZAO8.2BTutorialTerminal Input/OutputPackage(TUTIO)FOU TUTIO.R32isaBLISSREQUIREfilethatcontainssomeIOsimpleterminalI/O primitives.+ThispackageisnormallyMOusedin conjunctionwiththeBLISS self-pacedstudycourse,O^asoutlinedinthe^ BLISSPrimer,^,butcanalsobeusefulforMOwritingshort miscellaneous programs.(TogainaccesstotheNOelementsofthispackage,insertthe followinglineinyourOhBLISSprogram:'tREQUIRE%'SYS$LIBRARY:TUTIO';3POAlistofthese primitivesandtheir functionsappearsbelow.HOThe following conventionsareusedinthe descriptions:4Kchar (character)'(len(lengthin characters)!addr(memoryaddress)value (integer)2radix (integer)5  ` = TTY_PUT_CHAR(char);-writesa charactertothe( terminal. ` Achar=TTY_GET_CHAR( );-readsa characterfromthe terminal. ` D TTY_PUT_QUO('quotedstring');-writesaquotedstringtothe terminal. `W DW TTY_PUT_CRLF( );-writesacarriage return/linefeed&sequencetothe terminal. `/ C/ TTY_PUT_ASCIZ(addr);-writesanASCIZstringtothe terminal. ` ? TTY_PUT_MSG(addr,len);-writesastringofASCII(` characterstothe terminal. ` ?TTY_PUT_INTEGER(value,radix,len);-writesaninte-!8gertothe terminal. ` >n= TTY_GET_LINE(addr,len);-readsalinefromGtheterminalintoabufferandreturnsthenumberofh charactersread.6LOTheTUTIOpackage functionsonlywitha terminal;itdoesGOnotworkfromabatchjoborcommand procedurefile. 7! /O8.3BVMSSystemServices InterfaceMOUSystemservicesare proceduresusedbythe operatingsystemSOtocontrol resources availableto processes,toprovideforcom-KO municationamong processes,andtoperformbasic operatingPO^system functions,suchasthe coordinationof input/outputop-KO erations.)Althoughmostsystemservicesareused primarilyOObythe operatingsystemitselfonbehalfof logged-inusers,KOhmanyare availableforgeneraluseandprovide techniques9Othatcanbeusedin application programs.p8 FPOTheBLISS interfacetotheVMSsystemserviceroutinesisin?OSYS$LIBRARY:STARLET.REQorSYS$LIBRARY:STARLET.L32.LO5Theprimaryfunctionofthe interfaceisto guaranteetheJOpropernumberandsequenceof argumentsrequiredforthe!Osystemservicecalls. 9HOWiththeBLISS interfacemacros,thesyntaxforinvok-JOingsystemservicesinBLISSisalmost identicaltotheFO5VAXMACROkeywordsyntax.(Themajor difference(asideLOfromthefactthatBLISS expressionsappearintheparam-QOeterlist)isthatBLISSrequiresthemacro parameterlisttoNO>beenclosedin parentheses.* (FollowingisanexampleoftheO BLISS-styleusage.):!qIOTousethe interface,includethe following declaration:(tLIBRARY%'SYS$LIBRARY:STARLET'; POSystemservicesactlikeroutinecallsandreturna conditionPOvalueastheirresult.'The followingcodefragmentchecksfor;O5 successful completionofthesystemservice:#tIF%STATUS=$WAITFR(EFN=1)tTHEN I...I !successful&waittELSE!invalid&event&flag0 SIGNAL(.STATUS);K!pass&back%failure<HOFordetailed informationon available services,seethe O V5} AX/VMSSystemServices ReferenceManual ."=l >O8.3.1BSampleProgramUsingVMSSystemServicesQO4Theprogramshownbelowprintsthetimeofdayattheuser'sGO terminal.-Itshowstheuseofsystemservices$GETTIMEOand$FAOandofthecommonrun-timelibraryroutineO=LIB$PUT_OUTPUT.LtMODULE&SHOWTIME(IDENT='1-1'& %TITLE'Print%time',%MAIN=TIMEOUT)=t BEGINGtRLIBRARY%'SYS$LIBRARY:STARLET';!%Defines&System%Services tOWN TIMEBUF:& VECTOR[2],!J!%64-bit&system%time# KMSGBUF:%VECTOR[80,BYTE],$JK!%Output&message%buffer> MSGDESC:& BLOCK[8,BYTE]%PRESET(%[DSC$W_LENGTH]=80,![DSC$A_POINTER]=MSGBUF)t#BINDJ kFMTDESC=%ASCID& %STRING('At&the%tone,%the%time%will&be&', 4 %CHAR(7),&'!15%T'%);tEXTERNAL%ROUTINE4 CLIB$PUT_OUTPUT:%ADDRESSING_MODE(GENERAL);tROUTINE%TIMEOUT= BEGIN <LOCALRSLT:%WORD;&j!% Resultant&string%lengthI $GETTIM(&TIMADR=TIMEBUF&);!%Get&time%as%64-bit&integer! w$FAOL(%CTRSTR=FMTDESC,jw!%Format& Descriptor OUTLEN=RSLT,0j!% Resultant&length%(only%a&word!) OUTBUF=MSGDESC,'j !%Output&buffer% descriptorDO PRMLST=&%REF(TIMEBUF));p!%Addr%of%64-bit%time%block   MSGDESC[0]%=%.RSLT;'j !%Modify&output% descriptor8  LIB$PUT_OUTPUT(%MSGDESC&)!%Return&status ' END;to END&ELUDOM^>4?OIntheSHOWTIMEexample,LIB$PUT_OUTPUTispartJOoftheVMSRTL shareableimage;assuchitis referencedDO5byGENERAL addressing.*Thecallon$FAOLuses%REFMOtomakethePRMLSTvaluetheaddressofapointertotheOTIMEBUFbuffer.3?  determinatevalue.( Consequently,whenthefull32-bitvaluePOisusedratherthanjustthe16 low-orderbits, unpredictableOresultsoccur.CeJOYoushouldguardagainstthisproblemincallstootherOsystem services.)O i$0OExample8-1:7SampleTPARSEProgramRtBMODULE&CREATE_DIR(%TITLE&'Create% Directory&File'&IDENT&=%'X0000',MAIN=CREATE_DIR)&=tBEGIN t;!+ t!Yt!%This&is&a%sample&program%that%accepts&and%parses%the&command%line0t!%of%the%CREATE/DIRECTORY%command.&NEQ%0&OR1o/ !&UIC% components&are%16%bits&only$zw .UIC_MEMBER<16,16>%NEQ%0  THEN!RETURN%0;0 p!UIC_OWNER<0,16>%=&.UIC_MEMBER<0,16>;0 !UIC_OWNER<16,16>%=%.UIC_GROUP<0,16>; "1 H"END;t"ROUTINE% STORE_NAME= t"!1tA#!%Store%a& directory%name& component t#! #BEGIN $BUILTIN a$AP; $MAP!$AP:REF% BLOCK[,BYTE];3 Z%IF& .NAME_COUNT&GEQ%3&THEN%RETURN&0;'tZ%!%Maximum&of&3% componentsO %DIRNAME[.NAME_COUNT,0,0,32,0]&=%.AP[TPA$L_TOKENCNT];%!%Store%theO %&DIRNAME[.NAME_COUNT,1,0,32,0]&=%.AP[TPA$L_TOKENPTR];%!J descriptor+ m& NAME_COUNT%=% .NAME_COUNT%+&1;m&!%Set%to%next&!Jfree%slotO 'IF&.AP[TPA$L_TOKENCNT]%GTR&9%THEN%RETURN%0;K!%Name%too%long[Q, 1 1 fEND;tROUTINE% MAKE_UIC= BEGIN _BUILTIN AP; MAP!7AP:REF% BLOCK[,BYTE]; OWN0 UIC_STRING:VECTOR[CH$ALLOCATION(6)];) 0IF&.UIC_GROUP<8,8>%NEQ%0%OR+0!%Check%UIC&for%byte&values,"zx.UIC_MEMBER<8,8>%NEQ&0*x!Ksince&UIC%type& directories THEN,!Kare% restricted&to&this%formRETURN%0;- qDIRNAME[0,1,0,32,0]%=% UIC_STRING;&q!%Point%to%string&buffer+ $FAOL(%CTRSTR=UPLIT(6,'!OB!OB'),,!%Convert%UIC%to%octal%stringOUTBUF=DIRNAME,IPRMLST=UIC_GROUP) END;!t%SBTTLK'Main%Program'tdROUTINE% CREATE_DIR= t!+ t!Xt;!%This&is&the%main&program%of%the&CREATE/DIRECTORY%utility.%It%gets`t!%the%command%line&from%the&command% interpreter%and&parses%it%with&TPARSE. t!t !--- [ BEGIN  !L  !%Call%the%command% interpreter%to%obtain%the&command%line 3 !+ { SYS$CLI(& REQ_COMMAND,%0,%0&);  !T F !%Copy%the%input%string& descriptor%into%the%TPARSE&control%block\  !%and&call% LIB$TPARSE.%Note%that&impure%storage&is&assumed%to%be%zero.  !G  TPARSE_BLOCK[TPA$L_STRINGCNT]&=%.REQ_COMMAND[CLI$W_RQSIZE];G f TPARSE_BLOCK[TPA$L_STRINGPTR]&=%.REQ_COMMAND[CLI$A_RQADDR];E  IF&NOT% LIB$TPARSE(% TPARSE_BLOCK,& UFD_STATE,%UFD_KEY%)  THEN_ RETURN% SS$_ABORT;  !" !%Parsing%is%complete X!.J!%Process%the%command%to%create)J!%the& appropriate& directory./0RETURN% SS$_NORMAL/xEND;6Jx!%Return&Success%to%command% interpretertEND&ELUDOMD)6O8.4BRecord ManagementServices InterfaceDOUVAXRecord ManagementServices(VAXRMS)isacol-QOlectionoffileand record-levelI/OroutinesthatenableuserJOprogramstoprocessandmanagedatafiles.+AlsoincludedNO^asapartofVAXRMSisasetofBLISSmacro definitionsQOthat facilitatecontrolblockinitializationandthecallingof&OVAXRMScontrol routines.,E CORMS definitionsappearinSYS$LIBRARY:STARLET.REQorDOSYS$LIBRARY:STARLET.L32.)Forageneral descriptionof*O5VAXRMS programming,seethe!5 VAXRecord Management%O Services ReferenceManual .F Mq(O8.4.1BUsingVAXRMSMacrosIO4 STARLET.REQprovidesthreetypesofVAXRMS definitions:G @M`1.:Field definitionsand constantsusedinVAXRMScontrol(blocksJ`2.:Staticanddynamiccontrolblockinitializationmacros5`'3.:VAXRMS routine-callkeywordmacros HNHOMacrosfordefiningFAB,RAB,andXABblocksarepro-MOvided.)EachcontrolblockhasmacrosforstaticordynamicMO5initializationandfor uninitialized structures.'Forexample:I sO$FAB5Akeywordmacroforstatic definition.O]$FAB_OINITD]Akeywordmacroforrun-timedynamicinitialization.O$$FAB_OqDECLI$AsimplemacroforFABsthatrequirenoinitialization.Mq Typically,thisisusedtomap attributesontoa routine'sformal parameter.TJ! *POKeywordsforthesemacrosare identicaltothoseusedbytheIOVAXRMSMACRO interface,exceptforthosekeywordsthatPO5expecta64-bitvalue.'Thesekeywordsarehandledas``key0''AOand ``key1'',eachofwhichhasa32-bitvalue.K 1O8.4.2BSampleRoutineUsingVAXRMSIO4The followingsampleprogram illustratestheuseofthe@OVAXRMSmacros.0TheprogramopensafilenamedFO MYFILE.SRCandcopiesittoafilenamed MYFILE.LIS.PtiMODULE&RMSTEST(IDENT='1-1'%%TITLE'BLISS--RMS%Example',MAIN=COPYIT)=tBEGIN t!++OtA!%Sample%program%showing&use%of% BLISS/RMS-32% Interface&Macros t!--)tLIBRARY%'SYS$LIBRARY:STARLET';(J!%All& definitions&are%here t:OWNG MYBUF:VECTOR[CH$ALLOCATION(132)],p!&Input&record%buffer( INFAB:J$FAB(FNM='MYFILE.SRC',!&Source%FAB3 FAC=GET),H OUTFAB:%$FAB(FNM='MYFILE.LIS',%RFM=VAR,%!& Destination&FABRAT=CR,& FAC=PUT),+ NINRAB:J$RAB(UBF=MYBUF,&USZ=132,'N!&RAB%def'n:%Locate&Read,?ROP=,% FAB=INFAB),%!&and% Multibuffer%I/OJ OUTRAB:% $RAB(ROP=WBH,% FAB=OUTFAB);!&on&input&and%output.tGROUTINE%COPYIT= BEGIN LOCAL0zSTS;!&RMS%service-completion%code5 $OPEN(% FAB=INFAB%);!%Open%input%file;  $CONNECT(% RAB=INRAB%);K!%and& associate%RAB.C  $CREATE(& FAB=OUTFAB%);K!%Create&a%new&output%file? `  $CONNECT(% RAB=OUTRAB&);&!%and& associate%a&RAB.  !+;  !%Copy%loop.%Read&records%from%input%untilQ 8 !%EOF&or&error& encountered.%Write%each&record%as%it%is%read.  !---2  WHILE&(% STS=$GET(& RAB=INRAB%)&)%DO BEGINKW OUTRAB[RAB$L_RBF]%=%.INRAB[RAB$L_RBF];K!%Copy%record%descr.K OUTRAB[RAB$W_RSZ]%=%.INRAB[RAB$W_RSZ];K!%to%output&RAB%and $PUT(% RAB=OUTRAB%)  !%write%the&record./ END;6  $CLOSE(% FAB=INFAB&);!%Close%the&input9  $CLOSE(% FAB=OUTFAB%);p!%and&output%files.@ I IF&.STS%EQL&RMS$_EOF!%Check%for&EOF%on%input  THEN  SS$_NORMAL2 !%Tell%System% everything%is%OK,%or !ELSEi.STS-i!%Return&the%RMS%error%status. END;tEND&ELUDOML no%O8.5BOtherVMS InterfacesJOUTwootherVMS interfaces(LIBandTPAMAC)are available.MmO8.5.1BLIB InterfaceDO4LIB.L32containsinternal interfacesbetweenBLISS-32HOandtheVMS operatingsystemaswellas everythinginEO STARLET.L32.-MuchofLIBisnormallyusefulonlytoFO=an operatingsystem programmer.+Mostusersshoulduse7OSYS$LIBRARY:STARLET.L32,asubsetofLIB.NV^"O8.5.2BTPAMAC Interface?O4 TPAMAC.REQprovidesBLISSmacrosfor LIB$TPARSE,JOa finite-state transitionparser.*Thesampleprogrampre-OsentedinExample8-13closely parallelstheexampleinthe O= V@}= AX/VMSRun-TimeLibraryRoutines ReferenceManual ~=.*NOOR.&O9.2BLISS-32!Code!ExamplesIOdThischapterprovidesusefulexamplesofBLISS-32codingGO techniques.,Theseexamples demonstratetheuseofmany$OBLISSlanguage features.5U3S  /O9.1BExample1:'TheALPHAProgramMOUThisprogrampromptstheuserforalineoftext,removesMOallbutthe uppercase charactersfromtheline,thenrear-KOrangesandprintsthe uppercase charactersin alphabeticalOO^order.(The algorithmschosenarenotoptimal,buttheyserveJOto demonstrate recommendedstyle.(TheprogramconsistsofBOtworoutines (SORT_CHARSand ALPHA_SORT)andthreeOhincludedfiles.jT@@OTheALPHAprogramusesthe following facilities:U@ ` 9TUTIO-TutorialTerminal Input/OutputPackage `O /O CELPKG-Cell Manipulation Primitives ` 8VMS RTL-Memory ManagementRoutines(called'withinCELPKG)'V! LONotethattheALPHAmoduleis transportablebuttheTUTIOLOandCELPKGpackagesarenot.'TUTIOexistsfortargetsys-LO5temsotherthantheVAX,whileCELPKGcanbewrittenforOothersystems.sWIIOThe followingstepsareusedtoruntheALPHAprogram:X0 \C`1.:ProducealibraryfilefortheCELPKGprogram: U$DUBLISS%/LIB&CELPKG+`2.:CompiletheALPHAprogram: Y$DYBLISS%ALPHA(`3.:LinktheALPHAprogram: ]$D]LINK&ALPHA'`4.:RuntheALPHAprogram: a$DaRUN%ALPHAM`5.:Asanexample,respondtotheinputpromptasfollows:eINPUT:6e,12P4E6IQOY-='asFgjkW;'{ZXCBNM<>?ASDVRGHJKLTU z, z.M cRET .M z{+!OUTPUT:ABCDEFGHIJKLMNOPQRSTUVWXYZINPUT:   M&CTRL/C M    C$Y JOThe followingsectionscontainthe annotatedALPHAmodule5Oandthe cell-handlingpackage (CELPKG).8 Z` O9.1.1BModuleALPHAFt#MODULE&ALPHA&(%IDENT%=%'x1-1',& %TITLE'Sample%Program'kMAIN=ALPHA_SORT%)&=tBEGIN t!++'td!% FACILITY:Sample%Program t!t!% ABSTRACT: t<!It!This&sample%program&prompts%you&for%a&line%of%text,Gt!removes&all%but% uppercase& characters%from%the%line,Ft!and%prints&the% uppercase% characters%in% alphabeticalIt\!order.%The&program%is% terminated%by%a&blank&line%or t!a& Control-C%(^C). t!t3!% ENVIRONMENT: t{! t!-- t-!+!tu!%TABLE%OF% CONTENTS: t!-t&FORWARD%ROUTINE n SORT_CHARS,Dn!%Does&sorting  ALPHA_SORT;D!%Main&routine t!+tg!%INCLUDE&FILES: t!-t LIBRARY% 'CELPKG'; 6 1 < !% Interface%to%cellD` !%package5t  %BLISS32(&LIBRARY%'SYS$LIBRARY:STARLET';)  2't2 REQUIRE%'SYS$LIBRARY:TUTIO'; 2 3 t !+t !%EQUATED&SYMBOLS: t+ !-t LITERAL  TRUE=  1, $ FALSE=0, l LINE_BUFF_SIZE=J133; `l 4 t !+t !%OWN%STORAGE: te !- t OWN 7HEADER: HEADER_STR&PRESET(&[FLINK]%=%HEADER,[BLINK]%=%HEADER,%[SIZEF]%=% HEADER_SIZE%), 5< y LINE_BUFF:K&VECTOR[CH$ALLOCATION(LINE_BUFF_SIZE)]; y6 1>UseaLIBRARY declarationtoinclude GET_CELL,9V REL_CELL, INS_CELL, REM_CELL,andtheCELLdata structure. .2G.If BLISS-32,useaLIBRARY declarationtoincludetheD definitionof SS$_NORMAL.Thisisusedbythemain*routineasthereturnvalue. ^3G^UseaREQUIRE declarationtoincludetheterminalI/O functions. 64O6Limittheinputlinelengthto132andsetthebuffersize<one characterlongertodetectlongerlines. 5JAllocateand initializealistheaderinstaticstorage. 6&Allocatethelinebuffer. _UNote _IInallthree declarations,thefiletypeisallowedtoIhaveadefault.(This simplifiesthewritingofportableEH software,becausethecompilersearchesfor language-D dependent extensions(suchas.R32)before searchingfor.REQ. D [ (e $O9.1.2BRoutine SORT_CHARS0t#ROUTINE% SORT_CHARS&(LEN,&CH_PTR)%= t!++%t!% FUNCTIONAL& DESCRIPTION: t!Gtd!The&input&to&this%routine%is%a& character% sequence,Bt! identified%by%LEN%and&CH_PTR.%All& non-uppercaseFt! alphabetic% characters&are%removed&from%the&sequenceHt<!and&the% remaining% characters%are%put&in& alphabeticalMt!order.&The% resulting%sequence%is%placed&in&the% characterKt!data%segment& originally%occupied%by%the&input& charactert! sequence. t\! t!%FORMAL% PARAMETERS: t!5t3!LEN-&Length%of% character% sequence.:t{!CH_PTRK-& Character%pointer&to&the%first t!" character%in% sequence. t !tS!%IMPLICIT%INPUTS: t!t!NONE t+!ts!%ROUTINE&VALUE: t!=t!Length&of&the% resulting% character& sequence. tK!t!%SIDE&EFFECTS: t!At# !The&storage%pointed%to%by%CH_PTR%is% modified. tk ! t !--  BEGIN d LOCAL  CHAR_PTR,"J !%A% character%pointer<  CURRENT_CELL:pREF& CELL_STR;p!%A%cell&pointer ] CHAR_PTR&=%.CH_PTR; ] 1(  INCR%I%FROM&1%TO%.LEN%DO  2 BEGINV LOCAL4 CHAR;J !%A% characterA CHAR&=%CH$RCHAR_A(CHAR_PTR);!%Read% character%andJO !%advance%pointer7 IF%.CHAR%GEQ%%C'A'%AND&.CHAR&LEQ%%C'Z' p 3THEN4HBEGIN4LOCAL5CELL:pREF& CELL_STR;p!%A%cell&pointer.*4A CURRENT_CELL&=%.HEADER[FLINK]; A404UNTIL% .CURRENT_CELL%EQLA&HEADER%DO p5BEGIN/[IF&.CURRENT_CELL[VALUEF]%GEQ%.CHARTHEN_ EXITLOOP; 6/3 CURRENT_CELL%=&.CURRENT_CELL[FLINK]{END;'4CELL%=&GET_CELL(CELL_SIZE); k7!4, CELL[VALUEF]&=%.CHAR;44t INS_CELL(&.CELL,%.CURRENT_CELL[BLINK]%) 4END%END; CHAR_PTR&=%.CH_PTR; 8 UNTILB@REM_CELL% (CURRENT_CELL&=%.HEADER[FLINK])&EQL%EMPTYK DO 9BEGIN;9 CH$WCHAR_A(%.CURRENT_CELL[VALUEF],&CHAR_PTR&); 910!REL_CELL(.CURRENT_CELL)END;& 2CH$DIFF(.CHAR_PTR,%.CH_PTR) @211 zEND;Jz!End%of% SORT_CHARS 1H InitializeCHAR_PTRtopointtofirst characterinse-Wquence. 2QInthisloop,getacellforeach uppercase characterintheO/sequenceandinsertthecellinadoublylinkedlistsorted by charactervalues. 3+Testfor uppercase characters. 4C Initialize CURRENT_CELLtotheaddressofthelistheader. ^5I^MoveforwardthroughthelistofcellsuntilyoureachQthelast.'Thelastcellis recognizedbyitsforwardpointer,5whichpointsbacktothelistheader.\! ]FbNotethattheEQLAoperator (although synonymouswithFEQL)isusedtoremindthe programmerthat addressesarebeing compared. 6RIfthe charactervaluestoredinthiscellisgreaterthanorOequaltothelast charactervalueread,exittheloop.((YouDDwanttoinsertthenew characterbeforethisone.);]! mDbNotethatifthelooprunsto completion,!andthe:EXITLOOPisnever executed, CURRENT_CELLisNleftpointingtothelistheader.* InsertingbeforethelistLlheaderis equivalentto insertingattheendofthelist(desired behavior). D7JDGetacellfromheapstorage,storethe charactervalueKthere,andinsertthecellbeforetheonepointedtoby CURRENT_CELL. t8HtResetCHAR_PTRtopointtothefirst characterinthe sequence. L9OLForeachcellinthe doubly-linkedlist,writethe characterAintothe charactersequenceanddeletethecell. $10<$Writethe characterandadvancethepointer. 11GComputethelengthofthe resulting charactersequenceObythe differencebetweenthepointertothefirst character9Tpositionandthenextonetobewritten.H^f Y$O9.1.3BRoutine ALPHA_SORTt#ROUTINE% ALPHA_SORT= t!++%t!% FUNCTIONAL& DESCRIPTION: t!Ltd!Main%routine&of&program.&Loops&until&a%null%input%line+t!is%read%from&the% terminal. t! t<!%FORMAL% PARAMETERS: t!t!NONE. t!t\!%IMPLICIT%INPUTS: t!t!NONE t3!t{!%ROUTINE&VALUE: t!)t !Return& SS$_NORMAL%to%VMS.FtS!Return&0%to%other% environments&(value%is% ignored). t!t!%SIDE&EFFECTS: t+!ts!NONE t! t!-- lBEGIN LABEL LOOP_BODY; e WHILE&TRUE%DOt  LOOP_BODY: BEGIN= LOCAL4 LEN;J !%Number&of&charsJ !%in%line%buffer 6 TTY_PUT_QUO('INPUT:'); 6 1?~ LEN%=% TTY_GET_LINE(& LINE_BUFF,%LINE_BUFF_SIZE%);: IF%.LEN&EQL%0&THEN% EXITLOOP;!%EOF&exit.'P IF%.LEN&EQL%LINE_BUFF_SIZE THEN4 BEGIN4( TTY_PUT_CRLF();74p  TTY_PUT_QUO(&'Input%line&is&too%long.');4 TTY_PUT_CRLF();4LEAVE% LOOP_BODYJ!%Exit%block%but4HEND;JH!%continue%looping.;LEN%=% SORT_CHARS(%.LEN,%CH$PTR(LINE_BUFF)%); P2!TTY_PUT_QUO('OUTPUT:'); @3,b TTY_PUT_MSG(% LINE_BUFF,%.LEN&);TTY_PUT_CRLF()END;!J!%End&of&main%loop. [%IF%%BLISS(BLISS32) %THEN SS$_NORMAL 3%ELSE {0 %FI  END; J !%End&of& ALPHA_SORT ttENDJt!%End&of&moduletELUDOM A1APromptforinput. 2Sort characters. @3@Printoutput.h _ m> 'O9.1.4B Cell-HandlingPackage*tD%TITLE&'Cell-Handling&Package' t!++.t!% FACILITY: CELL-HANDLING%PACKAGE t=!t!% ABSTRACT: t!Mt!This%package&contains&macros%to%create%and&delete%cells,It]!as%well%as%to%insert%cells%on%and&remove%them&from"t! doubly-linked%lists. t! t5!t}!% ENVIRONMENT: t!Jt !The&VAX%Common%RTL&routines& LIB$GET_VM%and& LIB$FREE_VM:tU!are&used%to%get&and%free&heap%storage. t!Lt!The&VAX-11%hardware%queue% instructions%INSQUE&and%REMQUENt-!are&used%to%insert&and%delete%cells%from%lists.KSee%the7tu!VAX& Architecture%Handbook%for%details. t! t!-- tn!+!t!%TABLE%OF% CONTENTS:Dt!GET_CELLpAllocate%a&cell%and&return%its%address.+tE!REL_CELLp Deallocate&a%cell.4t!INS_CELLpInsert%a%cell&in&a%list.Et!REM_CELLpRemove%a%cell&from%a%list&and%return%a t !  completion&status. te !- t !+t !%EQUATED&SYMBOLS: t^ !- t !+,t !Values&returned&by& REM_CELL. tW !Dt !N.B.%That&the%values%are& carefully%chosen%to%beFt ! identical&with%those%returned%by%the&VAX-11%REMQUEt/ !builtin% function. tw !-t LITERAL3  EMPTYK=3,!%List&was%already&emptyB O LASTK=2,!%Last&element%removed,%list%now%empty@   NOTLASTK=p0;!%Element&removed,&but%more&remain t!+"tH!%EXTERNAL% REFERENCES: t!-tEXTERNAL%ROUTINE 12 b LIB$GET_VM%:%ADDRESSING_MODE(GENERAL),3  LIB$FREE_VM&:%ADDRESSING_MODE(GENERAL); t!+/t[!JCell%Data& Structure% Definitions [2 t!-t FIELD v 3 U COMMON_FLDS= SET#FLINK=K[0,%0,%32,%0],!% Successor&pointer#,BLINK=K[1,%0,%32,%0],!,!% Predecessor%pointer"tSIZEF=K[2,%0,%16,%0](t!%Cell%size&(in% fullwords)TES;t%FIELD$ mVALUEF=[2,%16,%8,%0];m!%Value%parttLITERAL  HEADER_SIZE= 3,!%Size%of%a&list-Ofheader  CELL_SIZE= 3;'!%Size%of%a&cell%on%the!%listt`MACRO v`4A  HEADER_STR=&BLOCK[HEADER_SIZE]%FIELD(COMMON_FLDS)%%,F  CELL_STR=pBLOCK[CELL_SIZE]%FIELD(COMMON_FLDS,&VALUEF)%%; t1@tVMSCommonRTL routines;GENERALisrequiredto1getposition independent references. L2DLDefiningadata structureusingFIELD,LITERAL,and@MACRO declarationsisthe recommended programming technique. }3B}Declarenamesforthefieldsandsizesofcells. 4LDeclaremacrosfor statically allocatingcellsandmaptheDT appropriate structureon dynamically specifiedcells.`! ,?bNotethatyoucan reference COMMON_FLDS(FLINK,NBLINK,SIZEF)forthingsdeclaredaslistheadersorcells;Bbutyoucan referencetheVALUEFonlyforcells.a=  O9.1.5BMacroREL_CELL&t#MACRO% REL_CELL(&CELL%)%= t!++%t!% FUNCTIONAL& DESCRIPTION: t!Etd! Deallocates%storage%for%the&cell%at%the& specified>t!address,% returning&the%storage&to&the%heap. t! t<!%FORMAL% PARAMETERS: t!+t!CELL-&Address%of%a%cell. t! t\!-- BEGIN  BIND$UC&=%(CELL)&:% CELL_STR; U1G  LIB$FREE_VM(%%REF(% .C[SIZEF]%*%%UPVAL%),%%REF(%C%)&) 2 'END%%;'!&End%of%REL_CELL 1MDeclareCasanameboundtotheaddressofacell,and' associateCELL_STRwithC.Ab! PbNotethattheaboveisdonefortworeasons:'First,toper-Kmitastructured-referencetotheSIZEFfieldandsecond,Ftocause side-effectsintheargumentpassedtoREL_FlCELLtooccuronlyonce.+Forexample,ifthemacro-Bformalwastwice referencedandthemacroinvoked:withREL_CELL(REM_CELL(.HEADER)),thenREM_EvCELLwouldremovetwocells,whileREL_CELLreleased/memoryforonlythesecondcell.4c!  KbNotealsothatitisgood programmingpracticetoparen-"thesizemacroformals. :2F:CalltheVMSRun-TimeLibraryroutinetoreleasetheL appropriatenumberofbytes (addressableunits)ofstorage.d 6GbNotethatthe argumentsarepassedby referenceusingH%REF.ThefirstargumentistheaddressofafullwordN containingthesize(in addressableunits)ofthedataseg-Hlmenttobe released,whilethesecondargumentistheKaddressofafullword containingtheaddressofthedata$segmenttobe released.e ,FbThesize(infullwordunits)is multipliedby%UPVALP(unitspervalue)toconverttoasize specifiedinaddress-ableunits. fA V  O9.1.6BMacroINS_CELL7t#MACRO% INS_CELL(& THIS_CELL,% PREV_CELL&)%= t!++%t!% FUNCTIONAL& DESCRIPTION: t!Ftd!Insert&the%cell&whose&address%is% THIS_CELL&in&theGt! doubly-linked%list,%putting&it&after&the%cell&whose$t!address%is% PREV_CELL. t<! t!%FORMAL% PARAMETERS: t!t! THIS_CELL6-%Address%of%the%cell%to%be% inserted.t\! PREV_CELL1\-%Address%of%the%cell%after%which t!* THIS_CELL&is&to&be& inserted. t!t3!%SIDE&EFFECTS: t{!Ht!Fields&in& THIS_CELL,% PREV_CELL,%and%the& successor%to&t ! PREV_CELL&are% modified. tS! t!-- BEGIN LBUILTININSQUE;&!&VAX-11%Insert%Entry%in !&Queue& Instruction.0 EINSQUE(% (THIS_CELL),& (PREV_CELL)&); kE1 END%%;!&End%of%INS_CELL 3 1J3 The semicolonispresentheretocausethemacrotobeG  effectivelyNOVALUE.AnyattempttousethismacroinK avalue-requiredcontextwillcausethecompilertoissue!= a diagnosticmessage.)g @  O9.1.7BMacroGET_CELL&t#MACRO% GET_CELL(&SIZE%)%= t!++%t!% FUNCTIONAL& DESCRIPTION: t!Ltd! Allocates&storage%for&a%cell%of%the% specified&size%andJt! initializes%the&forward%and&backward&pointers&to&pointt!to%the&cell. t<! t!%FORMAL% PARAMETERS: t!Lt!SIZE-&Size%of%cell%(number&of& BLISS--values%in%cell). t\!t!%RETURN%VALUE: t!/t3!Address%of%the%CELL% allocated. t{! t!-- -BEGIN uLOCALCELL:pREF% CELL_STR;9 & LIB$GET_VM(& %REF((SIZE)&*%%UPVAL),%CELL%); p&1  CELL[FLINK]&=%.CELL;  CELL[BLINK]&=%.CELL;!  CELL[SIZEF]&=%(SIZE); `2 .CELL END%%;J!%End&of&GET_CELL v 1Bv CalltheVMSRun-TimeLibraryroutinetoallocateG the appropriatenumberofbytes (addressableunits)of' storage.h 6HbNotethatasin REL_CELL,the argumentsarepassedbyI referenceusing%REF.ThefirstargumentistheaddressNofafullword containingthesize(in addressableunits)ofKlthedatasegmenttobe allocated,whilethesecondargu-Nmentistheaddressofafullwordwhosecontentissetto:theaddressofthedatasegment allocated.Wi -FbThesize(infullwordunits)is multipliedby%UPVALP(unitspervalue)toconverttoasize specifiedinaddress-ableunits. 2GNotethatifthemacroformalSIZEwasnot parenthe-Isized,thecall GET_CELL(.X+1)wouldresultina)Dsize computationof.X+1 P*!D%UPVAL.For BLISS-32,J%UPVALhasavalueof4;thusthesize requestedwould0be.X+4andnot(.X+1) * 4.j  O9.1.8BMacroREM_CELL+t#MACRO% REM_CELL(& THIS_CELL%)&= t!++%t!% FUNCTIONAL& DESCRIPTION: t!Itd!Remove&the% specified%cell%from&its%list.%Its%forwardIt!and&backward&pointers&are%left&pointing&to&the%cell. t! t<!%FORMAL% PARAMETERS: t!t! THIS_CELL5-%Address%of%the%cell%to%be%removed. t!t\!% COMPLETION&CODES: t!t!EMPTYK2-%List%was%empty,&no&cell%removed.t3!LASTK43-%List%now%empty,&last%cell%removed.t{!NOTLASTK6{-%List%not%empty,&a%cell%was%removed. t!t !%SIDE&EFFECTS: tS!Jt!Fields&in& THIS_CELL,%its& predecessor&and% successor%aret! modified. t+! ts!-- BEGIN $BUILTINlREMQUE;(l!&VAX-11%Remove%Entry%from !&Queue& Instruction.  LOCALe TEMP;+e !& Temporary%for%entry%removed !&from%QUEUE.( 8 REMQUE(% (THIS_CELL),&TEMP%)  END%%; !&End%of%REM_CELLIgkw=.O9.2BExample2:'TheCALCProgramJOUThisprogramacceptsasimpleinteger expressionforba-OOsic calculationto demonstratetheuseoferrorrecoveryandGOparse/calculate routines..Theprogramconsistsofseven/O^routinesandthreeINCLUDEfiles.il??OTheCALCprogramusesthe following facilities:m ` + STARLET-Forsystemtrapvalues `O 0OTUTIO-TutorialTerminalI/OPackage ` -CONDIT-ConditionhandlingroutinernHHOThe followingstepsareusedtoruntheCALCprogram:Yor/*`1.:CompiletheCALCprogram: U$DUBLISS%CALC'`2.:LinktheCALCprogram: Y$DYLINK&CALC&`3.:RuntheCALCprogram: ]$D]RUN%CALC-CALC:%A% hierarchical% calculator.1Enter% expression%and% terminate&with15equal%sign%(=)%or%carriage%return./}An%empty%line%exits%the%program. CALC>F`4.:Examplesof responsestotheinputpromptfollow:CALC> 3*((2+4)/2)=RESULT:%9YCALC>pi bor:CALC>2*4/RESULT:%8wCALC>w $5 ql  "O9.2.1BModule CALCULATE6t#MODULE& CALCULATE%(MAIN%=& CALC_DRIVER)%= t!+t!JFUNCTION t!Etd! Demonstrate&the%use%of%the&ENABLE%function%to%doGt!error&recovery&by& implementing%a&simple% hierarchicalHt!integer% calculator%that&will%use&enable%routines%andJt<!the%UNWIND%feature%to%get%out&of&any%nested%routinesFt!and%prepare&to&parse/calculate%the%next% expression. t!t!JALLOWED%SYNTAX t\!It!The%standard%binary% functions& (+,-,*,/)%are% supported,Kt!as&are% parenthesized& expressions.%An%equal%sign&signalsMt3!the%end%of%the& expression.&Unary& functions%are,&however,Lt{!not% supported.&All%numbers&and%results&are% integers;%no?t!real%or%floating%point%numbers%are% accepted. t !;tS!Thus%the& following%are%legal% expressions: t! t! 3*((3+2)/2)= t+! +6= ts!+t!and%the% following&are%not: t! tK!K-3*4= t!3.4*6= t!t# !JEXIT% CONDITIONS tk !Jt !A%carriage%return,%CTRL/C,&or&a%CTRL/Y& terminates%thet !program. tC !-t BEGINt FORWARD%ROUTINE <  CALC_DRIVER,+< !%Unwinds&to&here%on%errors.M  MAIN%:%NOVALUE,!% Establisher%routine;%results&to& terminal.B  READEXPRESSION,!%Handles&addition&and% subtraction.   READTERM,4 !%Handles&multiplication&and% division. \  READFACTOR,3\ !% Dispatches&based&on&digit&or&"(".   READNUMBER,7 !%Convert&from%ASCII%digits&to&integer.K  READCHAR&:%NOVALUE,%!%Reads% characters&from%the& terminal. 3  CATCH_ERRORS;13 !%Handler&routine%for&all%signals.t BUILTIN  BICPSW,' !%Clear%bits&in&the%PSW. ,BISPSW;%,!%Set%bits%in%the%PSW.)tLIBRARY%'SYS$LIBRARY:STARLET'; @10tSWITCHES%LIST% (NOSOURCE,& NOOBJECT);+tGREQUIRE%'SYS$LIBRARY:TUTIO.R32'; G2 tREQUIRE% 'CONDIT.R32'; 3,tSWITCHES%LIST%(SOURCE,%OBJECT);t@LITERAL& END_OF_EXPRESSION&=%%C'=', CR&=%%O'15', TRUE%=%1;tLITERAL 49 INVALID_EXPRESSION%= STS$VALUE%(CODE%=&1),: MISSING_RIGHT_PAREN%=p STS$VALUE%(CODE%=&2),8 YILLEGAL_CHARACTER&= STS$VALUE%(CODE%=&3); tOWN  CURCHAR%:%BYTE;  5tsMACROK  IN_DIGITS%=&.CURCHAR&GEQ%%C'0'%AND%.CURCHAR%LEQ&%C'9'&%,I  IN_ADDING_OPS%=%.CURCHAR%EQL%%C'+'%OR%.CURCHAR%EQL&%C'-OK'&%,K  IN_MUL_OPS%=%.CURCHAR%EQL%%C'*'%OR%.CURCHAR%EQL&%C'/'&%; 1HSTARLETisrequiredforthePSL interruptvectormasks1pandtoprocesssystemtrapvalues. 22TUTIOcontainstheTTY_xxx routines. o3EoCONDITisrequiredtoprovidethe conditionhandlingmacros. G4;GTheLITERALSareuserdefinedsignalcodes. 5CCURCHARisthecurrent characterbeingactedupon.r ]%O9.2.2BRoutine CALC_DRIVER!t#ROUTINE% CALC_DRIVER%= t!+t!JFUNCTION t!Ftd!Prime&the%pump&by&reading%in%the&first& character.Ft!Provide%an% enclosing&routine%that%will&be&returnedBt!to&as&the%handler&routine% CATCH_ERRORS&unwinds. t<!t!JINPUTS t!t!NONE. t\!t!JOUTPUTS t!t3!NONE. t{!t!JIMPLICIT%INPUTS t !@tS!CURCHAR%-The&current% character&being&parsed. t!t!JIMPLICIT%OUTPUTS t+!ts!NONE. t!t!JROUTINE%VALUE tK!t! SS$_NORMAL t! t# !-  BEGIN 0 1?   TTY_PUT_QUO&('CALC:%A% hierarchical%calculator.');   TTY_PUT_CRLF%();C d  TTY_PUT_QUO&('Enter% expression%and% terminate&with');   TTY_PUT_CRLF%();E   TTY_PUT_QUO&('&equal&sign%(=)&or&carriage& return.'); <  TTY_PUT_CRLF%();A   TTY_PUT_QUO&('An%empty%line%exits%the% program.');.   TTY_PUT_CRLF%();K TTY_PUT_CRLF%();#   TTY_PUT_QUO&('CALC>%'); } READCHAR&();5  WHILE&.CURCHAR&NEQ%END_OF_EXPRESSION%DOO BEGIN MAIN&();#  TTY_PUT_QUO%('CALC>&');'READCHAR%()oEND; RETURN% SS$_NORMAL 2  END; 1KThiscodeprovidestheuser interfacetotheprogramand?callstheREADCHARroutinefor characterinput. }2@} SS$_NORMALreturnsnormalstatustothemonitor.cs 9O9.2.3BRoutineMAIN&tDROUTINE%MAIN&:%NOVALUE%= t!+t!JFUNCTION t=!@t!The%main&driver%routine&for%actual% expression@t!parsing,&prints%the%value%on%the&terminal&if@t!a% successful% calculation%takes%place%and%sets)t]!up&the% condition%handler. t!t!JINPUTS t5!t}!NONE. t!t !JOUTPUTS tU!t!NONE. t!t-!JIMPLICIT%INPUTS tu!t!CURCHAR%-1The%current% character%being%parsed. t!tL!JIMPLICIT%OUTPUTS t!t!NONE. t$!tl!JROUTINE%VALUE t!t!NONE tD !-  BEGIN  LOCAL= RESULT;  ENABLE  CATCH_ERRORS;  1(W RESULT%=%READEXPRESSION%();. IF%.CURCHAR%EQL%END_OF_EXPRESSION THEN  24P BEGIN%4  TTY_PUT_QUO% ('RESULT:&');.4 TTY_PUT_INTEGER& (.RESULT,%10,%1);4(  TTY_PUT_CRLF&() 4p END ELSE&4SIGNAL&(INVALID_EXPRESSION) HEND; 1=ENABLEthe CATCH_ERRORSroutinetohandleall%errors. 2JThiscodedisplaystheresultofthe calculationonthescreen.stf yI(O9.2.4BRoutineREADEXPRESSION$tDROUTINE%READEXPRESSION%= t!+t!JFUNCTION t=!Ft!Do&the%addition%and% subtraction%Terms.&The%bit%inEt!the%Program&Status%Longword%(that%allows%the&userJt!to&get%control&during%integer& overflow)%is%set%beforeEt]!the%actual%addition%and&cleared% immediately%after;Kt!if&overflow&occurs%here,%the%program%knows%what&to&dot!about&it.tV!JINPUTS t!t!NONE. t.!tv!JOUTPUTS t!t!NONE. tN!t!JIMPLICIT%INPUTS t! t&!=&CURCHAR&-The%current& character%being%parsed. tn!t!JIMPLICIT%OUTPUTS t!tE!NONE. t!t!JROUTINE%VALUE t !Ete !The%result%of%an%addition%to%or% subtraction%from6t !the%current&value&of&the% expression. t !- ^ BEGIN  LOCAL  EXPRVALUE;% W  EXPRVALUE%=&READTERM&();"  WHILE& IN_ADDING_OPS%DO BEGINP LOCAL4 ADDOP; ADDOP%=& .CURCHAR;I READCHAR%();% BISPSW%(%REF% (PSL$M_IV));  1  IF%.ADDOP%EQL&%C'+'CTHEN34 EXPRVALUE&=% .EXPRVALUE%+&READTERM&()ELSE44 EXPRVALUE&=% .EXPRVALUE%-&READTERM&();$bBICPSW%(%REF% (PSL$M_IV)) b2END;  .EXPRVALUE [END; 1&Turnoninteger overflow. `2'`Turnoffinteger overflow.zuA 1P"O9.2.5BRoutineREADTERMt#ROUTINE%READTERM%= t!+t!JFUNCTION t!Htd!Do&multiplication&and% division.%Turn%user&control%ofJt!overflow&on&and%off%as% required.&Division&by&zero%isEt!detected&by&the% hardware.%The&enable% mechanism%isGt<!called%and%routine% CATCH_ERRORS%(the%handler&routineIt!for%all%errors)%takes%control.%The%proper&message%isHt! displayed%and% unwinding&occurs%back&to&the% outermost$t!routine%(CALC_DRIVER). t\!t!JINPUTS t!t3!NONE. t{!t!JOUTPUTS t !tS!NONE. t!t!JIMPLICIT%INPUTS t+! ts!=sCURCHAR&-The%current& character%being%parsed. t!t!JIMPLICIT%OUTPUTS tK!t!NONE. t!t# !JROUTINE%VALUE tk ! t !9 Value%of%the% expression% calculated&through t !' multiplication%or% division. tC !-  BEGIN  LOCAL<  TERM_VALUE;(   TERM_VALUE%=% READFACTOR&();  WHILE& IN_MUL_OPS%DOV BEGIN LOCAL4 MULOP%:%BYTE;O MULOP%=& .CURCHAR; READCHAR%(); IF%.MULOP%EQL&%C'*'HTHEN4BEGIN%4BISPSW&(%REF& (PSL$M_IV));84  TERM_VALUE%=& .TERM_VALUE&*% READFACTOR%();$4hBICPSW&(%REF& (PSL$M_IV)) 4ENDELSE74@ TERM_VALUE%=& .TERM_VALUE&/% READFACTOR%()END;  .TERM_VALUE END;v C$O9.2.6BRoutine READFACTOR tDROUTINE% READFACTOR&= t!+t!JFUNCTION t=!Gt!If&the%current& character%is%an%ASCII%representationGt!of&a%digit,&then%call% READNUMBER&to&get%the%valueDt!of&the%number.&If&the% character%is%a%"(",&callFt]!READEXPRESSION&and%return%the&result%(The&value&of-t!the% parenthesized& expression). t!t5!JINPUTS t}!t!NONE. t !tU!JOUTPUTS t!t!NONE. t-!tu!JIMPLICIT%INPUTS t!@t!CURCHAR%-The&current% character&being&parsed. tL!t!JIMPLICIT%OUTPUTS t!t$!NONE. tl!t!JROUTINE%VALUE t!DtD !Value&of&a%number&or&a% parenthesized% expression. t !-  BEGIN! =  SELECTONE%.CURCHAR%OF  SET [%C'0'%TO%%C'9']:!4 RETURN& READNUMBER%();  1~ [%C'(']:4 BEGIN 6 24 LOCALV  FACTOR_VALUE;4 READCHAR%();.4  FACTOR_VALUE&=%READEXPRESSION%(); K 3"4O IF%.CURCHAR%EQL&%C')'4 THEN 6 4 BEGIN'READCHAR&();oRETURN% .FACTOR_VALUE END4ELSE 65'GSIGNAL%(MISSING_RIGHT_PAREN)4END; [OTHERWISE]:%4@SIGNAL&(illegal_character) F@6 TES END; U1@UAtthispointtheroutineisparsinganumber. 28Thenumberisa parenthesized expression. S3?S Determinethevalueoftheenclosed expression. 44 Determineifthe expressionislegal. R5ER Determineifthe expressionhasmatching parenthesis. 6FIssueamessageif something unexpectedhasbeenen-*tered.w K$O9.2.7BRoutine READNUMBER tDROUTINE% READNUMBER&= t!+t!JFUNCTION t=!Lt!Convert%a%string%of%ASCII%digits&to&an&integer%number. t!t!JINPUTS t]!t!NONE. t!t5!JOUTPUTS t}!t!NONE. t !tU!JIMPLICIT%INPUTS t!@t!CURCHAR%-The&current% character&being&parsed. t-!tu!JIMPLICIT%OUTPUTS t!t!NONE. tL!t!JROUTINE%VALUE t!>t$!Integer%value%of%a%string%of%ASCII%digits. tl! t!-  BEGIN e LOCAL#  NUM_VALUE%:% initial(0);  WHILE& IN_DIGITS%DO^ BEGIN ^ 1 LOCAL4 DIGIT%:%BYTE;'6 DIGIT%=&.CURCHAR&-%%C'0';%~ BISPSW%(%REF% (PSL$M_IV)); ~ 25  NUM_VALUE%=% .NUM_VALUE&*%10%+%.DIGIT;% BICPSW%(%REF% (PSL$M_IV));V READCHAR%() END;   .NUM_VALUE . END; 1I ConvertastringofASCIIdigitstoanintegernumber. 22*2Checkfortoobiganumber.Rx ("O9.2.8BRoutineREADCHAR*tDROUTINE%READCHAR%:&NOVALUE%= t!+t!JFUNCTION t=!Lt!Read%input%from%terminal%until%a& non-blank% character%isHt!found.%If%a&carriage&return%is%found,%call%that&ant!end-of-expression. t]!t!JINPUTS t!t5!NONE. t}!t!JOUTPUTS t !tU!NONE. t!t!JIMPLICIT%INPUTS t-!tu!NONE. t!t!JIMPLICIT%OUTPUTS tL!t!CURCHAR%-2The%current% character%to%be%parsed. t!t$!JROUTINE%VALUE tl!t!NONE. t! tD !-  DO BEGIN'= CURCHAR&=% TTY_GET_CHAR&(); IF%.CURCHAR%EQL%CR THEN'46 CURCHAR%=&END_OF_EXPRESSION 6 1 ~ END'  UNTIL&.CURCHAR&NEQ%%C'%';  2 K 15K EndoflineisalsoEND_OF_EXPRESSION. 2? Loopuntilanonblank characteris encountered. y z &O9.2.9BRoutine CATCH_ERRORSEtDROUTINE% CATCH_ERRORS%(sig:%REF&VECTOR,%mech,%enab)%= t!+t!JFUNCTION t=!Kt!This%is%the& condition%handler&for%all%expected%errors.Nt!Division&by&zero%is%detected%by%the&hardware&and%if%theOt!program%has&control%(via%the%proper&bit%set%in%the&PSL),Mt]!Integer%Overflow%is%also% detected.% Otherwise,%the%programJt!traps&out%without&enabling& condition% handling.%ExplicitMt!SIGNAL%calls%occur%for%all&other&detected& conditions%andHt5!an& appropriate&message%is% displayed&on&the% terminal. t}!Ot!After&the%user&has%been& notified,%an%UNWIND%is% signalled.It !The% establisher%routine&is&the%main&driver;% returningHtU!to&its%caller%sets%up%the%parsing%for%a% completelyt!new% expression. t!Kt-!The% rationale%for&having%all%detected%errors&unwind%isLt!that%routines%can&be&very%busy%calling&each%other,&andIt!"fixing%things&up"%on%the%fly&is& unreasonable.%Also,Lt&!once%an%error%occurs,%the%value%of%the& expression%thatMtn!caused%the%error%is% worthless;%thus,% continued%input%forKt!the% expression&is&refused%and&the%program&prepares&for#t!the%next& expression. tE!t!JINPUTS t! t ! SIG%- Signal&vector te !e MECH&-e  Mechanism&vector t ! ENBL&- Enable&vector t !t^ !JOUTPUTS t !t !NONE. t6 !t~ !JIMPLICIT%INPUTS t !t !NONE. tV !t !JIMPLICIT%OUTPUTS t !t. !NONE. tv !t !JROUTINE%VALUE t!tN!NONE. t! t!- GBEGIN BIND0COND&=%SIG&[1]%:&CONDITION_VALUE; @ SELECTONE%TRUE&OF @1 SET4 [STS$MATCH&(.COND,%INVALID_EXPRESSION)]:14 TTY_PUT_QUO%('INVALID& EXPRESSION');5 [STS$MATCH&(.COND,%MISSING_RIGHT_PAREN)]:<4 TTY_PUT_QUO%('Missing&a%right%parenthesis');32 [STS$MATCH&(.COND,%ILLEGAL_CHARACTER)]:<4z TTY_PUT_QUO%('Parsed%an%illegal% character');, [STS$MATCH&(.COND,% SS$_INTDIV)]:;4+ TTY_PUT_QUO%(' Attempted%division%by%zero');, [STS$MATCH&(.COND,% SS$_INTOVF)]:/4 TTY_PUT_QUO%('Integer& overflow');E [OTHERWISE]: E24RETURN&0TES;4 > TTY_PUT_QUO&(';% calculation% stopped.');  TTY_PUT_CRLF%();  SETUNWIND%(); [3 70 74 END;tEND&ELUDOM L1KL Determineactiontobetakenbasedonthetypeoferror encountered. $2E$Errorispossibly unexpectedoranUNWINDerror;in$}eithercasedonothing. 3JGetoutofthe recursionandpreparetoparsethenextT expression. 4"RequestnormalUNWIND.z *O A.!Summary"of!Command!SyntaxHOThisappendix summarizesBLISScommandsyntax, qualifier(O defaults,andabbreviations.M{##OA.1C Command-LineSyntax|%~4Ocompilation-request$BLISS [/qualifier ...S] input-spec, ...O] input-specy] file-spec[+] ...a]] [/qualifier] ... Z]]O qualifier y| 8 y > y\ > y < y4 > y > y  :check qualifiergeneral qualifiers&3machine-code-list qualifier! optimization qualifieroutput qualifiers reference qualifier i source-list qualifierterminal qualifier W| 9 W > W\ > W = W4 > W > W  ;~U}++OA.2CFile SpecificationSummary~! YO file-spec{node::!}{dev:"}{[dir]}file{.type}{;ver}O]nodeE]1-to 6-character alphanumericnetworknodenameandF optionallya0-to 42-characteraccesscontrolstring O$devE$Anylogicalorphysicaldevicename;includesdevice<qtype, controller designation,andunitnumber Odir7Anyvalid directoryor subdirectorynameOefileEe1to39 alphanumeric characters, including underscore@( _ ),hyphen( - ),anddollarsign( $ )O,typeF,0to39 alphanumeric charactersprecededbyaperiod Over-Versionnumberfrom1to32767J J  OA.3C QualifierSyntax I j Ocheckqualfier/CHECK=  nJ (check-value,  ... )J check-value  oO3 check-value  8 , <  :FIELDINITIAL>OPTIMIZE REDECLARE|!NOFIELD|! NOINITIAL>|! NOOPTIMIZE|! NOREDECLARE  9 , =  ;Ogeneral qualifiers  8 D >  <  >  :/CODEE/DEBUG! /ERROR_LIMIT {:=value} /TRACEBACK-/VARIANT{:value}|!/NOCODEJ|!/NODEBUG ||! /NOTRACEBACK 2| g  9 g D > g  = g  > g  ;Omachine-code-listO qualifier/MACHINE_CODE_LIST=   n( code-value, ... 7)+ code-value y  oO code-value  8 G >  <  >  :OBJECT! ASSEMBLERnBINARY COMMENTARY SYMBOLICV  UNIQUE_NAMES|!NOOBJECT!|! NOASSEMBLERn|!NOBINARY|! NOCOMMENTARY |! NOSYMBOLICV |!NOUNIQUE_NAMES  9 G >  =  > ;O optimize qualifier  /OPTIMIZE= N 8 N/ < N : (optimize-value, ... h )9 optimize-value  9 / =  ;O optimize-value ] 8  < . :"= LEVEL:optimize-level QUICK SAFE% SPEED c= |c |"NOQUICKc |"NOSAFEc% |"SPACE B ] 9 B = B . ;O optimize-level  f 0"|!1"|"2!|"3  gOkoutput qualifiers  8 e <  :&/ANALYSIS_DATA {=file-spec}!/LIST {=file-spec} o/LIBRARY {=file-spec}/OBJECT {=file-spec}m|!/NOANALYSIS_DATAm)|!/NOLISTmw|! /NOLIBRARYm|! /NOOBJECT  9 e =  ;/O source-list qualifier /SOURCE_LIST= U n&( source-value,& ... }&)t source-value U oO) source-value  8  >  < g >  : EXPAND_MACROSBHEADERLIBRARY) PAGE_SIZE:numberoflines+REQUIRExSOURCE TRACE_MACROS:|!NOEXPAND_MACROS:B|!NOHEADER:|! NOLIBRARY :|:+|! NOREQUIRE:x|!NOSOURCE:|!NOTRACE_MACROS  9  >  = g >  ;Oinumberoflines ifn20"|!21"|"22!|n ... igOr reference qualifier v r/CROSS_REFERENCE qf"q={reference-value} qg v O reference-value  f!MULTIPLE!|! NOMULTIPLE  gOterminal qualifier /TERMINAL= } nN(terminal-value,@N ... N)terminal-value } oOterminal-value 2 nERRORS|!NOERRORS%Q STATISTICS!|! NOSTATISTICS 2 onb"OA.4C QualifierDefaults@OUThe following qualifiersareassumedbydefault: {5+/CHECK=(FIELD,INITIAL,OPTIMIZE,NOREDECLARE)(/CODE/ERROR_LIMIT=30"/LIST(inbatchmode):20/MACHINE_CODE_LIST=(NOASSEMBLER,SYMBOLIC,BINARY,OBJECT COMMENTARY,NOUNIQUE_NAMES)</NOANALYSIS_DATA>/NOCROSS_REFERENCEor/CROSS_REFERENCE(NOMULTIPLE)/NODEBUGE /NOLIBRARY*/NOLIST(in interactivemode)%/OBJECT=input-file-name.OBJ0O&/OPTIMIZE=(NOQUICK,SPACE,LEVEL:2,SAFE)6,/SOURCE_LIST=(HEADER,PAGE_SIZE:58,NOLIBRARY,& NOREQUIRE,NOEXPAND_MACROS, YNOTRACE_MACROS,SOURCE))/TERMINAL=(ERRORS,NOSTATISTICS)  /TRACEBACKb /VARIANT:0OA.5C AbbreviationsQOUThe abbreviationsforthepositiveformsofthe qualifiersand/O qualifiervaluesaregivenbelow:3 )  OO Qualifier3Value Abbreviation OOb/ANALYSIS_DATA b/AO/CHECK /CH3VFIELD VF3INITIAL I3IOPTIMIZE IO3 REDECLARE RO=/CODE =/CO/CROSS_REFERENCE /CR30MULTIPLE 0MO/DEBUG /DO$ /ERROR_LIMIT $/EO/LIBRARY/LIBO/LIST/LISO/MACHINE_CODE_LIST /M3  ASSEMBLER  A3BINARY B3 COMMENTARY C3x OBJECT x O3 SYMBOLIC  S3l  UNIQUE_NAMES l UO /OBJECT  /OBO_  /OPTIMIZE _ /OP3 LEVEL  L3S QUICK S Q3 SAFE  SA3F SPACE F SPA3 SPEED  SPEO: /SOURCE_LIST :/S3 EXPAND_MACROS E3-HEADER -H3LIBRARY L3! PAGE_SIZE !P3REQUIRE R3SOURCE S3 TRACE_MACROS TO /TERMINAL /TE3ERRORS E3 STATISTICS SOu /TRACEBACK u/TRO/VARIANT /V O NLOForthenegativeformofa qualifierorvalue(whereap-MO plicable),its positive-form abbreviationcanbeprefixedbyO5``NO''. ,O B.!Summary"of! Formatting!RulesROThebasicruleof indentationisthatablockisindentedoneROlogicaltabdeeperthanthecurrent indentationlevel(onelog-TOBicaltabequalsfourspaces;twologicaltabsequalonephysicalLOtab).+The declarationsand expressionsofablockmustbeIOindentedtothesamelevelasthe BEGIN-END delimiters.eitheroftwoformats:9OIF%test&THEN% consequence%ELSE% alternative;Ae OorOIF%testOPTHEN consequenceOELSE( alternative;N!OTheexamplesusedinvChapter2(areindented correctly,al-IOthoughallcommentshavebeenomittedinordertosaveO5space.*vFlO { OC.1BModulePrefaceODMODULE%TEMPLATE%( $D!IDENT%=%&$)%=OBEGIN Od! O!" COPYRIGHT%(C)&1982%BY O!;_DIGITAL& EQUIPMENT% CORPORATION,%MAYNARD,%MASS. O<!^O!&THIS%SOFTWARE%IS% FURNISHED&UNDER&A%LICENSE%AND%MAY&BE&USED%ANDKCOPIEDVO!&ONLYKINK ACCORDANCEKWITHKTHEKTERMSKOFJSUCHJLICENSE%AND%WITH%THEZO!& INCLUSION%OF%THE%ABOVE% COPYRIGHT&NOTICE.KTHIS%SOFTWARE%ORKANYJOTHER]O\!&COPIESJTHEREOF%MAY%NOT&BE&PROVIDED&OR& OTHERWISE%MADE& AVAILABLE%TO%ANYYO!&OTHER&PERSON.KNO&TITLE&TO&AND% OWNERSHIP%OFKTHEJSOFTWAREKISKHEREBYO!& TRANSFERRED. O3![O{!&THE% INFORMATION%IN%THIS&SOFTWARE&IS&SUBJECT%TO%CHANGEKWITHOUTKNOTICEWO!&ANDJSHOULDKNOTKBEK CONSTRUEDKASKA& COMMITMENT%BY%DIGITAL% EQUIPMENTO !& CORPORATION. OS!ZO!&DIGITAL%ASSUMES%NO%RESPONSIBILITY%FOR%THE&USE%ORJ RELIABILITYKOFKITSLO!&SOFTWARE&ON& EQUIPMENT%WHICH%IS%NOT%SUPPLIED%BY%DIGITAL. O+! Os!++O!& FACILITY: O!OK!& ABSTRACT: O! O!O# !& ENVIRONMENT: Ok !(O !&AUTHOR:,&CREATION&DATE: O !OC !&MODIFIED&BY: O ! O !z ,%:%VERSIONO !&01- Ob !---,OC.2B DeclarativePartofModule OD!!O!&TABLE&OF& CONTENTS: O!O=FORWARD&ROUTINE ; J! O!O6!&INCLUDE%FILES: O~! O!O/!&MACROS: Ow! O!O(!&EQUATED%SYMBOLS: Op! O!O!!&OWN%STORAGE: Oi! O!"O!&EXTERNAL& REFERENCES: Ob!OEXTERNAL%ROUTINE ; !f  +OC.3B ExecutablePartofModule3ODROUTINE& TEMP_EXAMPLE%()%:NOVALUE%=! O!++%O!& FUNCTIONAL% DESCRIPTION: O! Od! O!&FORMAL% PARAMETERS: O! O<!z<NONE O!O!&IMPLICIT&INPUTS: O! O\!z\NONE O!O!&IMPLICIT&OUTPUTS: O3! O{!z{NONE O!O !&ROUTINE%VALUE:OS!& COMPLETION%CODES: O! O!zNONE O+!Os!&SIDE%EFFECTS: O! O!zNONE OK! O!--BEGINe LOCAL  ; J ! END; J !END%OF% TEMP_EXAMPLEUOC.4BClosingFormat ODENDJD!END%OF%MODULEOELUDOMtZ0$O D.!Implementation"LimitsEOEachBLISS-32compilerimplementationhasvaluelimi-NOtationsontheuseofcertainlanguage constructsorsystemNOB interfaces.)Thesevaluesaresubjecttochangeif experience+O indicatestheyare unsuitable.<#OD.1BBLISS-32 ConstructsFOUCertainBLISS-32 constructshavethe followingmaximum/Olimitsontheirsizeandnumber:`962ONestedblocks containing declarations 64+O] Charactersinaquotedstring]10002OActual parametersinaroutinecall 64'OP Structureformal parameters P31OField components 32-OD ParametersofaFIELD attribute D1281OBytes initializedbyasinglePLIT>O (thatis,themaximumbytecountofasingleOXPLIT) 65,535,OLengthofa charactersequence#O (CH$function argument) 65,535ine!OD.2BSystem InterfacesDOUSystem interfaceshavethe followingmaximumlimits:1O Charactersinaninputsourceline 1325O]Simultaneouslyactive(depthofnested)OREQUIREfiles 9 xO E."Error!MessagesPOWhetheranerrorisfataltothecreationofanobjectmod-EOule(ERR)orawarning(WARN)iscontext dependent.IOB Informationalmessages(INFO)havenoeffectoncompila-MOtion.)BLISS-32createsanobjectmoduleforaprogramthatJOhaswarningsbutnoerrors.(However,suchaprogrammayTOLfailtolinkormayfailtoexecuteintheintendedmanner.(InKOsomeoftheseerror messages,thecompilerprovidesvari-POable informationthatpointstothepossiblesourceoferror.QOU(SeetheexampleinSection2.1foranillustration.)+InthisLO appendix,any informationenclosedinanglebrackets(<>)NO describesthetypeofsuchvariable informationgiven.)FatalCO_errormessagesappearattheendofthe appendix.  w(O000, Undeclaredname:&k Explanation:6kThenameshownhasnot previouslybeen declared.^UserAction:^Declarethename.9 CO001- Declaration followingan expressioninablockk Explanation:2k Declarationsmustprecede expressionswithinablock.^UserAction::^Reinsertthe declarationproperlyorcreateanewblock.F)'' Explanation:4Anexcessor unnecessaryleftoperand)precedestheoperatornamed.UserAction:3Removetheextraor unnecessaryleftoperand.Q '6O003,BEGINpairedwithright parenthesisk Explanation:8kAclosed parenthesishasbeen encountered1whenthecompilerexpectedanEND.^UserAction:;^Providethe appropriatepairingorinserta missingENDkeyword.w?O004,Missingoperand preceding``''k Explanation:4kRequiredleftoperandismissingfrom!infixoperatornamed.^UserAction:)^Insertmissingleftoperand.! w;O005,Control expressionmustbe parenthesizedk Explanation::k Parenthesisisrequiredtoachieveintendedresult.^UserAction:'^Insertmissing parenthesis.E)'' Explanation:3Anextraor unecessaryrightoperand(followstheoperatornamed.UserAction:4Removetheexcessor unecessaryrightoperand.w?O007,Missingoperand following``''k Explanation:5kRequiredrightoperandismissingfromoperatornamed.^UserAction:*^Insertmissingrightoperand.+O008,MissingTHEN followingIFk Explanation:2k Conditional expressionis incomplete.UserAction:*InsertrequiredkeywordTHEN.7O009,MissingDO followingWHILEorUNTILk Explanation:7k Pre-testedloop expressionis incomplete.UserAction:(InsertrequiredkeywordDO.w7O010-MissingWHILEorUNTIL followingDOk Explanation:8k Post-testedloop expressionis incomplete.UserAction:.InsertrequiredkeywordWHILEor^UNTIL. 1O011,Namelongerthan31 charactersk Explanation:/kMaximumnamelengthhasbeenex-ceeded.^UserAction:6^Reducenamelengthto31 charactersorless.  5O012-MissingDO followingINCRorDECRk Explanation:4kIndexedloop expressionis incomplete.UserAction:(InsertrequiredkeywordDO.|BO013-Missingcommaorright parenthesisinroutine!(actual parameterlist Explanation:8Eachactual parameterinalistmustbeI separatedbyacommaandthelistmustbeendedbyauclose parenthesis.UserAction:8Insertcommas,as necessary,and/orcloseh parenthesis.-O014-MissingFROM followingCASEk Explanation:+kCase expressionis incomplete.UserAction:*InsertrequiredkeywordFROM.AO015-MissingTO followingFROMinCASE expressionk Explanation:+kCase expressionis incomplete.UserAction:(InsertrequiredkeywordTO.?O016-MissingOF followingTOinCASE expressionk Explanation:+kCase expressionis incomplete.UserAction:(InsertrequiredkeywordOF.-O017-MissingOF followingSELECTk Explanation:-kSelect expressionis incomplete.UserAction:(InsertrequiredkeywordOF.BO018-MissingSET followingOFinSELECT expressionk Explanation:-kSelect expressionis incomplete.UserAction:)InsertrequiredkeywordSET.s)IDO019-Missingcolon followingrightbracketinSELECT( expression Explanation::Selectlineofselect expressionisincom-plete.UserAction:8Insertcolonbetweenselectlabelexpres-Bsion'sclosebracketandselectaction expression.X ).@O020,Missing semicolonorTES followingaSELECT(action Explanation::Selectlineofselect expressionisincom-plete.UserAction:7Insertrequired semicolonorkeywordTES0 followingselectaction expression.CAO021-Address arithmetic involvingREGISTERvariable( Explanation:4Anattempthasbeenmadetousethe;valueofaregisternameinan expression.UserAction:#Correctthe expression.S)BO022,Field referenceusedasan expressionhasno(value Explanation:7The referenceisinvalidasafetchorA assignment expressionandcannotproduceavalue.UserAction:3Evaluateandvalidatethe expression.wFO023,Missingcommaorrightanglebracketinafield(selector Explanation:*Fieldselectoris incomplete.^UserAction:6^Insertmissingcommasorclosebracket. ^DO024,Valueinfieldselectoroutside permittedrangek Explanation:9kThevaluehasexceededthefieldsizeor6machineword boundariesofthedialect.^UserAction:<^Correcttheaddress, position,size,orsignB expressionvalue accordingtodialect restrictions.(w>O025,Valueof attributeoutside permittedrangek Explanation:8kThevalueusedislargerthanthelegal2rangepermits,suchas UNSIGNED(37).^UserAction:)^Correctthe attributevalue.q! )GEO026,ALIGNrequestnegativeorexceedsthatofPSECT((orstack) Explanation:7The alignment attributeboundarymustbeNapositiveintegerthatdoesnotexceedthepsect alignmentu boundary.UserAction:(Correcttheboundaryvalue. )j3O027,Illegal characterinsourcetextk Explanation:7kOneofthe30illegal nonprintingASCIIL charactershasbeenused(asotherthandata)inaBLISSmodule.UserAction:6Onlyfour nonprinting characters(blank,@tab,verticaltab,andformfeed)canbeused.| )RBO028,Illegal parameterincalltolexicalfunction!( Explanation:7A parameterusedwiththenamedlexical functionisinvalid.UserAction:/Checkandcorrect parameterusage< accordingtothe definitionofthe function.+8O029, Attributeillegalinthis declarationk Explanation:;k Attributesare restrictedinusetocertain declarations.^UserAction:4^Removetheillegal attributefromthe declaration.! GO030,Accessformalsmustnotappearin structuresize-( expression Explanation:8AnaccessformalprovidesvariableaccessNtoelementsofa structureandshouldnotbeincludedwith5uthe expressiondefining structuresize.UserAction:8Removetheaccessformalfromthestruc-!hturesize expression.6  ?O031- Conflictingormultiple specified attributesk Explanation:4k Contradictoryor superfluous attributeshavebeenused.^UserAction:;^Check attributeusageinregardtospecific definitions.y)O1O032,Two consecutivefield selectorsk Explanation:;k Irrationaluseoffieldselectorportionoffield reference.^UserAction:4^RemoveextrafieldselectororinsertL parenthesistocreateacompletefield reference,suchas:.(.x<0,16>)<0,8>. +O033,Syntaxerrorin attributek Explanation:;kAnerrorhasoccurredinthecodingofan attribute.^UserAction:6^Correcttheerrorusingthe appropriatesyntax.@ @O034,INITIALvalue toolargeforfieldk Explanation:9kTheintegervalueshownistoolargefor!the designatedfield.^UserAction::^Decreasethevalueorincreasethealloca-tionunit.! )BO035,The attribute contradictscor-*( respondingFORWARD declaration Explanation:=The attributesofanameinanown,global,Lorroutine declarationmustbe identicaltothoseusedin0uthe associatedforward declaration.UserAction::Correctthesyntaxofthe attributenamed. XDO036,Literalvaluecannotbe representedinthede-"(clarednumberofbits Explanation:>Theliteralvalueofaliteral declarationisKlargerthanthefield specifiedbythestorage attribute.UserAction:<Checksignorbitcountofrange attribute.?w@O037,Lowerboundofarangeexceedsupperboundk Explanation:7kThelowboundvalueoftherangeofaGcase expressionmustnotexceedthehighboundvalue.^UserAction:*^Correctthelowboundvalue.g =?O038,Numberofroutineactual parametersexceeds'(implementationlimitof64 Explanation:4Thenumberofinputactual parameters>foraroutine declarationmustnotexceed64.UserAction:8Decreasethenumberof parametersto64.4  >O039,Nameusedinan expressionhasnovalue:( Explanation:7Anamethatcannotdenotean arithmetic5valuehasbeenusedinan expression.UserAction:#Correctthe expression.N)$DO040,LEAVEnotwithintheblocklabelledby Explanation:6Theleave expressionisnotwithinthe'blockofthelabelnamed.UserAction:7Insertthe expressioninthe appropriateblock.! DO041-Missingcommaorright parenthesisin parameter>(listtolexicalfunction Explanation:7Eachlexicalactual parameterinalistLmustbe separatedbyacommaandthelistmustbeended$ubyaclose parenthesis.UserAction:9Insertthemissingcommasorcloseparen-hthesis.! w5O042,Missinglabelname followingLEAVEk Explanation:1kTheleave expressionis incomplete.UserAction::Insertthe appropriatelabelname following^thekeywordLEAVE.3! w CO043,Label alreadylabelsanotherblockk Explanation:6kThelabelnameshownhasbeendeclared'foranotherlabeledblock.^UserAction:<^Changethenameofoneblockortheother./-O044,EXITLOOPnotwithinaloopk Explanation:7kAnexitloop expressionhasbeenincor-rectlyused.^UserAction:7^Insertthe expressionwithinthe(inner-&most)looptobeexited.3  7O045,Missing structurename followingREFk Explanation:3kThe structure attributeusingkeywordREFis incomplete.^UserAction:8^Insertthemissing structurenamefollow-ingthekeyword.! w@O046,Registercannotbereservedk Explanation:8kTheregisterdefinedbythenumbershown#isnotlocallyusable.^UserAction:%^Specifyanother register. )`DO047,Module prematurelyendedbyextraclosebracket$(ormissingopenbracket Explanation:9Thenumberofclosebracketsinamodule7mustequalthenumberofopen brackets.UserAction::Removetheextrarightbracketoraddthe!missingleftbracket.  w.O048,Syntaxerrorinmoduleheadk Explanation:4kThemoduleheadis incorrectlycoded.UserAction:9Correctthemodulenameorthesyntaxof$^themoduleswitchlist.! w)O049,Invalidswitch specifiedk Explanation:7kAninvalidswitches declarationhasbeen#usedwiththedialect.^UserAction:<^Correcttheuseoftheswitches declaration.J  @O050,Namealreadydeclaredinthisblock:'k Explanation:5kThenameshownhasbeendeclaredmore+thanonceinthesameblock.^UserAction:6^Removeallbutoneofthe declarationswithintheblock.( w7O051-Syntaxerrorinswitch specificationk Explanation::kAnerrorhasoccurredinthe specification?ofthemoduleswitchesorswitches declaration.^UserAction:!^Correctthe switches.]3>O052, Expressionmustbea compile-timeconstantk Explanation:2kThecompilerrequiresa compile-timeFconstant expression,andthe expressionuseddoesnotmeetthe criteria.UserAction:2Evaluateandcorrectthe expression.3 2O053,Invalid attributein declarationk Explanation::kAnillegal attributehasbeenusedinthe declaration.^UserAction:9^Checkthelegalityofthe attributesused!withthe declaration. )eIO054,Namein attributelistnotdeclaredasa structure$(orlinkagename:' Explanation:4ThenameshownhasnotbeenusedasHa structureorlinkagenameina structureorlinkageu declaration.UserAction:9Correctordeclarethenameappropriately.^! 4DO055,MissingequalsigninBINDorLITERALdeclara-(tion Explanation:=Thenameandvalueofaliteral,binddata,Lorbindroutineitemmustbe separatedbyanequalsign.UserAction:,Insertthemissingequalsign.u )KDO056,Missingcommaor semicolon followingadeclara-(tion Explanation:8Each declarationinalistmustbesep-Jaratedbyacomma,andthelastmustbefollowedbyau semicolon.UserAction:6Insertthemissingcommasor semicolon.a )7CO057,Valueof structuresize-expressionforREGISTER(mustnotexceed4 Explanation:5 Structuresize expressionexceedsmaxi-mumallowedvalue.UserAction:;Correctthevalueoftheregister structuresize expression.> 3O058,Left parenthesispairedwithENDk Explanation:6kApairof parenthesesmustbeusedto!replaceanENDpair.^UserAction:;^Providethe appropriatepairingorinserta"missingBEGINkeyword. )VDO059,Registercannotbe specifically(declared Explanation:7Registernumbershownisbeyondtheal-Nlowablerangeofthedialectoris illegally declared,such!uasREGISTERR=50.UserAction:-Insertavalidregisternumber.b @O060,MissingSET followingOFinCASE expressionk Explanation:+kCase expressionis incomplete.UserAction:)InsertrequiredkeywordSET. w>O061-Missingleftbracket precedingaCASE-or( SELECT-label Explanation:7Caseorselect expressionis incomplete.^UserAction:)^Insertmissingopenbracket.w8O062,MODULE declarationinsidemodulebodyk Explanation:5kAmodulebodycannotcontainamodule declaration.^UserAction:%^Correctthemodulecode.<?O063,Morethanone CASE-labelmatchingthesame( CASE-index Explanation:6Onlyonecaselabelvaluecanmatcha$givencaseindexvalue.UserAction:8Correcteitherthelabelorindexvalue.: DO064,Valuein CASE-labeloutsidetherangegivenby(FROMandTO Explanation:=Valueofcaselabelisnotwithintherange specified.UserAction:7Correctthecaselabelorrangevalues."w=O065,MissingequalsigninROUTINE declarationk Explanation:6kAnequalsignmustprecedetheroutine,bodyinaroutine declaration.^UserAction:,^Insertthemissingequalsign.{Q@O066,Two consecutiveoperandswithno intervening(operator Explanation:2Operator expressionis incompleteorillegal.UserAction:2ThecompilerwillusuallyinsertanF appropriateoperatorandcontinue(ifnotcorrecttheh expression).! )qFO067,Missingcommaorrightbracket followingaCASE-(or SELECT-label Explanation:=Eachlabelinalist,foracaseorselectH expression,mustbe separatedbyacommaandthelist)uendedwithaclosebracket.UserAction:6Insertmissingcommasorclosebracket. wEO068,Nametobedeclaredisareservedword:&k Explanation:8kReservedwordscannotbedeclaredbytheuser.^UserAction:7^Selectanothernameforthe declaration. )?O069,Size-expressionrequiredin STRUCTUREdecla-6(rationwhenstorageistobe allocated Explanation:5Whena structureis associatedwithaLnameinadata declarationan expressionmustbeusedto7uspecifytheamountofstorage allocated.UserAction:.Insert structuresize expression.AAO070,Numberof structureformal parametersexceeds'(implementationlimitof31 Explanation:0Numberofaccessformal parameters$exceedsmaximumallowed.UserAction:.Reducethenumberof parameters.)nDO071-Missingcommaorclosingbracketinformalpa-5(rameterlistfor Explanation:8Eachformal parameterinalistmustbeH separatedbyacommaandthelistendedwitharightubracket.UserAction:6Insertmissingcommasorrightbracket. wCO072,MissingcontrolvariablenameinINCRorDECR( expression Explanation:4Indexedloop expressionis incomplete.^UserAction:-^Insertmissingloopindexname.S)=O073,Missingequalsignin STRUCTUREorMACRO( declaration Explanation:8Anequalsignmustprecedethe structureFsize expressionor structurebodyorthemacrobody.UserAction:,Insertthemissingequalsign.)oDO074,Missingactual parameterlistformacro Explanation:5Theactual parametersaremissingfrom@themacrocall associatedwiththemacronamed.UserAction:4Insertactual parametersto correspondFwiththeformalname parametersfromthe declaration. )sFO075,Missingclosingbracketor unbalancedbracketsin;(actual parameterlistformacro  Explanation:8Theremustbearightbracketforevery@leftbracketusedintheactual parameterlist.UserAction::Correctthepairingoftheopenandclose brackets.})S@O076,Extraactual parametersfor structure,( referencingdatasegment Explanation:1 Superfluousaccessactual parametersFin structure referencefor structureanddatasegmentunamed.UserAction:3Correctthe structure referencecode. wBO077,Missingcolon followingrightbracketinCASE( expression Explanation:+Case expressionis incomplete.^UserAction:3^Insertcolon followingclosebracket. {BO078,Nametobemappedis undeclaredornotmap-(pable:& Explanation:9Nameshownis undeclaredordoesnotlieOwithinthescopeofadataordatabind declarationoftheusamename.UserAction:9Declarenameorcorrect declarationinanh appropriatemanner. )b@O079,Missingcommaorrightbracketin structure!(actual parameterlist Explanation:5Acommamustseparateeachaccessac-Ptual parameterinalistandthelistmustbeendedwithauclosebracket.UserAction:6Insertmissingcommasorclosebracket.EO080,Illegal charactersinquotedstring parameterof!( Explanation:5TheonlyvalidASCII charactersforaKquotedstringareblanks,tabs,pairedsinglequotes,and;uanyprinting characterexceptan apostrophe.UserAction:/Remove illegal characters, oruse>h%STRINGforall characterswith%CHARinserted beforeillegalones. EO081-Quotedstringnot terminatedbeforeendoflinek Explanation:5kAquotedstring charactersequenceex-tendsoveraline.^UserAction:1^Using%STRINGandopen parenthesis,Equotefirst charactersequenceandbefore end-of-lineDconcludewithacomma;dothesamewith subsequentIh sequencesandthenconcludethelastlinewithaclose parenthesis. xCO082,Missingcommaorright parenthesis followinga*(PLIT,INITIALorPRESETitem Explanation:<Eachiteminthelistmustbe separatedbyKacommaandthelistmustbeendedwithclose parenthe-usis.UserAction:8Insertanymissingcommaorcloseparen-hthesis.! @O083,Actual parameterlistformacro 3(not terminatedbeforeendofprogram Explanation::Theactual parameterlistinthecallforKthemacronamedmustbeendedbyaclose parenthesisorPuclosebracket(rightsquareorrightangle)evenifthelistisempty.hUserAction:6hInsertthemissingclose parenthesisorbracket. [1;O084, Expressionmustbea link-timeconstantk Explanation:6kThecompilerrequiresalinktimecon-Istant expression,andthe expressionuseddoesnotmeetthe criteria.UserAction:2Evaluateandcorrectthe expression._5EO085,StringliteraltoolongforuseoutsideaPLITk Explanation:5kThenumericvalueofastringliteral8exceedsthewordlengthforthedialect.^UserAction::^ReducethelengthofthestringoruseaPLIT declaration.p )F9O086,NamedeclaredFORWARDisnotdefined:( Explanation:5Anamedeclaredinaforwarddeclara-Ntionmustalsobedeclaredbyanownorglobal declaration#uwithinthesameblock.UserAction:*Maketheproper declarations.)`CO087,Sizeofinitialvalue()exceeds+(declaredsize() Explanation:7Theinitialvalueshownisgreaterthan0thememoryspacereservedforit.UserAction:9Decreasetheinitialvalueand/orincrease%thedeclaredsizevalue.( EO088,Missingquotedstring following Explanation:4Thelexicalfunctionshownrequiresaquotedstring.UserAction:0Inserttherequiredquotedstring. 4O089,SyntaxerrorinPSECT declarationk Explanation:9kThepsect declarationis improperlycoded.UserAction:0Checkandcorrectthe declaration. )WFO090,Missing semicolonorTES followingaCASEactionk Explanation:;kEachcaseaction expressioninalistmustMbefollowedbya semicolonandthelistmustbe concludedbyTES.UserAction:3Insertthemissing semicolonsorthekeywordTES.(! 7O091-No CASE-labelmatchesthe CASE-indexk Explanation:=kBasedonits evaluationsofthelowtohighJboundandcaselabelvalues,thecompilerhas determinedMthatforthevaluesofthecaseindexnoselectorelementuwillbematched.UserAction:<Evaluatethecaseindexanditsboundsrel-Nhativetothevaluesofthecaselabels,orincludeINRANGE andOUTRANGElabels.)EO092,SomevaluesintherangegivenbyFROMandTO((havenomatching CASE-label Explanation:9ThecompilercannotmatchallofthelowItohighboundvalueswiththecaselabelvaluesgiven.UserAction::Evaluatethecaselabelvaluesrelativeto7thoseofthelowtohighboundvalues.BO093,No structure attributeforvariablein( structure reference Explanation:4Thevariablenameshownhasbeende-?clared,butthe structure attributeismissing.UserAction:8Insertthe appropriate structure attributeI (structurenameand allocationactuals)forthedeclara-.htionofthedatasegmentnamed. )g=O094,Routine specifiedasMAINisnotdefinedk Explanation:6kTheroutinename specifiedintheMAINNswitchalsomustbedefinedbyaroutineorglobalroutine- declarationinthesamemodule.UserAction:6Definetheroutinewiththe appropriate declaration.3 DO095,%REFbuilt-infunctionmustbeusedonlyasa$(routineactual parameter Explanation:6Built-infunctionhasbeenusedimprop-erly.UserAction:/Correcttheuseofthe function.  AO096,Modulebodycontains executable expressionor.( non-link-timeconstant declaration Explanation:;An executable expression(suchas.x)oraG non-link-timeconstant expression declarationshouldnotGuappearwithinthe outermostlevelofthemodulebody.UserAction:9Correcttheuseof expressionsanddecla-Hhrationswithinthe outermostlevelofthemodulebody.YCO097,Lengthofquotedstring parameterof mustnotexceed Explanation:7ThequotedstringofthefunctionshownHmustnotcontainmore charactersthanthevalueshown.UserAction:3Correctthelengthofthe parameter.t)J6O098,CannotsatisfyREGISTER declarationsk Explanation:7kToomany registers(inlinkage,globals,Dbuilt-inor predeclared functions)aresimultaneouslyactive.UserAction:5 Redistributeexplicitregisterusageto&preventoverlapsintime.d:=O099,Simultaneously allocatedtwo quantitiesto#(Register Explanation:6Two conflictingdatasegmentshavebeenD allocatedatthesametimefortheregistershown.UserAction:3Correctthedatasegment allocations.w!O100-Divisionbyzerok Explanation:7kAnillegal arithmetic operationhasbeen performed.^UserAction:"^Correctthe operation.w2O101,Nametobedeclaredismissingk Explanation:5kAnamehasnotbeen specifiedinthe declaration.^UserAction:1^Specifyanameinthe declaration. )WBO102-Null structureactual parameterhasno(defaultvalue Explanation:7Anull referencehasbeenmadewithanMaccessactual expressionforwhichnodefaultvalueexists.UserAction:9Specifyavalueintheaccessactualex- pression.e2;7O103-Illegalup-level referencetok Explanation:5k Referencehasbeen illegallymadefromEanestedroutine declarationtoanameinahigherDlevelblock.- Referencesarenot permittedtoLOCAL,@u REGISTER,or STACKLOCALstoragethatisdeclaredDinaroutine declarationwhichcontainstheroutine2& declaration currentlybeing compiled.UserAction:8Deleteandrelocatethe referenceorthe+nametoan appropriateblock.w1O104-MissingELUDOM followingmodulek Explanation:1kTheendmodulekeywordismissing.UserAction:4InserttheELUDOMkeywordattheend^ofthemodule.a)7BO105-Languagefeaturenotyet implementedin:& Explanation:6Languagefeatureshownisnotyetsup-$portedinthisdialect.UserAction:3Removethelanguagefeaturefromtheprogram.e);@O106-REQUIREfilenestingdepthexceeds implemen-(tationlimitof9 Explanation:7Require declarationsorlexical functions7havebeennestedbeyond allowablelimit.UserAction:1 Reconfigurenestingwithin allowablelimits. )hBO107- Structureandallocation-unitor extensionare(mutually exclusive Explanation:9An allocationunit attributeoranexten-Lsion attributecannotappearwitha structure attributein&uan allocation declaration.UserAction:1Removethe contradictory attributes. @  wEO108-Allocation-unitmustnotfollowINITIAL attributek Explanation:9kThe allocationunit attributemustprecede6theinitial attributeina declaration.^UserAction:5^ Rearrangetheorderofthe attributes.I ! )>O109-Missingquotedstring followingREQUIREor(LIBRARY Explanation:<Quotedfilenamenotfoundinarequireorlibrary declaration.UserAction:9Insertand/orquotefilenameindeclara-tion.i ?=O110,OpenfailureforREQUIREorLIBRARYfilek Explanation:;kThefile specifiedinarequireorlibrary? declarationcannotbeaccessedbythe compiler.^UserAction:9^Checkvalidityoffilenameormakefile" availableto compiler. BO111,Commentnot terminatedbeforeendof Explanation:3AnembeddedcommentmustendwithaGclose parenthesisandapercentsign,andthecommentGumustendinthesamesourcefileinwhichitbegan.UserAction:4Correctthe insertionoftheimbeddedhcomment.\ 2?O112, Definitionofmacro nottermi-)(natedbeforeendofprogram Explanation:5Amacro declarationmustbe terminated;byapercentsignfollowedbya semicolon.UserAction:- Terminatethemacronameshown.)xEO113,Missing semicolon,right parenthesisorENDfol-0(lowinga subexpressionofablock Explanation:2Each subexpressionmustbe concludedJbya semi-colonandtheblockmustbe concludedwitha*uclose parenthesisoranEND.UserAction:0Insertthe appropriate terminators. )AO114,InvalidREQUIREorLIBRARYfile specificationk Explanation:;kThe specifiedrequirefilemustbeavalidMnametothecompilerandthesystem,andthelibraryfileImustbeabinaryfileproducedbythecorrectcompilerudialect.UserAction:<Checkandcorrectthevalidityofthefile.?wGO115, Expression identifiedbyalabelmustbeablockk Explanation:5kAlabeled expressionmustbe contained6withina BEGIN-ENDor parenthesispair.^UserAction:6^Enclosethe expressionswithinablock._ 5AO116,Valueof structuresize-expressionmustbea ( compile-timeconstant Explanation::Thesize expressionmustmeetthecriteria5fora compile-timeconstant expression.UserAction:8Evaluateandcorrectthesize expression.L)"CO117,Valueof structuresize-expressionmustnotbe(negative Explanation:2A structuresize-expressionmustnot'indicateanegativevalue.UserAction:7Evaluateandcorrectthesize expressionvalue.@EO118,Missingleft parenthesisinPLITorINITIALat-(tribute Explanation:9APLITitemoraninitial attributemust(beenclosedin parentheses.UserAction:2Insertthemissingopen parenthesis.BO122- Recursive invocationof non-recursivemacro(  Explanation:4Onlya conditionalmacrowithoneor:moreformalnamescanbeused recursively.UserAction::Correctthe definitionofthemacronamed.> )@O123- Recursive invocationof structure  Explanation:<A structurecannotinvokeitselfdirectlyor indirectly.UserAction:7Correctthe declarationofthe structurenamed. )vCO124- Expressionnestingorsizeofablockexceeds((implementationlimitof300 Explanation:6More expressionshavebeennestedora;blockcontainsmorelinesthanareallowed.UserAction:8Decreasethenumberofnested expressions5orthenumberoflinesintheblock.^4EO125-Operand precedingleftbracketin structureref-,(erenceisnotavariablename Explanation:6Theoperand precedingtheaccessactual1 parametermustbeavariablename.UserAction:/Evaluateandcorrecttheoperand.d :CO126-ValueofPLIT replicatormustnotbenegativek Explanation:5kTheREP replicatormustbeacompile-Ltimeconstant expressionthatdoesnotindicateanegativevalue.UserAction:9Evaluateandcorrectthe replicatorvalue. .O127-RETURNnotwithinaroutinek Explanation:9kToproperlyreturncontroltothecaller,Bthereturn expressionmustbeenclosedwithinthe4 BEGIN-ENDpairofthecalledroutine.UserAction:7Correctthe placementofthereturnex-Hpressionwithinthe outermostleveloftheroutine,orFhcheckforthe exclusionoftheENDkeywordfromtheroutine.BO128-BINDorLITERALnameusedinitsown( definition Explanation:8Thedatanamevalueforabinddeclara-Ptionortheliteralvalueforaliteral declarationmustnotAucontainanamealreadydeclaredbindorliteral.UserAction:2Evaluatenameshownandcorrectitsh declaration.! AO129-Missingcommaorright parenthesisinactual7( parameterlistfor Explanation::Eachactual parameterinacalllistmustMbe separatedbyacommaandthelistmustbeendedbyauclose parenthesis.UserAction:9Insertthemissingcommasorcloseparen-Dhthesisinthecalltotheroutineormacronamed.BO130-Omittedactual parameterincallto hasnodefaultvalue Explanation:1In referencecalltokeywordmacroGnamed,nodefaultvalueexistsfortheomittedactualu parameter.UserAction:3Providean appropriatevalueforthe%homittedactual parameter.  AO131,Extraactual parametersincallto  Explanation:7Thenumberofactual parametersusedinMcalltoabuilt-infunctionmustnotexceedthenumberof?uformal parametersusedinthebuilt-inroutine.UserAction:9Correctactual parameterusageincallto$hbuilt-infunctionnamed.+ ! .bGO132- Translationtableentriesincallto CH$TRANSTABLE+.mustbe compile-time constants Explanation:5The translationitemsdonotmeetthe=!criteriafor compile-timeconstant expressions.UserAction:9Evaluateandcorrectthe translationitemsinthecall." )YBO133- Allocationunit(otherthanBYTE)incallto( CH$TRANSTABLE Explanation:9 Character positionsina translationtable8are restrictedtothelengthofabyte.UserAction:=Ifan allocationunit attributeis necessary,%insertthekeywordBYTE.#=O134-Lengthoftableproducedby CH$TRANSTABLE>.()notanevennumberbetween0and256! Explanation:7!Thenumberof translationitemsusedin$zthecallmustbeeven.UserAction:9Reduceorincreasethelengthoftheta-Kmblebyanevennumberthatisclosesttothenumberof( character positionsdesired.$ FO135-Lengthof destinationshorterthansumofsource(lengthsinCH$COPY Explanation:7Thesumofthesourcelength parametersJ (sn1+sn2+...)*mustnotbegreaterthanthevalueofthe'u destination parameter(dn).UserAction:4Increasethevalueofthe destinationh parameter.%! BO136-Character-size parameterofmustbeequalto8 Explanation:5The characterfunctionnamedhasille-Lgally specifieda charactersizeotherthaneightbitsinJulength;onlyBLISS-36supports charactersizesothertheneight.hUserAction:7hInserta charactersizevalueofeight.& )^0O137-Built-inroutinehasnovaluek Explanation:6kAmachinespecificfunctionthatcannotMproduceavaluehasbeenusedinacontextwhereavalueis required.UserAction:9Evaluatetherequireduseofthebuilt-in.functionandcorrectthecoding.D' )AO138-MissingequalsigninGLOBALREGISTERdecla-(ration Explanation:8Theglobalregister declarationisincom-plete.UserAction:;Insertthemissingequalsign followingtheregistername.(! JO139-Illegaluseof%REFbuilt-infunctionasactualpa-@(rameterofcallto Explanation:9Thevalueofa%REFfunctionisthead-Hdressofa temporarydatasegmentwhichstoresacopyPuofthevalueoftheactual parameter;thusitsuseisoftenI incompatiblewiththestorage requirementsofabuilt-in& function.UserAction:6Delete%REFandprovideacalltotheFroutinenamedthatwillprovide permanentstorageforrthevalue returned.|)RFO140-Illegaluseofregisternameasactual parameter9(ofcalltoroutine Explanation:7AnundottedregisternamehasbeenusedCasanactual parameterfortheroutinecallshownUserAction:,Providealegalregistername.%*6O141,Routinehasnovaluek Explanation:6kThe mechanismfor returningavalueis suppressed.^UserAction:4^Removethenovalue attributefromtheroutinenamed.+ w>O142-Missingquotedstring following CODECOMMENTk Explanation::kAquotedstringisrequiredforeachcom-ment.^UserAction:7^Enclosetheaffectedcommentsinquotes.o,> )E@O143-Missingcommaorcolon following CODECOMMENTk Explanation:=kEachquotedstringinthelistmustbesep-Haratedbyacommaandthelistmustbeendedwithacolon.UserAction:3Insertthemissingcommasand/orthecolon. N-$>O144- Expression following CODECOMMENTmustbea(block Explanation:6The expression followingthecolonmustBbeenclosedwitha parenthesisor BEGIN-ENDpair.UserAction:2Enclosethe expressionappropriately.1.0O145-IllegalOPTLEVELvaluek Explanation:7kTheonlyvalid optimizationlevelvalues arezerothrough3.^UserAction:6^Replacetheswitchvalueshownwithan appropriatevalue.o/ )EBO146-ENABLE declarationmustbein outermostblock(ofaroutine Explanation:9Theenable declarationmustresideinthe: outermostlevelofthe establisherroutine.UserAction::Correctthe placementoftheenabledecla-ration.E0CO147-MorethanoneENABLE declarationinaroutinek Explanation:5kAn establisherroutinemustnotenable,morethanonehandlerroutine.^UserAction::^Removeallbutoneoftheenabledeclara-tions.e1 );CO148-Handler specifiedbyENABLEmustbearoutine(name Explanation:8Thename specifiedbyanenabledeclara-4tionmustbethenameofaroutine.UserAction:6Providean appropriateroutinenameforthe declaration.2 )oBO149-Illegalactual parameterinENABLE declarationk Explanation:7kActual parametersforenable declarationsJare restrictedinusetonamesdeclaredasown,global,%forward,orlocalnames.UserAction:4Providean appropriatelydeclaredname&fortheactual parameter.3 BO150-NameusedasENABLEactual parametermustbe( VOLATILE: Explanation::Avolatile attributemustbeusedtowarnLthecompilerthatthedeclaredactual parameterissubject!uto unexpectedchange.UserAction:;Provideavolatile attributefortheactualh parameternamed.4zAO151,Missingcommaorright parenthesisinENABLE!(actual parameterlist Explanation:8Eachactual parameterinalistmustbeK separatedbyacommaandthelistmustbeendedwithauclose parenthesis.UserAction:5Insertthemissingcommasand/orcloseh parenthesis.H58O152-LANGUAGEswitch specification excludes( Explanation:1Thelanguagenameshownismissing@fromthelanguagelistinaswitch declaration.UserAction:/Insertthemissinglanguagename.$6 *O153-MissingOF followingREPk Explanation::kThe replicator constructforthe expressionis incomplete.^UserAction:6^InsertthemissingkeywordOF followingthe replicator.y7 )OGO154- Incorrectnumberof parametersincalltolexical+(function Explanation:6Alexicalfunctionmustconformtoits  syntactic definition.UserAction:7Evaluateandcorrect parameterusagefor#lexicalfunctionnamed.Y8 )/AO155-Numberof parametersofENTRYswitchexceeds((implementationlimitof128 Explanation:5Themoduleswitchhastoomanyparam-eters.UserAction:7Reducethenumberof parametersusedintheENTRYswitch. ]9 3?O156-UnknownnameinBUILTIN declaration:&k Explanation:8kOnlyaname predefinedforBLISScanbe!declaredas built-in.^UserAction:<^Correctthenameshownordeleteitoruse2anotherformof declarationforit.\:26O157- Conditionaloutof sequence:'k Explanation:2kThekeywordnamedis improperlyse-1quencedinthelexical conditional.^UserAction:7^Evaluateandcorrecttheorderinwhich5thekeywordsappearinthe expression.;6O158-<%PRINT,%INFORM,%WARN,%ERROR,or(( %ERRORMACRO>:& Explanation:7ThisistheformofthemessagenumberJandtextthatappearswhenoneofthelexical functionsushownisused.UserAction:&Example:+INFO 158,%INFORM: 'user'htext specifiedbyfunction Gh'[< )1DO159- Conditionalnot terminatedbeforeendof Explanation:9Lexical conditionalisnotproperlytermi-&natedinthefilenamed.UserAction:4Insertthemissing terminationkeyword%FI.=HO160-Missingformal parameterorequalsignincallto&(keywordmacro  Explanation:5Eachmacroactual parameterinakey-Lwordmacrocallmustbe connectedbyanequalsigntoaEukeywordformalname previouslydeclaredinakeywordmacro.hUserAction:5hInsertthemissingformalnameorthemissingequalsign.>)multiply?( specifiedincalltokeywordmacro  Explanation:5InakeywordmacrocalltothemacroEnamed,themultiplicationofthekeywordformalname1ushownhasbeen illegally specified.UserAction:,Evaluateandcorrectthecall.?-O162-Missing%THEN following%IFk Explanation:6kThecodingofalexical conditionalis incomplete.^UserAction:1^Insertthemissingrequiredkeyword%THEN.@)c@O163-Actual parameterofcallto.(routineisillegal Explanation:3Aninvalidactual parameterhasbeen5usedinacalltotheroutinenamed.UserAction:6Evaluateandcorrecttheuseofactual* parameternamedinthecall.Aw=O164-Languagefeaturetoberemoved:& k Explanation:8kCompilerreportsthattheuseoffeature"namedis discontinued.^UserAction:)^Evaluateandcorrectmodule.vB)L?O165-Languagefeaturenotpresentin :(  Explanation:4Thecompilerreportsthatthefeature=namedisnot availabletothedialectnamed.UserAction:1Removethefeaturefromthemodule+switchforthedialectnamed.;C@O166-NamedeclaredSTACKisnotproperlydefinedk Explanation:6kThenameusedasastackdatasegment#hasnotbeen declared.^UserAction:5^Correctordefinenamewith stacklocal declaration.DlAO167-NamedeclaredENTRYisnotgloballydefined:( Explanation:5In BLISS-36,nameshownhasbeendes-Kignatedforentryinglobalobjectmodulerecordandhas*unotbeendeclaredasglobal.UserAction:5Definenameshownwithglobaldeclara-htion. OE %CO169-Fetchorstoreappliedtofieldofzerosizek Explanation:6k Attemptedfetchor assignment expression)toaninvaliddatasegment.^UserAction::^Correctrange attributefordataorstruc-ture declaration.FU;O170-MissingequalsigninFIELD declarationk Explanation:5kAnequalsignmustappearbetweentheFfieldsetnameandthekeywordSETandbetweeneachJfieldnameandtheleftbracketofthefield component.UserAction:(Insertmissingequalsigns.FGDO171,MissingcommaonrightbracketinFIELDdecla-(ration Explanation:4CommamustappearafterrightbracketEofeachfield definition(exceptthelast)inlist.UserAction:"Insertmissingcommas.?H w=O172-MissingleftbracketinFIELD declarationk Explanation:<kAleftbracketmustappearbeforeeachlistEoffield componentsinalistoffield definitions.^UserAction:*^Insertmissingleft brackets.LI w">O173-MissingcommaorTESinFIELD declarationk Explanation:6kAcommamustappearbetweeneachfieldM componentinalistandthelistmustbeendedwithTES.^UserAction:4^InsertmissingcommasorkeywordTES.J! qFO174-MissingleftbracketorSETinFIELD declarationk Explanation:<kTheequalsign followingthefieldsetnameLmustbefollowedbyaSET,andeachequalsign followingCafieldnamemustbefollowedbyaleftbracket.UserAction:3InsertkeywordSETorleft brackets.K )`@O175-Numberoffield componentsexceeds implemen-(tationlimitof32 Explanation:3Thenumberof componentsinafieldG definitionexceedsthelimitsallowedfora structure.UserAction:3Decreasethenumberof componentsor'createseparate structures.L )sEO176-Fieldnameinvalidin structure reference'(tovariable Explanation:9ThefieldnameshownasanaccessactualG parameterdoesnotagreewiththevariablenameshown$uasafield declaration.UserAction:6Evaluateandcorrecttheusesofname.M FO177- ParameterofFIELD attributemustbeafieldor( field-setname Explanation:5Invalid parameterhasbeenusedforaPfield attribute;thenameusedmustbe identifiedbyafield:u declarationasafieldorfieldsetname.UserAction::Replace parameterwithadeclaredfieldorhfieldsetname.N)s@O178-Numberof parametersofFIELD attributeex-/(ceedsimplementationlimitof128 Explanation:3 Excessivenumberoffieldnameshave0been specifiedinfield attribute.UserAction:5Decreasethenumberoffieldnamesor?declareafieldsetforthenumberinexcess."Ow=O179-MissingequalsigninLINKAGE declarationk Explanation:3kAnequalsignmustappearbetweena/linkagenameandalinkagetype.^UserAction:,^Insertthemissingequalsign.P! 0O180-Invalidlinkagetype specifiedk Explanation:>kThelinkagetype specifiedforthedialectisillegal.^UserAction:4^Evaluateandcorrectthelinkagetypeword. Q w@O181,Illegalregisternumber inLINKAGE( declaration Explanation:4Theregisternumbershownisinvalid.^UserAction:8^Evaluateandcorrecttheregisternumber.mR)C@O182-Multiple specificationofregister inLINKAGE declaration Explanation:4Theregistershownhasbeen specified1morethanonceinthe declaration.UserAction:6Evaluateandcorrectregister specifica-tions./S! w6O183-Invalid parameterlocation specifiedk Explanation:;kThe parameterlocation specifiedisillegal.UserAction:;Checkthelegalusesof parameter locations,^andcorrectthespecifications.TtBO184-Missingcommaorright parenthesisinLINKAGE( declaration Explanation::Each parameterlocationinalistmustbeI separatedbyacommaandthelistmustbeendedbyauclose parenthesis.UserAction:3Insertthemissingcommasand/orthehclose parenthesis.NU$CO185-InvalidlinkagemodifierinLINKAGE declarationk Explanation:7kAnillegalmodifierhasbeenusedasalinkageoption.^UserAction:4^Checkandcorrecttheuseoflinkage/option modifiersforthedialect.*V! wCO186-Missingleft parenthesisinLINKAGE declarationk Explanation::kA parameterlocationlistmustbepreceded$byanopen parenthesis.^UserAction:2^Insertthemissingopen parenthesis.\W 2CO187-MissingglobalregisternameinLINKAGEdecla-(ration Explanation::AgloballinkageoptionhasbeenusedandAtheglobalregisternamehasnotbeen specified.UserAction:7Insertthemissingglobalregistername.X forEXTERNAL$(REGISTERvariable Explanation:6Theregisternamedinthegloballink-Mageoptionmustbethesameastheregisternamedinthe6u associatedexternalregister declaration.UserAction:7Usethesameregisternameinboththe2hroutineanditslinkage declaration.Y)?O189-Globalregister specifiedbylinkage1(notdeclaredtocall Explanation:8TheregisternamedinthegloballinkageJoptionhasnotbeendeclaredinacalltotheroutine.UserAction:3DeclaretheregisternamewithintheFcallingroutinewithanexternalregister declaration.eZ;AO190-WORDorRadix-50itemnumber allo-((catedatoddbyteboundary Explanation:5Data structureis improperly allocated.^UserAction:8^Correctdata allocationtoplaceWORDor8RAD50_11valueshownataword boundary.T[ *?O191,MultipleGLOBAL declarationofname:'k Explanation:7kTheglobalnameshownhasbeendeclared2morethanonceinthesamemodule.^UserAction:7^Deletealltheextra appearancesoftheglobal declaration.K\ 2!EO192-Multiple declarationofnameinassemblysource:( Explanation:/ThenameshownhasbeendeclaredImorethanonceinamodulethatwascompiledwiththe(u assembleablelistingoption.UserAction:=IftheintentistorunthelistingthroughLhan assembler,deleteallextra appearancesofthedeclaredEname;or,usetheswitchitemUNAMESinaswitches1 declarationtoobtainuniquenames.< 4] >O193- declarationnot available,(whenOBJECT(ABSOLUTE)ineffect Explanation:4ThismessageisreservedforBLISS-16future expansion.UserAction:#Noactionis required.^^ )4EO194-Librarysourcemodulemustcontainonlydeclara-(tions Explanation:8 Executable expressionsmustnotappearin#alibrarysourcefile.UserAction:8Removeallbutthe declarationsfromthe librarysourcefile._)o2O195-LIBRARYfilehasinvalidformatk Explanation:6kTheinternal formattingofthefileis incorrect.^UserAction::^The specifiedfileisprobablynotapre-Icompiledlibraryfile;changethefile specificationandC recompile.&Iftheproblem persists,submitanSPR.`)gCO196-LIBRARYfilemustbe regeneratedusingcurrent(compilerrelease Explanation:9Alibrarysourcefilemustbe precompiled@againusingthelatestversionofthe compiler.UserAction::Usethelatestversionofthecompilerto) regeneratethelibraryfile.|a! RDO197-LIBRARYfilemustbe generatedusing k Explanation:7kThelibraryfilemustbe precompiledby?thecompiler associatedwiththedialectnamed.^UserAction:;^Generatethelibraryfilewiththecompiler0 associatedwiththedialectnamed.b )iDO198-LIBRARYfilecontainsinternal consistencyerrork Explanation:<kAlibraryfilehasbeen referencedthathas*been precompiledwitherrors.^UserAction:8^ RecompilethelibrarysourcefilewithaH/LIBRARY qualifier,andiftheproblem persists,submitanSPR.jc )@AO199-WarningsissuedduringLIBRARYprecompilation:( Explanation:1ThenumbershownisthenumberofGwarningsissuedduringtheprecompilationofthefile.UserAction:4Evaluateandcorrectallwarningsand recompile.vdLFO200,Illegal declarationtypeinlibrarysourcemodulek Explanation:9kOnlycertaintypesof declarationscanbe-usedinalibrarysourcefile.^UserAction:7^Removetheinvalid declarationsfromthe<librarysourcefileand regeneratethefile.ve! )L?O201-Illegal occurrenceofboundnamein!(librarysourcemodule Explanation:9Boundnamescannotbeinsertedinlibrarysourcefile.UserAction:2Removethe declarationforthename=shownfromthefileand regeneratethefile.fe@O202,Numberof parametersofARGTYPElinkageat-?(tributemodifierexceedsimplementationlimitof 128 Explanation:1 Excessivenumberof parametersused5uwithbuilt-inlinkagefunctionARGTYPE.UserAction:5Reducethe parameterstoan acceptablehnumber.^g )4DO203,linkagemodifiernot availablewiththis(linkagetype Explanation:7Thelinkageoptionnamedcannotbeused.withthelinkagetype specified.UserAction:6Evaluateandusean appropriatelinkageoption.hEO204,LengthofSYSLOCAL specificationnotinrange1(to15 Explanation:6Thismessagereflectsafutureenhance-ment.UserAction:#Noactionis required.j iBO205,BUILTIN declarationofinvalidinthis(context Explanation:8Eachnameusedinabuilt-in declarationImustbe predefined(butnot predeclared);however,ifaNuregisternameorlinkagefunctionisused,itmustalsobe1 containedinaroutine declaration.hUserAction:9hEvaluateandcorrecttheuseofthenameshown.jCO206,BUILTIN operationneedsaregisterdeclaredas(NOTUSED Explanation:7Aregisterrequiredbyabuilt-infunc-Gtionis unavailableforuseduetoaNOTUSEDlinkageu modifier.UserAction:9Deleteorchangethemodifierintheas-Jhsociatedlinkage declarationtoallowtheregistertobeused.k zAO207,NOTUSEDlinkagemodifierofcallerisnota/(subsetofthatofcalledroutine Explanation:6ThelinkagetypeandlinkageoptionofMthecallerroutineis incompatiblewiththatofthecalleduroutine.UserAction:8Evaluateandcorrectthelinkagedeclara-htions.l! GO208,Calledroutinedoesnotpreserveregisterdeclared(NOTUSEDbycaller Explanation:<Topreserveallthe necessary registers,allQofthelocallyusable registersofthecalledroutinemustbeMudeclaredaslocallyusable registersinthecallerroutine.UserAction:8Evaluateandcorrectthelinkagedeclara-htions.m EO209,Illegal characterorfieldtoolargeinVERSIONk Explanation:7kThequotedstringintheVERSIONswitchEmustconformtothe TOPS-10/20versionnumberformatQoooa(oooooo)-o;where``o''isanoctaldigitand``a''isan u alphabetic character.UserAction:<Correctthestringinregardtotheversionhnumberformat.n m8O210-Stackpointersin different registersk Explanation:6kThenumberofthestackpointerregis-Oterisassignedbydefaultanddependsonthedialectused;Ihowever,thedefaultnumberoftheregistercanbeal-Kuteredbyachangeinthedeclaredlinkagetype(suchasAF10)while neglectingtospecifythe LINKAGE_REGS&option.UserAction:7Specifythedesiredstackpointerregis-Eternumberbyusinga LINKAGE_REGSmodifierforthe!ralteredlinkagetype.o );O211,Useof uninitialized data-segmentk Explanation::kAnattempthasbeenmadetousethedata;segmentnamedwithoutfirst initializingit.^UserAction:=^Insertaninitial attributeinthedataseg-Lment declaration,orassignavaluetothesegmentbeforefetchingfromit.;p! EO212-Null expressionappearsinvalue-requiredcontextk Explanation:8kAnull expressionhasbeenusedwhereavalueis required.^UserAction:4^Evaluateandprovideavalueforthe expression.gq2=:O213- Expressions eliminated followingRETURN,(LEAVEorEXITLOOP Explanation:6These expressionsendthe evaluationofLaroutinebody (return),ablock(leave),oran innermostKuloop (exitloop); therefore,theymustbethelastexpres-Qsionsinsertedbeforetheaffectedblockisended,ifnotall;& subsequent expressionswillnotbe compiled.UserAction:9Evaluateandcorrectthe insertionofthe'returnorexit expression.Nr $4O214-Languagefeaturenot transportablek Explanation:5kThefeature specifiedforthedialectsEdefinedbythelanguageswitchisnottransportable.^UserAction:8^Evaluatethefeatureandtake appropriateaction.{s! )Q=O215-Languagefeaturenottransportable:&k Explanation:7kThefeature specifiedbythenameshownOisnot transportabletothedialectsdefinedbythelanguageswitch.UserAction:2Evaluatethefeaturenamedandtake appropriateaction.t)W@O216-Languagefeaturenottransportable:& k Explanation:3kThefeature specifiedbythekeywordLshownisnot transportabletothedialectsdefinedbythelanguageswitch.UserAction:2Evaluatethefeatureshownandtake appropriateaction. {u )Q=O217-GLOBALorEXTERNALnamenotuniquein6( characters:' Explanation:6InBLISS-16and BLISS-36,atleastsixJ charactersinaglobalorexternalnamemustbeunique.UserAction:;Evaluateandcorrecttheglobalorexternalname.v {AO218-Implicit declarationofBUILTIN(tobe withdrawn Explanation:2Thecompiler implicitlydeclarestheBfunctionnamedasbuilt-inwhenaFORTRANlinkage'uroutineisbeing compiled.UserAction::Addanexplicitbuilt-in declarationwithinhtheproperscope.w)g7O219-Emptycompound expressionisillegalk Explanation:3kAcompound expressionblockdoesnotMcontainany declarations,butitmustcontainatleastone$ expressiontobelegal.UserAction:<Insertan expressionintheblockordelete#theentireblockform.x)x?O220,PRESETitemshave overlappinginitializationk Explanation:3kApresetvaluemustnotoccupymoreEstoragethanis allocatedforthedatasegment,andIthefieldnames describedinthepresetitemsmustnotuoverlap.UserAction:9Evaluateandcorrectthepreset attribute.Uy +CO221-Missingleftsquare-bracketinPRESET attributek Explanation:6kEachpresetiteminapreset attribute4mustbeprecededbyanopenbracket.^UserAction::^Insertthemissingopenbracketbeforethepresetitem.Bz! wHO222,Sourcelinetoolong.' Truncatedto132 characters.k Explanation:>kAlineinthesourcefileexceedstheimple-0 mentationlimitof132 characters.^UserAction:5^Decreasethesizeofthesourceline.{>O223,Nameusedin routine-callnotdeclaredas"(ROUTINE: Explanation:8Theroutine designatorusedinaroutineLcallmustyieldavaluedeclaredasaroutinenameinauroutine declaration.UserAction:9Ensurethatthenameusedintheroutine:hcallisdeclaredinaroutine declaration.|_ )w=O224, INTERRUPTgeneralroutinecallisinvalidk Explanation:6kAlinkagenamedefinedbyan INTERRUPTHlinkagetypemustnotbeusedwiththisdialectina!generalroutinecall.UserAction::Withthisdialect,useanordinaryroutine4calltoinvokethe interruptroutine.}! BO225,Invalidlinkage attribute specified isassumed Explanation::Alinkage attributemustbeeitherapre-Edeclaredlinkagenameorone specifiedinalinkageu declaration.UserAction:<Evaluateandcorrecttheuseofthelinkage,hnameinthelinkage attribute.~EO226,Valueofalinkagenameisoutsideper-(mittedrange Explanation:3ThevalueofthelinkagenameshownFexceedsthe compatibleand transportablerangeoftheudialect.UserAction::ProvidealinkagenamethatiswithintheBh compatibleand transportablerangeofthedialect.! EO227, Effectivepositionandsizeoutsideof permitted(range Explanation:8Thevaluesofthefield referenceparam-Ketershaveexceededthe structure allocation specifiedforuthedatasegment.UserAction:=Evaluateandcorrectthevalueoftheoffset'handfieldsize parameters.{)Q6O228,Builtinmachophasnovaluek Explanation:4kThe instructionnameddidnotproduceHavaluewhenexecutedbythemachinespecificfunctionMACHOP.UserAction:5Selectamachine instructionthatwill,produceavaluewhen executed.q ?O229, Parameterofbuiltin)(hasvalueoutsidetherange Explanation:1The parameternamedforthebuilt-Finfunctionnamed indicatesavaluethatexceedstheu specifiedrange.UserAction:2Decreasethevalueofthe parameterJhnamedtoconformwiththespecificationsofthefunctionnamed.! )?O230, Parameterofbuiltin6(mustbea link-timeconstant expression Explanation:3The parameternamedforthebuilt-in7functionnamedisaninvalid expression.UserAction:2Replacethe parameternamedwithanO expressionthatmeetsthecriteriaforalinktime constant.U)+AO231-Invalidlinkage attribute specified CLEARSTACK(isadded Explanation:.The CLEARSTACKlinkageoptionis'illegalwiththisdialect.UserAction:1Deletethe CLEARSTACKmodifierfrom$thelinkage declaration.! -O232,OTSlinkage specifiedtwicek Explanation:0kTheOTSoptionofthe ENVIRONMENTMswitch specifiestheuseofastandardOTSfileandlink-Iage; therefore,theswitchmustnotappearinthesameDumodulewithanOTSswitchandan OTSLINKAGEswitchMwhich specifiestheuseofa nonstandardfileandlinkage.hUserAction:8hEvaluateandcorrectthecodingforOTS.5 2 AO233,OTSlinkagenotdeclaredbeforefirst(routine declaration Explanation:0Thelinkagename specifiedbythe? OTSLINKAGEswitchmustbe predeclaredorappearJuinalinkage declarationthatprecedesthefirstroutine' declarationinthemodule.hUserAction:9hDefinethelinkagenameshowninalink-Lage declarationthatprecedesthefirstroutine declarationinthemodule.EO234,OTSlinkagemaynotuseglobal registers,(orpass parametersbyregister Explanation:0Thelinkagename specifiedbytheF OTSLINKAGEswitchmustnotspecifyregisterorglobal)uregister parameter locations.UserAction:8Evaluateandcorrecttheuseofthepa-Chrameter locationsinthelinkage declarationnamed.g=EO235,OTSlinkagenotdefinedbeforeit'susedk Explanation:3kThelinkagenameshownhasnotbeenDdeclaredpriortoitsuseinan OTSLINKAGEswitch.^UserAction:5^Declarethelinkagenameshownwithalinkage declaration. [EO236,FirstPSECT declarationappearsafteradeclara-((tionthat allocatesstorage Explanation:7In BLISS-36,thefirstpsect declarationFinamodulemustappearbeforethefirst declarationLuthatcausesstoragetobe allocatedorobjectcodetobe generated.hUserAction::hReinsertthefirstpsect declarationbeforeJthefirstdataorroutine declaration (externalandfor-Jwardtypes excepted)and/orthefirstPLIT expressioninrthemodule.F)EO237,Exponentforfloatingordoublefloatingliteral(outofrange Explanation:8Exponentvalueistoolargeforfloatingliteral.UserAction:5Evaluateandcorrectthevalueofthe exponent. )o@O239,String exceedingimplementationlimits( characters)was truncated Explanation:9Thestringfunction(suchas %EXACTSTRING)Hexceedstheimplementationlimitof1000 charactersfor'uthelengthofa sequence.UserAction:/Decreasethesizeofthestring.p)F declaration is illegal in ( STRUCTURE declaration Explanation:6The declarationdefinedbythereservedEwordshown(suchasOWN)isillegalina structureu declaration.UserAction:,Removetheillegal declaration. ! =O242,Outputformal parameterinroutine7( declarationwasnot describedinlinkage Explanation:9Anoutput parameterlocationhasnotbeenK specifiedinthe correspondinglinkage declarationforthe+uoutputformal parametershown.UserAction:3Specifytheoutput parameterlocationFhfortheoutputformal parameternamedintheroutine declaration.  ! AO243,Outputactual parameterwasnot describedin(linkage Explanation:9Anoutput parameterlocationhasnotbeenJ specifiedinthe correspondinglinkage declarationforanIuoutputactual parameter specifiedinthecallerroutine.UserAction:2Specifyanoutput parameterlocationIhfortheoutputactual parameter specifiedinthecallerroutine.)^ wAO244,Namedeclared UNDECLAREisnotdefined:k Explanation:5kAn undeclare declarationhasbeenused8withanamethathasnotbeen declared.^UserAction:$^Declarethenameshown. )n;O246,FORWARD declarationofcannotbe*( satisfiedbyBIND declaration Explanation:2AnamedeclaredasFORWARDmustbe;definedasaROUTINE,OWN,orGLOBALname.UserAction:;Evaluateandcorrecttheuseofthespeci-4fiednameontheFORWARD declaration. ?O247, Charactersize parameterofmustbeE(equaltoa compile-timeconstantintherange1to 36 Explanation:5The charactersizevalueofthenamedHu characterfunctioniseitheroutsideofthe permissible4rangeornota compile-time constant.hUserAction:4hProvidea compile-timeconstantwithin"the permissiblerange.C! IO248,isanillegal charactersizeforaglobalF(bytepointer.'Alocalbytepointerwillbe generated Explanation:5Aprogramwithextended addressingwasFcompiledhavingaCH$PTRfunctionsizevaluethatis;uinvalidforcreatingaglobalbytepointer.UserAction:= Determineifalocalbytepointerisaccept-Rhable;ifnot,changethesizevaluetoreflectavalidglobalbytepointer.g)=>O249,EXTENDED addressingisnot supportedunder(TOPS-10 Explanation:8Thecompilerhasreportedthatitcannot8supportextended addressingunderTOPS-10.UserAction:4Removetheextended addressingfeaturefromtheprogram.9! 6O250, Referenced9(symbolisprobablynot initialized. Explanation:;This indicatesa referencetothevalueofNalocalorregistersymbol(withadot)beforethatsymbolHuhasreceivedavalue.*Thismessagemaybeprinteder-K roneouslywhentheinitializationofavariableoccursonI&onebranchofa conditional(IF,CASE,orSELECT),andJ~a referencetothevariableoccursonanotherbranchofOthe conditional,andthe conditionalis containedinaloop.FrNotethatthiserrormessagemayindicatetheoccur-Arenceofacommon programmermistakewherebytheO#addressofavariableisstoredinacontrolblockandtheP{controlblockisthenpassedtoaroutine(suchasasystemHserviceorRMSroutine)whichwillupdatethedataatK-thataddress.'IfthevariabledoesnothavetheVOLATILEG attribute,thecompilercannotknowthatitsvalueis7 potentiallychangedbytheroutinecall.yUserAction:>y Initializethesymbolpriortoitsfirstuse. CO251-Symbolisdeclaredinanouter(block Explanation:9AsymbolnamedeclaredinanouterblockRis inaccessiblebecauseitisalsodeclaredinaninnerblock.UserAction::Ensurethatall referencestothenameinNtheinnerblockrefertothesymboldeclaredthereandnot8htotheonedeclaredintheouterblock. )v9O252,Test expressionisalways k Explanation:8kDuringthe optimizationofanIF,WHILE,HorUNTIL structure,atest expressionhasbeenreducedFtoaconstantwiththepossible eliminationofcode.UserAction:6Evaluatethetest expressionforproper operation.{ EO253,Actiontrue.'  Explanation:;Oneormoreoftheaction statementsina@SELECTor SELECTONE constructcannotbereached,Fuand consequentlycertainactionshavebeen eliminated.UserAction:8Evaluatetheselect statementsforproperh operation. :O254,PRESET-attributemustbeprecededbya(structure-attribute Explanation:7TouseaPRESET attributeto initializeIthefieldsofa structureddatasegment,theremustbeJua structure attributeto associatethenameofthedataGsegment specifiedinthepresetitemwitha structure& definition.UserAction:8CorrecttheuseofthePRESET attribute.w Explanation:@Thefilespecistoolongtofitintherecord1that describesittothe debugger.UserAction:5Renamethefileusingashortername.Q 2'6O257,/MASTER_CROSS_REFERENCE qualifierhas.(been supersededby/ANALYSIS_DATA Explanation:&The/MASTER_CROSS_REFERENCEG qualifieris obsolete.'The/ANALYSIS_DATA qualifiernowKuallowsyoutoextractanexpandedversionofsuchinfor-GmationandusetheVAXSourceCodeAnalyzer(SCA)to/& interactivelyqueryorreportit.UserAction:1Usethe/ANALYSIS_DATA qualifierto7obtain comprehensivecross-referencedata.i )?@O259,Numberofpsectsusedexceedsimplementation(limitof32768 Explanation:9Thenumberofpsectsusedinthecurrent0moduleexceedsthenumberallowed.UserAction:7Reducethenumberofpsectstothere-quiredlimit.Q !v0OExampleF-1:7SampleOutputListing?OcTESTFACT 11-Mar-1987%15:58:48VAX% BLISS--32&V4.3 cPagep1? 22-Jul-1983%16:06:56DISK$:[DIRECTORY]MYPROG.B32;13 (1);O;p0001J0MODULE&TESTFACT&(MAIN&=% MAINPROG)O\;p0002J0BEGIN!O;&WARN#0481JL1:0002,O;&Syntax%error%in%module%headO4;p0003J1O|;p0004J1OWNO;p0005J1 :A,O ;p0006J1 : B;OT;p0007J1,O;p0008J1ROUTINE%IFACT%(N)%=O;p0009J2:BEGINO,;p0010J2:,LOCALOt;p0011J2tRESULT;O;p0012J2:RESULT%=&1;O;p0013J2&:INCR%I%FROM&2%TO%.N%DOOL;p0014J2LRESULT%=% .REULT*.I;3O;&WARN#000..................1JL1:0014%O;& Undeclared%name:KREULTO$;p0015J2:$.RESULTOl;p0016J1:lEND;.TITLEKTESTFACT_.PSECTK $OWN$,NOEXE,200000&A:.BLKBp4 00004&B:.BLKBp4y .EXTRNKREULT  .PSECTK$CODE$,NOWRT,23?L 0000&00000&IFACT:J.WORDpSave&nothing L ;%0008 Z 50 01KD0&00002 MOVL#1,%RESULT ;%0012 Z 51 01KD0&00005 MOVL#1,%I ;%0013$ 06K11&00008$ BRB2$  $ ;Ok 500000GKCF@k 51KC5&0000A&1$:MULL3pI,%REULT,%RESULT;%0014 O F58Z 5104pACKF3&00010&2$:AOBLEQKN,%I,%1$  ; 04&00015  RET ;%0016HOe ;&Routine%Size:K22&bytes,Routine&Base:K$CODE$%+%0000O ;p0017J1,O7 ;p0018J1ROUTINE%RFACT%(N)%=O ;p0019J1: IF&.N&GTR%1O ;p0020J1 THENO;p0021J1 .N%*&RFACT(.N&-%1)OW;p0022J1:WELSEO;p0023J1 1;3?0000&00000&RFACT:J.WORDpSave&nothing ;%0018?O1TESTFACT 11-Mar-1987%15:58:48VAX% BLISS--32&V4.3 1Pagep2?y 22-Jul-1983%16:06:56DISK$:[DIRECTORY]MYPROG.B32;13 y(1) Z0104pACKD1&00002tCMPLN,%#1 ;%0019d*0EK15&00006t*BLEQ1$  *; Or7Er04pACdr01KC3&00008(trSUBL3p#1,%N,%-(SP);%0021EFpAFd01KFB&0000DtCALLSp#1,%RFACT  ; Z5004pACKC4&00011tMULL2pN,%R0  ;J04&00015 tJRET  J; Z50+d01KD0&00016&1$:MOVL#1,%R0 ;%001904&00019 tRET ;%0023HOC;&Routine%Size:K26&bytes,Routine&Base:K$CODE$%+%0016O;p0024J1*O;p0025J1ROUTINE%MAINPROG%=O];p0026J2:]BEGINO;p0027J2:A%=% IFACT(5);O;p0028J2:B%=% RFACT(5);O5;p0029J2O};p0030J2 :}1+O}!&VMS%wants%a&success%returnO;p0031J1:END; 0000&00000& MAINPROG:.WORDpSave&nothing ;%0025C05KDD&00002CPUSHLp#5 C;%0027C8pAF01KFB&00004CALLSp#1,%IFACT  ;t0000'KCF50KD0&00008MOVLR0,%A  ;05KDD&0000DPUSHLp#5 ;%0028cD3pAFc01KFB&0000FcCALLSp#1,%RFACT  c;t0000'KCF50KD0&00013MOVLR0,%B  ; z5001KD0&00018MOVL#1,%R0 ;%0031:04&0001B :RET  :;HO;&Routine%Size:K28&bytes,Routine&Base:K$CODE$%+%0030O.;p0032J1ENDOv;p0033J0ELUDOM OC;CPSECT%SUMMARY O;O;KNameZBytes Attributes O;Ob;K$OWN$Lb8KNOVEC,KWRT,KRD& ,NOEXE,NOSHR,KLCL,KREL,KCON,NOPIC,ALIGN(2)XO;K$CODE$76K NOVEC,NOWRT,KRD&,K EXE,NOSHR,KLCL,KREL,KCON,NOPIC,ALIGN(2)?OOTESTFACT 11-Mar-1987%15:58:48VAX% BLISS--32&V4.3 OPagep3? 22-Jul-1983%16:06:56DISK$:[DIRECTORY]MYPROG.B32;13 (1)O;& Information:J0OH;& Warnings:2O;&Errors: 0 O;;$;COMMAND% QUALIFIERS O;#z BLISS/LISTING% MYPROG.B32O ;&Size:% 76%code%+&8%data%bytesOV ;&Run%Time:V 00:00.2$O ;&Elapsed%Time:00:00.5"O ;& Lines/CPU%Min:8250$O-!;&Lexemes/CPU-Min:%31000%Ou!;&Memory%Used:J19%pages"O!;& Compilation&Complete7; -OE.1CBLISSCompilerFatalErrorsMOUThe followingfatalerrormessagesindicateseriousproblemsNOwiththe environmentorthe compiler,orboth.(WhensuchaIO conditionis detected, compilation terminates immediately.! #OINTERNALCOMPILERERRORMO(Thecompilerhasfailedaninternal consistencycheck.)ThisFOmessagemaybefollowedbyanerrornumber.+BLISS-32QOthenissuesa traceback printout.' (BLISS-36isunabletoissueQO2a traceback.)'PleasesubmitanSPRandincludeacopyofthe2Oprogramthat generatedthismessage. 2O INSUFFICIENTDYNAMICMEMORY AVAILABLEOO(OntheVAX,thiserrormayindicateabuginthe compiler.KOOntheDECsystem-10/20,yourprogrammaybetoolargetoOcompile. %OI/OERRORONINPUTFILELO(Anerroroccurredwhileaninputfilewasbeing accessed.LOThismaybeprecededbyothererrormessagesthatprovide9Omorespecific informationabouttheerror..&OI/OERRORONOBJECTFILEPO(Anerroroccurredwhiletheoutputobjectfilewasbeingac-LOcessed.)ThismaybeprecededbyothererrormessagesthatBOprovidemorespecific informationabouttheerror.0'OI/OERRORONLISTINGFILEQO(Anerroroccurredwhiletheoutputlistingfilewasbeingac-LOcessed.)ThismaybeprecededbyothererrormessagesthatBOprovidemorespecific informationabouttheerror.?K'OI/OERRORONLIBRARYFILEJO(AnerroroccurredwhileaBLISS precompiledlibraryfileJOwasbeing accessed.,ThismaybeprecededbyothererrorJOmessagesthatprovidemorespecific informationabouttheO2error.KK!5OLIBRARYPRE-COMPILATIONEXCEEDSCOMPILERO(LIMITLOA precompiledBLISSlibrarycannotbelargerthanapproxi-LOmately2048(DECsystem-10/20)diskblocks;thelibraryfileEO2willbedeleted.'VAX librarieshaveno restrictions. 3OMACRO OR STRUCTURE DECLARATION WITHINO( STRUCTUREBODYMOThisisa permanentimplementation restrictionintheBLISSO language. 3OREQUIRE DECLARATIONWITHINMACROBODYMO(Thisisa permanentimplementation restrictionintheBLISSO language.K K!)OFATALERRORINCOMMANDLINEKO(ThismessageappearsonVMSonly,forBLISS-32orBLISS-IO16.)Yourcommandlinewas improperlyformed.(ApreviousIOerrormessageprovided additional informationtodescribeO2whatwaswrong.5OI/OERRORDURINGCOMMANDLINESCANNINGCO(ThismessageappearsonTOPS-10orTOPS-20whenaEOsevereerroris encounteredincommandlineparsing.7ONESTED EXPRESSIONTOODEEP.SIMPLIFYANDO( RECOMPILELOThesourceprogramcontainsmorethan64levelsofnested2Oblocks,each containing declarations.g =6O UNRECOVERABLESOURCEERRORS.CORRECTANDO( RECOMPILEKOThismessageappearsonVMSonly,forBLISS-32orBLISS-GO16.-Errors previously encounteredbythecompilerhaveLO2confusedittothepointatwhichitcannotcontinuetheO compilation.}[%O F."Sample"Output!ListingOExampleF-1@8@~@<@p@`@ " BIe @BiJY`0`B/JQB!JQ0@8"iJY@HqeB@@@  @p@@<@~>@@?@N&%@P"<@Q"@Q"%@@@@8@D@D@D@D@8X@X@px@@(@p(@<D@D@_|DL@@ @@@@0`@@@ @`@`@`@<`@~`@0@?`0@`0@00@0@@@  p0``08p <x<`p8<@D@PceLdrSTД%R4MepP%Pŀ(8P E/BPED EB0RPdEd9< ar DB0p<<x8  >   8      p| 8<P  B@  MS 8| QT D( QRT D. QRT D) BQT D)p|8 p`| ` 0 0 8 0      > < A< 0~ ~ ` p @@>@@8@ @ @ @ 8@ D@  ΍@ 8QR@8 @Q@ DQR@> DQR@ 8N@ @ @ @ @!@@!@(Q@ (Q@ Ie I@jt'JI@ (JA (J A (J@ qa @,g @ @ @ @ @ e @px x@ 8 @( DY@p( D@D DQe @|EY@8@px@@@ @ @ @ @@( 1@ @@  1X)c@@S  Qe@@h4  QEg@@(  E@@( e@@h X.c@  @ @ @ @ @@8@@>@                    @p @@"@95gT"LDM&A"p4)I$HDE@"H^HDEA"!HB HDE"A")HR$HP8EfpLO@  @ pNA5͹ @MM   Q@ EE Q@ EER Q@ EER NED<I3)H"1&@8J(y HJ(I1})gINDEXINDEX!i  iAA9S8 AbbreviationsAbbreviationsDSN8 qualifiervaluesqualifier values;S N8 qualifiersqualifiers:S N8valuenamesvalue names@S9ADAWIfunctionADAWI function>S9ADDDfunctionADDD function>S8ADDFfunctionADDF function>S8ADDGfunctionADDG function >S8ADDHfunctionADDH function%>S8ADDMfunctionADDM function*XS##8/ANALYSIS_DATA qualifier/ANALYSIS_DATA qualifier}@S8%ASCIIliteral%ASCII literal>S8ASHPfunctionASHP function0>S9ASHQfunctionASHQ function<WS%%9 ASSEMBLER qualifiervalueASSEMBLER qualifier valueh!i  iBBBS8BICPSWfunctionBICPSW functionAQS""8BINARY qualifiervalueBINARY qualifier valuehDS8BIND declarationBIND declarationUS$$9BINDROUTINE declarationBIND ROUTINE declarationBS9BISPSWfunctionBISPSW functionDOS!!8BLISSmoduletemplateBLISS module template@SN8closingformatclosing formatHSN8 declararativepartdeclararative partBSN8 executablepartexecutable part1SN9prefacepreface3S 8BLISS-16BLISS-163S 9BLISS-36BLISS-36DS9%BLISS16lexical%BLISS16 lexicalDS8%BLISS32lexical%BLISS32 lexicalDS8%BLISS36lexical%BLISS36 lexicalBS8%BPADDRliteral%BPADDR literal<S 8BPTfunctionBPT functionGBS9%BPUNITliteral%BPUNIT literal@S9%BPVALliteral%BPVAL literal>S8BUGLfunctionBUGL functionJ>S8BUGWfunctionBUGW functionPJS8BUILTIN declarationBUILTIN declaration!i  iCC8S 9%Cliteral%C literal@S9CALLGfunctionCALLG functionS7S 8 CharactersCharacters(HS8/CHECK qualifier/CHECK qualifier@:S8/CHECKvalues/CHECK values-SN8FIELDFIELD1SN8INITIALINITIAL3S N8OPTIMIZEOPTIMIZE5S N9 REDECLAREREDECLARE>S9CHMEfunctionCHME function[>S8CHMKfunctionCHMK function[>S8CHMSfunctionCHMS function[>S8CHMUfunctionCHMU function[@S8CMPC3functionCMPC3 function^@S9CMPC5functionCMPC5 functionj>S9CMPDfunctionCMPD functionx>S8CMPFfunctionCMPF function>S8CMPGfunctionCMPG function>S8CMPHfunctionCMPH function>S8CMPMfunctionCMPM function>S9CMPPfunctionCMPP function>S9CodeexamplesCode examplesRBS8Code formattingCode formattingFS9/CODE qualifier/CODE qualifierW:S 8CODEswitchCODE switch>S8CodingerrorsCoding errors<S N8blockvaluesblock values:S N8fromlinkerfrom linker<S N9indexedloopindexed loop:S N9macrousagemacro usage<S N8missingcodemissing code<S N8missingdotsmissing dotsHSN8 nonvaluedroutinesnonvalued routinesJSN8operator precedenceoperator precedence4S N9PCusagePC usage>SN9routinecallsroutine calls7S N8 semicolonssemicolons>SN8signedfieldssigned fieldsBSN8unsignedfieldsunsigned fieldsBSN8valuedroutinesvalued routines>S9CodingexamplesCoding examples>SN8ALPHAprogramALPHA programS<S N8CALCprogramCALC programk8S 9CommandlineCommand line5S N9 semanticssemantics)/SN8syntaxsyntax'1S8summarysummaryzYS&&8 COMMENTARY qualifiervalueCOMMENTARY qualifier valueh5S 8 CompilationCompilation1SN9summarysummary3S 9CompilerCompiler;S N8 optimizationoptimization/SN8outputoutput3S N8overviewoverview/SN8phasesphases+S9CODECODEBS9code generationcode generationFS8code optimizationcode optimization -S8DELAYDELAY-S8FINALFINAL+S8FLOWFLOW>S8flowanalysisflow analysis5S 8 heuristicheuristicDS9lexicalanalysislexical analysis/S9LEXSYNLEXSYN<S 8namebindingname binding/S8OUTPUTOUTPUT<S 8outputfilesoutput files#HS8 syntacticanalysissyntactic analysis/S9TNBINDTNBIND@SN9switcheffectsswitch effects%3S N8switchesswitches+S8CODECODE/S8NOCODENOCODE7S 8 NOOPTIMIZENOOPTIMIZE/S9NOSAFENOSAFE-S9NOZIPNOZIP3S 9OPTIMIZEOPTIMIZE3S 9OPTLEVELOPTLEVEL+S8SAFESAFE)S  8ZIPZIPRS""8 COMPILETIME declarationCOMPILETIME declaration=S8 ConcatenationConcatenation%5S N9 indicatorindicator%<S 9CRCfunctionCRC functionRS""8Cross-referencelistingCross-reference listing>SN8definedfielddefined field/SN8headerheaderDSN8 referencedfieldreferenced field<S N9symbolfieldsymbol field8S N9typefieldtype field\S%%8/CROSS_REFERENCE qualifier/CROSS_REFERENCE qualifierHLS!!8/CROSS_REFERENCEvalue/CROSS_REFERENCE value3S N8MULTIPLEMULTIPLE7S N8 NOMULTIPLENOMULTIPLE@S8CVTDFfunctionCVTDF function@S8CVTDIfunctionCVTDI function@S9CVTDLfunctionCVTDL function@S9CVTFDfunctionCVTFD function@S8CVTFGfunctionCVTFG function@S8CVTFHfunctionCVTFH function@S8CVTFIfunctionCVTFI function@S8CVTFLfunctionCVTFL function@S9CVTGFfunctionCVTGF function@S9CVTGHfunctionCVTGH function@S8CVTGLfunctionCVTGL function@S8CVTHFfunctionCVTHF function@S8CVTHGfunctionCVTHG function@S8CVTHLfunctionCVTHL function@S8CVTIDfunctionCVTID function@S9CVTIFfunctionCVTIF function@S9CVTLDfunctionCVTLD function@S8CVTLFfunctionCVTLF function@S9CVTLHfunctionCVTLH function@S8CVTLPfunctionCVTLP function@S8CVTPLfunctionCVTPL function@S8CVTPSfunctionCVTPS function@S8CVTPTfunctionCVTPT function!BS9CVTRDLfunctionCVTRDL function.BS9CVTRFLfunctionCVTRFL function4BS8CVTRGLfunctionCVTRGL function:BS8CVTRHLfunctionCVTRHL function@@S8CVTSPfunctionCVTSP functionF@S8CVTTPfunctionCVTTP functionR!i  jDDLS9/DEBUG qualifier/DEBUG qualifierW<S 8DEBUGswitchDEBUG switch5S 8 DebuggingDebugging6JSN8address expressionsaddress expressionsHLSN8 arithmetic operatorsarithmetic operatorsD/S N9commandscommands1S8summarysummary/S9syntaxsyntax@/SN9/DEBUG/DEBUG<S N8displaymodedisplay mode;8S N8entrymodeentry mode;DSN8field referencesfield referencesc9S N8 HEXIDECIMALHEXIDECIMAL<SS##N9REF structure referenceREF structure referenceASN9scopeofnamesscope of names9S N8 source-linesource-lineHSN8special charactersspecial charactersHLSN8 structure referencesstructure referencesn3S N8SYMBOLICSYMBOLIC<7S 9 DeclarationsDeclarations+SN9BINDBIND<S N8BINDROUTINEBIND ROUTINE1SN8BUILTINBUILTIN9S N8 COMPILETIMECOMPILETIME3S N8EXTERNALEXTERNALDSN8EXTERNALLITERALEXTERNAL LITERALDSN8EXTERNALROUTINEEXTERNAL ROUTINE-SN9FIELDFIELD/SN9GLOBALGLOBAL.;S N8 KEYWORDMACROKEYWORDMACRO1SN8LIBRARYLIBRARY1SN8LINKAGELINKAGE5SN8LITERALLITERAL-SN9LOCALLOCAL.-SN9MACROMACRO)S  N8OWNOWN.1SN8REQUIREREQUIRE5S N8 STRUCTURESTRUCTURE3S N8SWITCHESSWITCHES5S N9 UNDECLAREUNDECLARE/S 9DefaultsDefaults7S N8 qualifiersqualifiers7S 9 DelimitersDelimiters(>S8DIVDfunctionDIVD function_>S8DIVFfunctionDIVF functiond>S8DIVGfunctionDIVG functioni>S8DIVHfunctionDIVH functionn!i  iEE-S9EditorsEditors)S  N9LSELSEBS8EDITPCfunctionEDITPC functions>S8EDIVfunctionEDIV function>S8%ELSElexical%ELSE lexical >S8EMULfunctionEMUL function@S9ErrormessagesError messages6S N9formatofformat of3S N8pointerspointers4S N8typesoftypes ofQS""8ERRORS qualifiervalueERRORS qualifier valueTS!!8 /ERROR_LIMIT qualifier/ERROR_LIMIT qualifierW:S 8ERRSswitchERRS switch1S8%EXPAND%EXPAND_S))9 EXPAND_MACROS qualifiervalueEXPAND_MACROS qualifier valueLS9EXTERNAL declarationEXTERNAL declaration]S((8EXTERNALLITERAL declarationEXTERNAL LITERAL declaration]S((8EXTERNALROUTINE declarationEXTERNAL ROUTINE declaration!i  iFF<S 8FFCfunctionFFC function<S 9FFSfunctionFFS function:S 9%FIlexical%FI lexical FS8FIELD declarationFIELD declarationOS!!8FIELD qualifiervalueFIELD qualifier valueC2S 8FiletypeFile type3S N8defaultsdefaults8ES9File-designatorFile-designator8)S9FilesFiles1SN8LIBRARYLIBRARY1SN8REQUIREREQUIRE+S8FormatFormat@SN8errormessageserror messages@SN8prefacestringpreface string!i  iGGHS9GLOBAL declarationGLOBAL declaration.!i  iHH>S8HALTfunctionHALT functionQS""8HEADER qualifiervalueHEADER qualifier value9S 8 HEXIDECIMALHEXIDECIMAL<!i  iII:S 9%IFlexical%IF lexical NS  9ImplementationlimitsImplementation limitsJSN8BLISS-32 constructsBLISS-32 constructsFSN8System interfacesSystem interfaces@S8INDEXfunctionINDEX functionSS##8INITIAL qualifiervalueINITIAL qualifier valueCBS9INSQHIfunctionINSQHI functionBS9INSQTIfunctionINSQTI functionBS9INSQUEfunctionINSQUE function!i  iKKTS##8 KEYWORDMACRO declarationKEYWORDMACRO declaration!i  iLLgS ++8Language-SensitiveEditor(LSE)Language-Sensitive Editor (LSE)0OS!!8LEVEL qualifiervalueLEVEL qualifier valuetBS9Lexical functionsLexical functions3S N9%BLISS16%BLISS163S N8%BLISS32%BLISS323S N8%BLISS36%BLISS36-SN8%ELSE%ELSE 1SN8%EXPAND%EXPAND)S  N9%FI%FI )S  N9%IF%IF /SN8%QUOTE%QUOTE7S N8 %REMAINING%REMAINING-SN8%THEN%THEN 5S 8 LibrariesLibraries.-S8LIBRARYLIBRARY9S N8 declarationdeclaration1SN8filesfilesLS9/LIBRARY qualifier/LIBRARY qualifier}SS##9LIBRARY qualifiervalueLIBRARY qualifier valueJS8LINKAGE declarationLINKAGE declaration1S8LinkingLinking'3S N8commandscommands-1SN8exampleexample4FS9/LIST qualifier/LIST qualifier}6S 9LISTswitchLIST switch3S N8ASSEMBLYASSEMBLY/SN8BINARYBINARY7S N8 COMMENTARYCOMMENTARY/SN8EXPANDEXPAND1SN9LIBRARYLIBRARY/SN9OBJECTOBJECT1SN8REQUIREREQUIRE/SN8SOURCESOURCE3S N8SYMBOLICSYMBOLIC-SN8TRACETRACENS8LITERAL declarationLITERAL declarationFS8LOCAL declarationLOCAL declaration.>S9LOCCfunctionLOCC functiongS ++9LSE(Language-SensitiveEditor)LSE (Language-Sensitive Editor)0!i  iMMXS%%8Machine-specific functionsMachine-specific functionsDSN8input parametersinput parametersJSN8 instructionsummaryinstruction summaryFSN9output parametersoutput parameters`S''9/MACHINE_CODE_LIST qualifier/MACHINE_CODE_LIST qualifierdRS$$8/MACHINE_CODE_LISTvalues/MACHINE_CODE_LIST values5S N8 ASSEMBLERASSEMBLER/SN8BINARYBINARY7S N8 COMMENTARYCOMMENTARY/SN9OBJECTOBJECT3S N9SYMBOLICSYMBOLIC;S N9 UNIQUE_NAMESUNIQUE_NAMESFS9MACRO declarationMACRO declaration/S8MacrosMacros9S N8 conditionalconditionalASN8creatingasetcreating a setFSN8 enumerationtypesenumeration types5S N9 iterativeiterativeFSN9lexical functionslexical functionsLSN8machine dependenciesmachine dependencies<S N8setelementsset elementsBSN8set membershipsset memberships4S N8SETtypeSET typeJSN9string instructionsstring instructionsBS9MATCHCfunctionMATCHC function>S8MFPRfunctionMFPR functionLS8 Module-headswitchModule-head switch+SN8valuesvalues+S8CODECODE-S8DEBUGDEBUG+S8ERRSERRS'S9LISTLIST3S X9ASSEMBLYASSEMBLY/SX8BINARYBINARY7S X8 COMMENTARYCOMMENTARY/SX8EXPANDEXPAND1SX8LIBRARYLIBRARY/SX9OBJECTOBJECT1SX9REQUIREREQUIRE/SX8SOURCESOURCE3S X8SYMBOLICSYMBOLIC-SX8TRACETRACE-S8NOZIPNOZIP3S 8OPTLEVELOPTLEVEL+S9SAFESAFE/S9UNAMESUNAMES)S  8ZIPZIP@S9MOVC3functionMOVC3 function@S8MOVC5functionMOVC5 function>S8MOVPfunctionMOVP functionBS8MOVPSLfunctionMOVPSL function@S8MOVTCfunctionMOVTC functionBS9MOVTUCfunctionMOVTUC function>S9MTPRfunctionMTPR function >S8MULDfunctionMULD function >S8MULFfunctionMULF function>S8MULGfunctionMULG function>S8MULHfunctionMULH functionUS$$9MULTIPLE qualifiervalueMULTIPLE qualifier valueN!i  iNN<S 8NOPfunctionNOP function!<S 8NOZIPswitchNOZIP switch!i  iOO<S8ObjectlistingObject listing1SN9defaultdefaultJS8/OBJECT qualifier/OBJECT qualifier}HS9 Operating proceduresOperating procedures5S N9 compilingcompiling@S8OPLEVELswitchOPLEVEL switchNS8 /OPTIMIZE qualifier/OPTIMIZE qualifierpUS$$8OPTIMIZE qualifiervalueOPTIMIZE qualifier valueC@S8 /OPTIMIZEvalues/OPTIMIZE values/SN9HEADERHEADER-SN9LEVELLEVEL1SN8LIBRARYLIBRARY5S N8 PAGE_SIZEPAGE_SIZE-SN8QUICKQUICK1SN8REQUIREREQUIRE+SN9SAFESAFE/SN9SOURCESOURCE-SN8SPACESPACE-SN8SPEEDSPEED;S N8 TRACE_MACROSTRACE_MACROS@S8OutputlistingOutput listing/SN8headerheader:S N8objectpartobject part:S N9sourcepartsource partBS9OWN declarationOWN declaration.!i  iPPWS%%8 PAGE_SIZE qualifiervaluePAGE_SIZE qualifier value)S  8PICPIC+S8PLITPLITt1SN9defineddefinedu/SN9scalarscalarx1SN8stringsstrings|VS$$8Position-independentcodePosition-independent codeHS8 PredeclaredliteralsPredeclared literals/SN8%ASCII%ASCII1SN9%BPADDR%BPADDR1SN9%BPUNIT%BPUNIT/SN8%BPVAL%BPVAL'S  N9%C%C/SN8%UPVAL%UPVALBS8PROBERfunctionPROBER function$BS8PROBEWfunctionPROBEW function+!i  iQQ3S 8 QualifiersQualifiersASN9 abbreviationsabbreviations?SN8/ANALYSIS_DATA/ANALYSIS_DATA}-SN8/CODE/CODEWCSN8/CROSS_REFERENCE/CROSS_REFERENCEH3SN8/DEBUG/DEBUGWDSN8defaultsettingsdefault settings3S N9defaultsdefaults;S N9 /ERROR_LIMIT/ERROR_LIMITW3S N8/LIBRARY/LIBRARY}-SN8/LIST/LIST}GSN8/MACHINE_CODE_LIST/MACHINE_CODE_LISTd@SN8negativeformsnegative forms1SN8/OBJECT/OBJECT}@SN8positiveformspositive forms/SN9/QUICK/QUICKp;S N9 /SOURCE_LIST/SOURCE_LIST5S N8 /TERMINAL/TERMINAL7S N8 /TRACEBACK/TRACEBACKW3S N8/VARIANT/VARIANTWES8Qualifiers>/CHECKQualifiers>/CHECK@KS9Qualifiers>/OPTIMIZEQualifiers>/OPTIMIZEpDS9/QUICK qualifier/QUICK qualifierpOS!!8QUICK qualifiervalueQUICK qualifier valuet/S8%QUOTE%QUOTE!i  iRRWS%%8 REDECLARE qualifiervalueREDECLARE qualifier valueCHS9 %REMAININGlexical%REMAINING lexicalBS9REMQHIfunctionREMQHI function2BS8REMQTIfunctionREMQTI function2BS8REMQUEfunctionREMQUE function<-S8REQUIREREQUIRE9S N8 declarationdeclaration1SN8filesfilesSS##8REQUIRE qualifiervalueREQUIRE qualifier value<S 9ROTfunctionROT functionB!i  iSSMS  8SAFE qualifiervalueSAFE qualifier valuet:S 8SAFEswitchSAFE switchOS!!8SampleoutputlistingSample output listing^S''8SCA(SourceCode Analyzer)SCA (Source Code Analyzer)0@S9SCANCfunctionSCANC functionF>S9SKPCfunctionSKPC functionP^S''8SourceCodeAnalyzer(SCA)Source Code Analyzer (SCA)0TS!!8 /SOURCE_LIST qualifier/SOURCE_LIST qualifierFS8 /SOURCE_LISTvalues/SOURCE_LIST values=SN8 EXPAND_MACROSEXPAND_MACROSOS!!9SPACE qualifiervalueSPACE qualifier valuet@S9SPANCfunctionSPANC functionYOS!!9SPEED qualifiervalueSPEED qualifier valuetYS&&9 STATISTICS qualifiervalueSTATISTICS qualifier valueNS  8 STRUCTURE declarationSTRUCTURE declaration>S8SUBDfunctionSUBD functionc>S8SUBFfunctionSUBF functionh>S8SUBGfunctionSUBG functionm>S9SUBHfunctionSUBH functionr>S9SUBMfunctionSUBM functionw/S 8SwitchesSwitches+SN8CODECODE-SN8DEBUGDEBUG+SN8ERRSERRS+SN9LISTLIST-SN9NOZIPNOZIP1SN8OPLEVELOPLEVEL+SN8SAFESAFE/SN8UNAMESUNAMES)S  N8ZIPZIPPS8SWITCHES declarationSWITCHES declaration+SN8valuesvalues+S8ERRSERRS'S9LISTLIST3S X9ASSEMBLYASSEMBLY/SX8BINARYBINARY7S X8 COMMENTARYCOMMENTARY/SX8EXPANDEXPAND1SX8LIBRARYLIBRARY/SX9OBJECTOBJECT1SX9REQUIREREQUIRE/SX8SOURCESOURCE3S X8SYMBOLICSYMBOLIC-SX8TRACETRACE-S8NOZIPNOZIP+S9SAFESAFE/S9UNAMESUNAMES)S  8ZIPZIPKS9SWITCHES-declarationSWITCHES-declaration3S 8SYMBOLICSYMBOLIC<US$$8SYMBOLIC qualifiervalueSYMBOLIC qualifier valuehBS8SystemservicesSystem services.HSN8routine interfacesroutine interfaces7@SN9sampleprogramsample program=!i  iTTBS8TerminaloutputTerminal outputNS8 /TERMINAL qualifier/TERMINAL qualifier@S8 /TERMINALvalues/TERMINAL values/SN8ERRORSERRORS7S N9 STATISTICSSTATISTICSHS9 TESTBITCCfunctionTESTBITCC function}JS8 TESTBITCCIfunctionTESTBITCCI function}HS8 TESTBITCSfunctionTESTBITCS function}HS8 TESTBITSCfunctionTESTBITSC function}HS8 TESTBITSSfunctionTESTBITSS function}JS9 TESTBITSSIfunctionTESTBITSSI function}>S8%THENlexical%THEN lexical -S9ToolsTools.OS!!N9TutorialTerminalI/OTutorial Terminal I/O2cS))N8VAXLanguage-SensitiveEditorVAX Language-Sensitive Editor0ZS%%N8VAXSourceCodeAnalyzerVAX Source Code Analyzer0PS8 /TRACEBACK qualifier/TRACEBACK qualifierW]S((8 TRACE_MACROS qualifiervalueTRACE_MACROS qualifier valueCS9TransportabilityTransportability3S N9conceptsconcepts7S N8 guidelinesguidelinesLSN8parallel definitionsparallel definitions?SN8parametizationparametization7S N8 strategiesstrategies5S 9 isolationisolation7S 9 simplicitysimplicity7S N8 techniquestechniques)5S 8 addressesaddressesG+S8datadata,BS8field selectorsfield selectors?S8initializationinitialization+S8PLITPLITt1S9stringsstringsb7S 9 structuresstructures-SN8toolstools>S8libraryfileslibrary files3S 8literalsliterals/S8macrosmacros-S9namesnames>S9REQUIREfilesREQUIRE files3S 8routinesroutines&3S 8switchesswitches `S**8TutorialTerminalI/O(TUTIO)Tutor"E E ial Terminal I/O (TUTIO)2!i  iUU>S8UNAMESswitchUNAMES switchNS  9 UNDECLARE declarationUNDECLARE declaration]S((9 UNIQUE_NAMES qualifiervalueUNIQUE_NAMES qualifier valueh@S9%UPVALliteral%UPVAL literal!i  iVV+S8ValuesValuesASN8 abbreviationsabbreviations@SN8/CHECK qualifier/CHECK qualifier-S8FIELDFIELDC1S9INITIALINITIALC3S 9OPTIMIZEOPTIMIZEC5S 8 REDECLAREREDECLARECTS%%N8/CROSS_REFERENCE qualifier/CROSS_REFERENCE qualifier3S 8MULTIPLEMULTIPLENXS''N8/MACHINE_CODE_LIST qualifier/MACHINE_CODE_LIST qualifier5S 9 ASSEMBLERASSEMBLERh/S9BINARYBINARYh7S 8 COMMENTARYCOMMENTARYh3S 8SYMBOLICSYMBOLICh;S 8 UNIQUE_NAMESUNIQUE_NAMEShFSN8 /OPTIMIZE qualifier/OPTIMIZE qualifier-S8LEVELLEVELt-S8QUICKQUICKt+S9SAFESAFEt-S9SPACESPACEt-S8SPEEDSPEEDtLS!!N8 /SOURCE_LIST qualifier/SOURCE_LIST qualifier=S8 EXPAND_MACROSEXPAND_MACROS/S8HEADERHEADER1S9LIBRARYLIBRARY5S 9 PAGE_SIZEPAGE_SIZE1S8REQUIREREQUIRE;S 8 TRACE_MACROSTRACE_MACROSFSN8 /TERMINAL qualifier/TERMINAL qualifier/S8ERRORSERRORS7S 9 STATISTICSSTATISTICSLS9/VARIANT qualifier/VARIANT qualifierW!i  iXX<S 8XFCfunctionXFC function!i  iZZ8S 8ZIPswitchZIP switch ^?l wB)OG.1BUsingLSEwithBLISS-32KOUTheVAXLanguage-SensitiveEditor(LSE)isapowerfulandOOflexibletexteditordesigned specificallyforsoftwaredevel-JOopment.)LSEhas importantfeaturesthathelpyouproduce5O^ syntacticallycorrectcodein BLISS-32. NOToinvokeLSE,issuetheLSEDITcommandfollowedbyafileOOnamewitha.B32filetypeattheDCLprompt.'Forexample: O$LSEDIT%USER.B32NOThe followingsectionsdescribesomeofthekeyfeaturesofOLSE.SectionG.1.16 discusseshowtoentersourcecodeus-O5ingLSEand)5SectionG.1.2/5 describesLSE'scompiler interfaceO features.SectionG.1.30givesexamplesofhowtogenerate,OBLISS-32sourcecodewithLSE.*?*)?*P?NHOFormoredetailsonadvancedfeaturesofLSE,seethe GuideEO toVAXLanguage-SensitiveEditorandVAXSourceCodeO5 Analyzer 5.! ;OG.1.1BEnteringSourceCodeUsingTokensandL( PlaceholdersNOLSE simplifiesthetasksof developingand maintainingsoft-QOwaresystems.&LSEprovidesthe functionsofa traditionaltextKO=editor,plus additionalpowerful features:*language-specificIO placeholdersandtokens,aliases,commentand indentation?Ocontrol,and templatesfor subroutine libraries.jO Placeholders=uaremarkersinthesourcecodethatindicateKO locationswhereyoucanprovideprogramtext.) PlaceholdersQO5helpyoutosupplythe appropriatesyntaxinagivencontext.PO Generally,youdonotneedtotype placeholders;rather,they+OareinsertedforyoubyLSE. WNO Placeholdersareeitheroptionalor required.(Requiredplace-SOholders,whichare delimitedbybraces( {} ), representplacesJO5inthesourcecodewhereyoumustprovideprogramtext.SOOptional placeholders,whichare delimitedbybrackets( [ ] ),KO representplacesinthesourcecodewhereyoucaneitherHO>provide additional constructsordeletethe placeholder.d::OTherearethreetypesofLSE placeholders:! xe OOTypeof"O+ Placeholder Description OFROTerminalProvidestextthat describesvalid replacementsfortheb placeholderFOw NonterminalExpandsinto additionallanguage constructsOMenuHbProvidesalistofoptions correspondingtotheplace-b>holder OY0 FOYoucanmoveforwardorbackwardfrom placeholdertoOO placeholder.(In addition,youcandeleteorexpand placehold-O5ersasneeded.l5SectionG.1.3(O5showsexamplesof expandingO placeholders.*l? OTokens= typically representkeywordsin BLISS-32.*WhenLO expanded,tokensprovide additionallanguage constructs.'YouOO5cantypetokensdirectlyintothebuffer.* Generally,youuseLOtokenswhenyouwanttoaddlanguage constructsandthereJOareno placeholdersinanexistingprogram.+Forexample,IO>typingIFandissuingtheEXPANDcommandcausesatem-POplateforanIF constructtoappearonyourscreen.)YoucanLOalsousetokenstoby-passlongmenusincaseswhereex-POHpandinga placeholder,suchas {statement},wouldresultinaOlengthymenu.! NTOYoucanusetokenstoinserttextwheneditinganexistingfileQObytypingthenameforafunctionorkeywordandissuingtheO5EXPANDcommand. NHOLSEcommandsallowyouto manipulatetokensandplace-LOholders.(ThesecommandsandtheirdefaultkeybindingsareO5asfollows: g OOCommand yKeyBindingFunction OObEXPANDybCTRL/EbExpandsaplace-holderOwUNEXPANDyw PF1-CTRL/EReversestheeffectofthemost_recentplace-holderH expansion+OGOTOPLACEHOLDER/FORWARDCTRL/NMovesthecursorto\thenextplace-holder#OqGOTOPLACEHOLDER/REVERSEyqCTRL/PqMovesthecur- sortotheZpreviousplace-holder,OnERASEPLACEHOLDER/FORWARDCTRL/KnErasesaplace- holderO UNERASE PLACEHOLDERy  PF1-CTRL/K~Restores themost recentlyl erased place- holderO None!y DownarrowMovesthe indica- tordowni througha menuO0 Noney0 UparrowMovesthe~  indicator upthroughamenuONone y nzENTERRETURN  oSelectsamenu-option OH)! $ROYoucandisplayalistofalldefinedtokensand placeholders,NOora particulartokenor placeholder,withtheLSEcommands=O5SHOWTOKENandSHOW PLACEHOLDER.TocopytheUOlisted informationintoaseparatefile,firstissuethe appropri-KOateSHOWcommandtoputthelistintothe$SHOWbuffer.0O>Thenissuethe following commands:OLSE> GOTO%BUFFER&$SHOWO LSE>  WRITE&filename QOToobtainahardcopyofthelist,usethePRINTcommandat9ODCLleveltoprintthefileyoucreated.(OG.1.2B CompilingSourceCodeLO4Tocompileyourcodeandreview compilationerrorswithoutLOleavingtheeditingsession,youcanusetheLSEcommands>OCOMPILEandREVIEW.TheCOMPILEcommandissuesGO=aDCLcommandina subprocesstoinvoketheBLISS-32JO compiler.,Thecompilerthen generatesafileofcompile-HOtime diagnostic informationthatLSEcanusetoreviewKOG compilationerrors.)The diagnostic informationis generatedIOwiththe /DIAGNOSTICS qualifierthatLSEappendstotheO compilationcommand. zIOForexample,ifyouissuetheCOMPILEcommandwhileinIOthebuffer USER.B32,the followingDCLcommand executes:1Oa$&BLISS&USER.B32/DIAGNOSTICS=USER.DIA-! KOLSEsupportsalloftheBLISS-32 compiler'scommandqual-MOifiersaswellas user-suppliedcommand procedures.'YoucanMO5specifyDCL qualifiers,suchas /LIBRARY,wheninvokingtheOcompilerfromLSE.T *COTheREVIEWcommanddisplaysany diagnosticmessagesNOthatresultfroma compilation.(LSEdisplaysthe compilationLO5errorsinonewindowandthe correspondingsourcecodeinLOasecondwindowsothatyoucanreviewyourerrorswhileMO examiningthe associatedsourcecode.)This capabilityelimi-PO>natestediousstepsintheerror correctionprocessandhelpsROensurethatalltheerrorsarefixedbeforeyou recompileyourOprogram.NIOLSEprovidesseveralcommandstohelpyoureviewerrorsIOandexamineyoursourcecode.)These commands,andtheirGO5defaultkeybindingswhere applicable,areasfollows:(! T  OOCommand KKeyBindingFunction OObCOMPILEKbNone%bCompilesthecontentsof#thesourcebuffer.'You#canissuethiscommand'Kwiththe/REVIEW qualifier"toputLSEinREVIEW'mode immediatelyafterthe3 compilation.OREVIEWKNone!PutsLSEintoREVIEW'modeanddisplaysanyer-*Hrors resultingfromthelast compilation.OENDREVIEWKNoneRemovesthebuffer%\$REVIEWfromthescreen;%returnsthecursortoa$singlewindow containingEthesourcebuffer.OGOTOSOURCEKCTRL/G%Movesthecursortothe( sourcebufferthatcontainsZtheerror.ONEXTSTEPKCTRL/F%Movesthecursortothe&!nexterrorinthebuffern$REVIEW. OPREVIOUSSTEPCTRL/B%Movesthecursortothe*6 previouserrorinthebuffer $REVIEW. K) 8 K < K :N Downarrow Uparrow N) 9 N = N ;' MovesthecursorwithinaJ buffer. O5 u VKOG.1.3BExamplesKO4The followingsectionsshowexamplesofusingsomecommonKOtokensand placeholderstowriteBLISS-32code.(Theexam-KOplesareexpandedtoshowtheformatsand guidelinesLSEQO= provides;however,notalloftheexamplesarefully expanded.ZGOTheexamplesshow expansionsofthe followingBLISS-32O features: ` Module declaration `O ORoutine declaration ` IF statement `N NSelect expression `  CH$COMPAREfunction NKO Instructionsand explanationsprecedeeachexample,andanOarrow( k!H) indicatesthelineinthecodewhereanactionhasO5 occurred.w OSeeSectionG.1.16forthecommandsthat manipulatetokensOand placeholders.*F?NORememberthatbracesandtildes( ~{}~ )encloserequiredSO placeholders;bracketsandtildes( ~[ ]~ )encloseoptionalKO5 placeholders.*Notethatwhenyoueraseanoptionalplace-POholder,LSEalsodeletesany associatedtextbeforeandafterOthat placeholder. h_UkNote h_4KeywordssuchasMODULE,ROUTINE,IF,7HSELECT,and CH$COMPAREcanbetokensasFwellas placeholders; therefore,anytimeyouarein>theBLISS-32language environmentyoucantypeDRoneofthesewordsandpressCTRL/Etoexpandthe construct. NEOWhenyouuseLSEtocreateanewBLISS-32program,ROtheinitialstring[~MODULE~]appearsatthetopoftheO5screen.$OG.1.4BModule Declaration1O4Expandthetoken[~MODULE~].(O[~%TITLE%'[~quoted_chars~]'~]4OMODULE%{~name~}%[~(module_switches)~]&=OHBEGIN*O [~software_copyright_statement~]$O![~module_level_comments~]'O [~module_level_declarations~]$Oh[~routine_declaration~]... OEND!&End%of%moduleOELUDOML #hKOErasetheoptional placeholder[~%TITLE'[~quoted_chars~JO]'~]andexpandthe placeholder[~(module_switches)~]OO5twicetodisplayamenu.'Selecttheoption{~special_switch~}GOtodisplayanothermenu,andselecttheoptionIDENT.\O->%MODULE%{~name~}%(IDENT&=%'[~quoted_chars~]'&,%[~module_switches~]...)%=ZBEGIN* [~software_copyright_statement~]$![~module_level_comments~]'2[~module_level_declarations~]$z[~routine_declaration~]... END!&End%of%module ELUDOM BOExpandthe placeholder[~module_level_comments~].XOMODULE%{~name~}%(IDENT&=%'[~quoted_chars~]'&,%[~module_switches~]...)%=*OP [~software_copyright_statement~]OBEGIN O!++O(!& FACILITY: Op!O!p[~tbs~] O!OH!& ABSTRACT: O!O!p[~tbs~] O !Oh!&AUTHORS: O!O!p[~tbs~] O@! O!%O!&CREATION&DATE:&[~tbs~] O!#O_!& MODIFICATION%HISTORY: O!--'O[~module_level_declarations~]$O7[~routine_declaration~]... OEND!&End%of%moduleOELUDOM 'OG.1.4.1CRoutine DeclarationOO)Expandthe placeholder[~routine_declaration~]todisplayaOmenu.%O->[~routine_declaration~]u K/OSelecttheoptionCOMPLEX_ROUTINE.([~%SBTTL%'[~quoted_chars~]'~]XOP->% [~GLOBAL~]&ROUTINE%{~name~}% [~(formals)~]%:&[~routine_attributes~]%=$[~routine_level_comments~]TBEGINT([~declaration~]...Tp{~expression~}...TEND;$[~routine_declaration~]... rNOErasethe placeholder[~GLOBAL~],expand[ ~(formals)~],1Oanderase[~routine_attributes~].(a[~%SBTTL%'[~quoted_chars~]'~]NO->%ROUTINE&{~name~}&([~input_formals~]%[~;%output_formals~])%=$[~routine_level_comments~]T9BEGINT[~declaration~]...T{~expression~}...TEND;#Y[routine_declaration~]...rhHOErasethe placeholder[~input_formals~]andexpand[O~output_formals~].(a[~%SBTTL%'[~quoted_chars~]'~]>O->%ROUTINE&{~name~}&(%;%{~formal_items~}...)%=$[~routine_level_comments~]T9BEGINT[~declaration~]...T{~expression~}...TEND;$Y[~routine_declaration~]...v ]5OExpandthe placeholder{~formal_items~}.([~%SBTTL%'[~quoted_chars~]'~]dOP->%ROUTINE&{~name~}&(;&{~name~}&:%[~formal_attributes~]...,%[~formal_items~]...)%=$[~routine_level_comments~]TBEGINT([~declaration~]...Tp{~expression~}...TEND;$[~routine_declaration~]...L EOTypeOutargoverthesecond{~name~} placeholderand>Oexpandthe placeholder[~formal_attributes~].(a[~%SBTTL%'[~quoted_chars~]'~]\O->%ROUTINE&{~name~}&(;&Outarg%:&{~map_attributes~}%[~formal_attributes~]%,[~formal_items~]...)=$9[~routine_level_comments~]TBEGINT[~declaration~]...T{~expression~}...TYEND;$[~routine_declaration~]...d:FOExpandthe placeholder{~map_attributes~}todisplayaJOmenu.,Selecttheoption{~structure_attribute~}todisplayIO5amenu.)SelecttheoptionREF{~structure_type~}.*ExpandMOthe placeholder{~structure_type~}todisplayamenu.(SelectFO REF_VECTOR,anderasetheoptional placeholder[{~num-DO>ber_of_elements~}[~allocation_and_or_extension~]]andNOtheoptionallist placeholders[~formal_attributes~]and[O~formal_items~]... k.(t[~%SBTTL%'[~quoted_chars~]'~]AO->%ROUTINE&{~name~}&(;&Outarg%:&REF% VECTOR[])%=$[~routine_level_comments~]TLBEGINT[~declaration~]...T{~expression~}...T$END;$l[~routine_declaration~]... OG.1.4.2CIF StatementIO)Expandthe placeholder{~expression~}todisplayamenu.BEGIN[~declaration~]...O>->%{~expression~}...END; "OSelecttheoptionIF.BEGINP[~declaration~]... O->%IF%{~expression~}THEN({~expression~}%p[~ELSEK{~expression~}&~];[~expression~]...END;.aCOExpandthe placeholder[~ELSE{~expression~}~].BEGINP[~declaration~]...IF%{~expression~}THENz({~expression~}Op->%ELSEz{~expression~};[~expression~]...HEND;%OG.1.4.3CSelect ExpressionIO)Expandthe placeholder{~expression~}todisplayamenu.BEGIN[~declaration~]...O>->%{~expression~}...END;O%&OSelecttheoptionSELECT.BEGINP[~declaration~]...9O->JSELECT[~select_type~]&{~select_index~}%OF zSET!z([{~select_labels~}...]:p{~select_action~};z{~sel_lines~}...zTES;H[~expression~]...END;ZMOExpandthe placeholder[ ~select_type~]todisplayamenuNOandselecttheoptionONE.Type.valueoverthe placeholderO5{~select_index~}.BEGIN[~declaration~]...#OI->J SELECTONE&.value%OF zSET!z[{~select_labels~}...]:!{~select_action~};zi{~sel_lines~}...zTES;[~expression~]...AEND; Z5OExpandthe placeholder{~select_labels~}...todisplayaGOmenuandselecttheoption{~low_selector~}TO{~high_O5 selector~}.BEGIN[~declaration~]...I SELECTONE&.value%OF zSETOO->[{~low_selector~}&TO&{~high_selector~},%[~select_labels~]...]:!{~select_action~};zi{~sel_lines~}...zTES;[~expression~]...AEND;JOTypethevalue-128overthe placeholder{~low_selector~}JOandthevalue127overthe placeholder{~high_selector~}.BO5Erase the remaining duplicated! placeholder [select_Olabels]C... .BEGINZ[~declaration~]... SELECTONE&.value%OF zSETO2->[-128&TO&127]:z{~select_action~};z{~sel_lines~}...z TES;R[~expression~]...END;ZGOExpandthe placeholder{~select_action~}toproducetheMO placeholder{~expression~}andtypesize=1over {~expres-O5sion~}.BEGIN[~declaration~]...I SELECTONE&.value%OF zSETz[-128&TO&127]: O!->!size&=%1;zi[~sel_lines~]...zTES;[~expression~]...AEND;Ze1OExpandthe placeholder {~sel_lines~}... .BEGINP[~declaration~]... SELECTONE&.value%OF zSETz([-128&TO&127]:psize&=%1;%O->[{~select_labels~}...]:!{~select_action~};zi[~sel_lines~]...zTES;[~expression~]...AEND;KOExpandthe placeholder{~select_labels~}todisplayamenu.Oandselecttheoption OTHERWISE.aBEGIN[~declaration~]... SELECTONE&.value%OF z9SETz[-128&TO&127]:size&=%1;1O2-> [OTHERWISE,&[~select_labels~]...]:z{~select_action~};z[~sel_lines~]...z TES;R[~expression~]...END; HOErasetheoptionallist placeholder[~select_labels~]... J.MOTypesize=4overthe placeholder{~select_action~}.*Erase>O5theoptionallist placeholder[ ~sel_lines~].BEGIN[~declaration~]...I SELECTONE&.value%OF zSETz[-128&TO&127]:z!size%=%1;z [OTHERWISE]: O->size&=%4;zTES;b[~expression~]...END;{'OG.1.4.4C CH$COMPAREFunctionBEGIN[~declaration~]...>{~expression~}...END;Y /=OType CH$COMPAREoverthe placeholder {~expres-Osion~}C..."andexpand CH$COMPARE.aBEGIN[~declaration~]...[O->J CH$COMPARE% ({~n1_ch~},% {~ptr_ch~},% {~n2_ch~},& {~ptr2_ch~},% [~fill_ch~]);9[~expression~]...END;Z 0EOTypethevalue5overthe placeholder {~n1_ch~}and?OCH$PTR(alpha)overthe placeholder {~ptr1_ch~}.aBEGIN[~declaration~]...XO->J CH$COMPARE%(5,%CH$PTR&(alpha),& {~n2_ch~},% {~ptr2_ch~},& [~fill_ch~]);9[~expression~]...END;T! *EOTypethevalue7overthe placeholder {~n2_ch~}and>OCH$PTR(beta)overthe placeholder {~ptr2_ch~}.aBEGIN[~declaration~]...SO->J CH$COMPARE%(5,%CH$PTR&(alpha),&7,&CH$PTR%(beta),& [~fill_ch~]);9[~expression~]...END;Q A0OExpandthe placeholder [~fill_ch~].BEGINP[~declaration~]...bO->J CH$COMPARE%(5,%CH$PTR&(alpha),&7,&CH$PTR%(beta),&{~character_code_literal~});[~expression~]...(END; A?OExpandthe placeholder{~character_code_literal~}.BEGINP[~declaration~]...`O->J CH$COMPARE%(5,%CH$PTR&(alpha),&7,&CH$PTR%(beta),&%C'{~quoted_character~}');[~expression~]...(END;A AGOTypeablankoverthe placeholder{~quoted_character~}.BEGINP[~declaration~]...NO->J CH$COMPARE%(5,%CH$PTR&(alpha),&7,&CH$PTR%(beta),&%C'%');[~expression~]... (END<*%26OG.2BUsingtheVAXSourceCodeAnalyzerLOUTheVAXSourceCodeAnalyzer(SCA)isan interactivetoolMOusedtocross-referenceandanalyzesourcecode.*ItcanbeDOusedwithmostVAX programming languages.*SCAhelpsKO^ developersmonitorlarge,complexsoftwaresystemsbydis-MOplayingsource informationinresponsetouserqueries.)SCAKOstoresdata generatedbytheBLISS-32compilerinanSCAJOhlibrary.,ThedatainanSCAlibrarycontains informationNOaboutallthesymbols,modules,andfiles encounteredduring4Oaspecific compilationofthesource.2! MOSCAletsyouquerybothcross-referenceandstaticanalysisGO information.+Cross-referencingsupplies informationaboutNO5programsymbolsandsourcefiles.'SCAprovidesthe following&Ocross-referencing features:G  ` ELocatingnamesand occurrences(uses)ofthesenames `O HOQueryingseveralnamesorpartialnames(with wildcardsallowed) `' F'Limitingaquerytospecificcharacteristics(suchas?routinenames,variablenames,orsourcefiles) ` MLimitingaquerytospecific occurrences(suchasthepri-IWmary declarationofasymbol,readorwrite occurrences7ofasymbol,or occurrencesofafile)! NNOThestaticanalysisqueryfeaturesofSCAprovide structuralSO informationonthe interrelationof routines,symbols,andfiles.DO5SCAprovidesthe followingstaticanalysis features:9  ` J Displayingroutinecallstoandfroma specifiedroutine `O HO Analyzingroutinecallsfor consistencyastothenum-Mbersanddatatypesof argumentspassed,andthetypesofvaluesreturnedNNOSCAisfully integratedwithLSEtoprovide additionalfea-NOtures.)ByusingSCAwithLSE,youcanviewanyportionof@O5anentiresystemandeditrelatedsourcefiles.! h#O Multimodular DevelopmentOO4Thecross-referencingandstaticanalysisfeaturesofSCAareKO especiallyusefulduringtheimplementationand maintenanceIOphasesofaprojectthatinvolvesmany programmingmod-BO>ules.'Forexample,theprojectteamworkareainO>FigureG-1QOcontainsasetofsourcemodules.'(TheteammightuseacodeIO managementtool,suchasVAXDEC/CMS,tokeeptrackofIOGthesemodulesintheirvarious developmentstages.)*WhenNOtheteamcompilesthesourcecode,SCA generatesthesourceQO informationitrequires(thatis,dataanalysisfileswiththePOQfiletype.ANA);thentheteamloadsthis informationintoa9O previously establishedprojectSCAlibrary.*OO UGOWhenateammemberwantstodo additional developmentNOworkonspecificmodules,thatmembersetsupan individual=O<workarea,whichmightcontainthe following: ` FCopiesofsourceandobjectmodulesfromtheproject( libraries ` GLocalSCA librariesthatcontaincopiesofthemodule information WLOTomake availableallthe capabilitiesofSCA/LSEintegra-NOtion,theteammemberinformsLSEofthe locationsofthatHO5member'scurrentsourcesandrelatedsource information.MOUsingLSE,allteammemberscan effectively``see through''POtheirown individualworkareastotheprojectworkareaand7O>possiblytoother individualworkareas.! jOOThe followingsectionsprovideageneraloverviewofSCAandOOdiscusssomeofthecommandsthatare availabletoyouwhenKO5youuseSCAwithinLSE.Fordetailed informationonSCA,Orefertothe9 GuidetoVAXLanguage-SensitiveEditorand%O VAXSourceCodeAnalyzer ".! 2OG.2.1BSettingUpanSCA EnvironmentSO4IfyoudonothaveanexistingSCAlibrary,youmusttakethe>O followingstepstosetupanSCA environment:J @ <`1.:CreateanSCAlibraryina subdirectory.M`O2.:UsetheBLISS-32compilertogeneratethedataanalysisE(.ANA)filesforeachsourcemoduleinyoursystem.R`'3.:LoadthesedataanalysisfilesintoyourlocalSCAlibrary. QOIfyouhaveanexistingSCAlibrary,youonlyneedtoselectPOthelibrarytouseSCAtoconductsource informationqueries.-OG.2.1.1CCreatinganSCALibraryPO)TocreateanSCAlibrary,firstcreatea subdirectoryatthe$ODCLlevel.&Forexample: O$,CREATE/DIRECTORY%PROJ:[USER.LIB1]]KOThiscommandcreatesa subdirectoryLIB1foralocalSCAOlibrary. ^LOTo initializeanewSCAlibrary,issuethecommandCREATEOLIBRARY.s!IOForexample: O$'SCA%CREATE%LIBRARY%[.LIB1]nDDOThiscommand initializesand activateslibraryLIB1.! 4OG.2.1.2C GeneratingDataAnalysisFilesQO)SCAusesdetailedsourcedatathatis generatedbytheBLISS-HO32 compiler.'Whenyouspecifythe/ANALYSIS_DATAquali-QOfierontheBLISScommand,the generateddataisoutputtoa>O3filewiththedefaulttype.ANA.Forexample: O$;$BLISS/LIST/DIAGNOSTICS/ANALYSIS_DATA% PG1,PG2,PG3dDOThiscommand linecompilesthe input files PG1.B32,FOPG2.B32,andPG3.B32,and generatesfour correspondingVO5outputfilesforeachinputfile,withthefiletypes.OBJ,.LIS,OO.DIAand.ANA.SCAputsthesefilesinyourcurrentdefault5O directoryunlessyouspecify otherwise.'JOG.2.1.3CLoadingDataAnalysisFilesintoaLocalLibraryLO)Beforeyoucanexaminethe informationinthe.ANAfiles,OOyoumustloadthe informationintoanSCAlibraryusingtheOLOADcommand.j!@OForexample:OLSE> LOAD% PG1,PG2,PG3 LOThiscommandloadsyourlibrarywiththemodules containedKOinthedataanalysisfilesPG1.ANA,PG2.ANA,andPG3.ANA..OG.2.1.4C SelectinganSCALibraryNO)ToselectanexistingSCAlibrarytousewithyourcurrent>OSCAsession,usetheSCAcommandSETLIBRARY.m!COForexample:OLSE> SET%LIBRARY&[.LIB]\22OThiscommand activateslibraryLIB1.h>3OG.2.2BUsingSCAforCross-ReferencingJO4OnceyouhavesetupyourSCA environment,youcanaskJOforsymbolorfile informationbyusingtheSCAcommand?OFIND.TheFINDcommandhasthe followingform:8OiFIND&[/qualifier...]%[name-expression[,...]]! zPOThename expressioncanbeexplicitorcancontain wildcards.OForexample:OaLSE> aFIND%ABC,XY%kAAOYoucanqueryanSCAlibraryforthe following:O! %PONameAseriesof charactersthatuniquely identifiesasymbol0orafileOItemKAn appearanceofasymbol(suchasa variable, constant,-label,or procedure)orafile:Oq OccurrenceQTheuseofasymbolorafile zPOTolimitthe information resultingfromaquery,youcanuse+ aFIND/REFERENCES=CALL& BUILD_TABLEKOThiscommandcausesSCAtoreportonly referencesintheEOsourcecodewheretheroutine BUILD_TABLEiscalled.G  LOWhenyoufirstissueaFINDcommandwithinLSE,youini-MOtiateaquerysession.,Withinthiscontext,the integrationJO5ofLSEandSCAprovidescommandsthatcanbeusedonly:OwithinLSE.Thesecommandsareasfollows:   OOCommand^Function O Oo n@NEXTPREVIOUS o o b| 8 b < bL :4NAMEITEM OCCURRENCEQUERYjSTEP | 9  = L ;+^bLetsyoustepthroughoneor'^morequerybufferdisplays^withinLSEOGOTOO7SOURCE%^Displaysthesourcecor-&^7 respondingtothecurrent^queryitemOGOTOOK DECLARATION'^ Positionsthecursorona&^Ksymbol declarationinone%^window,anddisplaysthe&^sourcecodethatcontains&^4thesymbol declarationin^anotherwindow O*  6   !! ""##$$$$$$$$$$$$$$$$$%&'''''''''''''(()))))))))))))))))*)+))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))),,,,,,,,,,,,,-----,,,,,,,..../////00000111112222233333344444444444455555666777888999999:::;;;;;;;;<<<============>>>>>>>>>>>>>>???????@@@@@@@AAAAAAABBBBBBBCCCCCCCCDDDDDDDDDDDDDEEEEEEEFFFFFFGGGGGGHHHHHHIIIIJJJJKKKKLLLLLLMMMMMMNNNNOOOOPPPPQQQQRRRSSSSTTTTUUUUVVVVVWWWWWXXXXYYYYYYYZZZZZZZ[[[[[[[[[[[[\\\\\\\\\\\\\]]]]]]^^^^^^______``````aaaaaaaaaaaabbbbbbbbbbbbbcccccdddddeeeeefffffgggggggggggggghhhhhhiiiiiijjjjjjjjkkkkllllllllmmmmmmmmmnnnnnnoooooooooppppppppppppqqqqrrrrrrrrrrrssssssssssssstttttttttuuuvvvvvvvvvvvvvvwwwwwwwwwwwwwwxxxxyyyyyzzzzz{{{{{|||||}}}~~~~~~~}PrefacePrefacePrefacePrefacePrefacePrefacePrefacePrefacePrefacePrefacePrefacePrefacePrefacePrefacePreface#Summary of Technical Changes#Summary of Technical Changes1. Operating Procedures1. Operating Procedures1. Operating Procedures1. Operating Procedures1. Operating Procedures#1.1 Compiling a BLISS Module#1.1 Compiling a BLISS Module#1.1 Compiling a BLISS Module#1.1 Compiling a BLISS Module#1.1 Compiling a BLISS Module#1.1 Compiling a BLISS Module#1.1 Compiling a BLISS Module#1.1 Compiling a BLISS Module 1.1.1 Command-Line Syntax 1.1.1 Command-Line Syntax#1.1.2 Command-Line Semantics#1.1.2 Command-Line Semantics#1.1.2 Command-Line Semantics#1.1.2 Command-Line Semantics#1.1.2 Command-Line Semantics#1.1.2 Command-Line Semantics1.2 File Specifications1.2 File Specifications1.2 File Specifications1.2 File Specifications1.2 File Specifications1.2 File Specifications1.2 File Specifications1.2 File Specifications1.2 File Specifications1.2 File Specifications1.2 File Specifications1.2 File Specifications1.2 File Specifications1.2 File Specifications1.2 File Specifications"1.3 Command-Line Qualifiers"1.3 Command-Line Qualifiers1.3.1 /CHECK Qualifier1.3.1 /CHECK Qualifier1.3.1.1 Syntax1.3.1.1 Syntax1.3.1.2 Defaults1.3.1.2 Defaults1.3.1.3 Semantics1.3.1.3 Semantics'1.3.2 /CROSS_REFERENCE Qualifier'1.3.2 /CROSS_REFERENCE Qualifier'1.3.2 /CROSS_REFERENCE Qualifier'1.3.2 /CROSS_REFERENCE Qualifier'1.3.2 /CROSS_REFERENCE Qualifier'1.3.2 /CROSS_REFERENCE Qualifier1.3.2.1 Syntax1.3.2.1 Syntax1.3.2.2 Defaults1.3.2.3 Semantics1.3.2.3 Semantics1.3.3 General Qualifiers1.3.3 General Qualifiers1.3.3 General Qualifiers1.3.3 General Qualifiers1.3.3.1 Syntax1.3.3.1 Syntax1.3.3.1 Syntax1.3.3.2 Defaults1.3.3.2 Defaults1.3.3.2 Defaults1.3.3.2 Defaults1.3.3.3 Semantics1.3.3.3 Semantics1.3.3.4 Discussion1.3.3.4 Discussion1.3.3.4 Discussion1.3.3.4 Discussion)1.3.4 /MACHINE_CODE_LIST Qualifier)1.3.4 /MACHINE_CODE_LIST Qualifier)1.3.4 /MACHINE_CODE_LIST Qualifier1.3.4.1 Syntax1.3.4.1 Syntax1.3.4.1 Syntax1.3.4.2 Defaults1.3.4.2 Defaults1.3.4.2 Defaults1.3.4.3 Semantics1.3.4.3 Semantics1.3.4.3 Semantics 1.3.5 /OPTIMIZE Qualifier 1.3.5 /OPTIMIZE Qualifier 1.3.5 /OPTIMIZE Qualifier 1.3.5 /OPTIMIZE Qualifier1.3.5.1 Syntax1.3.5.1 Syntax1.3.5.1 Syntax1.3.5.2 Defaults1.3.5.2 Defaults1.3.5.2 Defaults1.3.5.2 Defaults1.3.5.3 Semantics1.3.5.3 Semantics1.3.6 Output Qualifiers1.3.6 Output Qualifiers1.3.6 Output Qualifiers1.3.6 Output Qualifiers1.3.6 Output Qualifiers1.3.6 Output Qualifiers1.3.6 Output Qualifiers1.3.6.1 Syntax1.3.6.1 Syntax1.3.6.1 Syntax1.3.6.2 Defaults1.3.6.2 Defaults1.3.6.2 Defaults1.3.6.2 Defaults1.3.6.3 Semantics1.3.6.3 Semantics#1.3.7 /SOURCE_LIST Qualifier#1.3.7 /SOURCE_LIST Qualifier1.3.7.1 Syntax1.3.7.1 Syntax1.3.7.2 Defaults1.3.7.2 Defaults1.3.7.2 Defaults1.3.7.3 Semantics1.3.7.3 Semantics 1.3.8 /TERMINAL Qualifier 1.3.8 /TERMINAL Qualifier1.3.8.1 Syntax1.3.8.1 Syntax1.3.8.2 Defaults1.3.8.2 Defaults1.3.8.2 Defaults1.3.8.3 Semantics1.3.8.3 Semantics01.3.9 Qualifier Names Versus Switch NamesDTable 1- 1: Correspondence Between Qualifier and Switch Names-1.3.10 Qualifiers and Default Settings-1.3.10 Qualifiers and Default Settings-1.3.10 Qualifiers and Default Settings71.3.11 Positive and Negative Forms of Qualifiers71.3.11 Positive and Negative Forms of Qualifiers81.3.12 Abbreviations of Qualifier and Value Names2. Compiler Output2. Compiler Output2. Compiler Output2.1 Terminal Output2.1 Terminal Output2.1 Terminal Output2.1 Terminal Output2.1 Terminal Output2.1 Terminal Output2.1 Terminal Output2.2 Output Listing2.2 Output Listing4Figure 2- 1: Compiler Output Listing Sequence2.2 Output Listing2.2 Output Listing2.2.1 Listing Header)Figure 2- 2: Listing Header Format2.2.1 Listing Header2.2.1 Listing Header2.2.1 Listing Header2.2.1 Listing Header2.2.2 Source Listing2.2.2 Source Listing2.2.2 Source Listing2.2.2 Source Listing2.2.2 Source Listing=Table 2- 1: Format of Preface String in Source Listing=Table 2- 1: Format of Preface String in Source Listing2.2.2 Source Listing2.2.2 Source Listing2.2.2 Source Listing2.2.2 Source Listing2.2.2 Source Listing2.2.2 Source Listing2.2.2 Source Listing2.2.2 Source Listing2.2.2 Source Listing2.2.3 Object Listing2.2.3 Object Listing2.2.3 Object Listing2.2.3 Object Listing2.2.3 Object Listing2.2.3 Object Listing2.2.3 Object Listing2.2.3 Object Listing2.2.3 Object Listing2.2.3 Object Listing%2.2.3.1 Default Object Listing%2.2.3.1 Default Object Listing&2.2.3.2 Assembler Input Listing&2.2.3.2 Assembler Input Listing+Example 2- 1: Default Object Listing,Example 2- 2: Assembler Input Listing 2.2.4 Source Part Options 2.2.4 Source Part Options 2.2.4 Source Part Options 2.2.4 Source Part Options 2.2.4 Source Part Options 2.2.4 Source Part Options 2.2.4 Source Part Options%2.2.4.1 Default Source Listing%2.2.4.1 Default Source Listing;2.2.4.2 Listing with LIBRARY and REQUIRE Information;2.2.4.2 Listing with LIBRARY and REQUIRE Information,2.2.4.3 Listing with Macro Expansions,2.2.4.3 Listing with Macro Expansions)2.2.4.4 Listing with Macro Tracing)2.2.4.4 Listing with Macro Tracing+Example 2- 3: Default Source ListingFExample 2- 4: Output Listing with LIBRARY and REQUIRE File Data=Example 2- 5: Output Listing with Macro Expansion DataIExample 2- 6: Output Listing with Macro Expansion and Tracing Data"2.3 Cross-Reference Listing#2.3.1 Cross-Reference Header$2.3.2 Cross-Reference Entries$2.3.2 Cross-Reference Entries$2.3.2 Cross-Reference Entries,Table 2- 2: Symbol Type Abbreviations,Table 2- 2: Symbol Type Abbreviations$2.3.2 Cross-Reference Entries$2.3.2 Cross-Reference Entries$2.3.2 Cross-Reference Entries$2.3.2 Cross-Reference Entries$2.3.2 Cross-Reference Entries$2.3.2 Cross-Reference Entries$2.3.2 Cross-Reference Entries$2.3.2 Cross-Reference Entries$2.3.2 Cross-Reference Entries$2.3.2 Cross-Reference Entries$2.3.2 Cross-Reference Entries$2.3.2 Cross-Reference Entries$2.3.2 Cross-Reference Entries$2.3.2 Cross-Reference Entries$2.3.2 Cross-Reference Entries$2.3.2 Cross-Reference Entries$2.3.2 Cross-Reference Entries$2.3.2 Cross-Reference Entries$2.3.2 Cross-Reference Entries$2.3.2 Cross-Reference Entries$2.3.2 Cross-Reference Entries$2.3.2 Cross-Reference Entries$2.3.2 Cross-Reference Entries$2.3.2 Cross-Reference Entries82.3.3 Output Listing with Cross-Reference Listing82.3.3 Output Listing with Cross-Reference ListingIExample 2- 7: Output Listing with Cross-Reference Listing IncludedIExample 2- 7: Output Listing with Cross-Reference Listing Included2.4 Compilation Summary2.4 Compilation Summary2.5 Error Messages2.5 Error Messages2.5 Error Messages2.5 Error Messages2.5 Error Messages2.5 Error Messages2.5 Error Messages2.5 Error Messages2.5 Error Messages2.5 Error Messages2.5 Error Messages2.5 Error Messages2.5 Error Messages2.5 Error Messages2.5 Error Messages2.5 Error Messages2.5 Error Messages@Example 2- 8: Example of Error Messages in Source Listing+3. Linking, Executing, and Debugging3.1 Linking3.1 Linking3.1 Linking3.1 Linking3.1 Linking3.1 Linking 3.1.1 LINK Command Syntax#3.1.2 LINK Command Semantics#3.1.2 LINK Command Semantics#3.1.2 LINK Command Semantics#3.1.2 LINK Command Semantics#3.1.2 LINK Command Semantics#3.1.2 LINK Command Semantics%3.2 Executing a Linked Program%3.2 Executing a Linked Program3.3 Debugging3.3 Debugging3.3 Debugging3.3 Debugging3.3 Debugging(3.3.1 Initialized Modes and Types(3.3.1 Initialized Modes and Types(3.3.1 Initialized Modes and Types(3.3.1 Initialized Modes and Types(3.3.1 Initialized Modes and Types43.3.2 Debugger Commands and Expression Syntax43.3.2 Debugger Commands and Expression Syntax43.3.2 Debugger Commands and Expression Syntax43.3.2 Debugger Commands and Expression Syntax03.3.3 Operators in Arithmetic Expressions03.3.3 Operators in Arithmetic Expressions03.3.3 Operators in Arithmetic Expressions2Table 3- 1: Arithmetic Expression Operators63.3.4 Special Characters in Address Expressions4Table 3- 2: Address Representation Characters,3.3.4.1 Current Location Symbol ( . ),3.3.4.1 Current Location Symbol ( . ),3.3.4.1 Current Location Symbol ( . ),3.3.4.1 Current Location Symbol ( . ),3.3.4.1 Current Location Symbol ( . ),3.3.4.1 Current Location Symbol ( . )03.3.4.2 Last Value Displayed Symbol ( \ )03.3.4.2 Last Value Displayed Symbol ( \ )03.3.4.2 Last Value Displayed Symbol ( \ )&3.3.4.3 Contents Operator ( . )&3.3.4.3 Contents Operator ( . )&3.3.4.3 Contents Operator ( . )&3.3.4.3 Contents Operator ( . )&3.3.4.3 Contents Operator ( . )&3.3.4.3 Contents Operator ( . )#3.3.4.4 Range Operator ( : )#3.3.4.4 Range Operator ( : )#3.3.4.4 Range Operator ( : )#3.3.4.4 Range Operator ( : )#3.3.4.4 Range Operator ( : )#3.3.4.4 Range Operator ( : )*3.3.4.5 Default Next Location Value*3.3.4.5 Default Next Location Value*3.3.4.5 Default Next Location Value*3.3.4.5 Default Next Location Value3.3.5 Field References3.3.5 Field References3.3.5 Field References3.3.5 Field References3.3.5 Field References3.3.5 Field References3.3.5 Field References3.3.5 Field References3.3.5 Field References3.3.5 Field References3.3.5 Field References!3.3.6 Structure References!3.3.6 Structure References!3.3.6 Structure References!3.3.6 Structure References!3.3.6 Structure References!3.3.6 Structure References!3.3.6 Structure References!3.3.6 Structure References!3.3.6 Structure References!3.3.6 Structure References!3.3.6 Structure References!3.3.6 Structure References!3.3.6 Structure References!3.3.6 Structure References!3.3.6 Structure References!3.3.6 Structure References!3.3.6 Structure References!3.3.6 Structure References!3.3.6 Structure References%3.3.7 REF Structure References%3.3.7 REF Structure References%3.3.7 REF Structure References3.3.8 Scope of Names3.3.8 Scope of Names3.3.8 Scope of Names3.3.8 Scope of Names3.3.8 Scope of Names"3.3.9 Source-Line Debugging"3.3.9 Source-Line Debugging"3.3.9 Source-Line Debugging"3.3.9 Source-Line Debugging"3.3.9 Source-Line Debugging"3.3.9 Source-Line Debugging<3.3.10 Effect of Compilation and Link-Time Qualifiers<3.3.10 Effect of Compilation and Link-Time Qualifiers<3.3.10 Effect of Compilation and Link-Time Qualifiers<3.3.10 Effect of Compilation and Link-Time Qualifiers&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary&3.3.11 Debugger Command Summary$4. Machine-Specific Functions$4. Machine-Specific Functions$4. Machine-Specific Functions$4. Machine-Specific Functions$4. Machine-Specific Functions$4. Machine-Specific Functions$4. Machine-Specific Functions$4. Machine-Specific Functions$4. Machine-Specific Functions$4. Machine-Specific Functions$4. Machine-Specific Functions$4. Machine-Specific Functions$4. Machine-Specific Functions-Table 4- 1: Machine-Specific Functions-Table 4- 1: Machine-Specific Functions-Table 4- 1: Machine-Specific Functions-Table 4- 1: Machine-Specific Functions-Table 4- 1: Machine-Specific Functions$4. Machine-Specific Functions$4. Machine-Specific Functions$4. Machine-Specific Functions$4. Machine-Specific Functions$4. Machine-Specific Functions$4. Machine-Specific Functions$4. Machine-Specific Functions-4.1 ADAWI-Add Aligned Word Interlocked-4.1 ADAWI-Add Aligned Word Interlocked-4.1 ADAWI-Add Aligned Word Interlocked-4.1 ADAWI-Add Aligned Word Interlocked'4.2 ADDD-Add D-Floating Operands'4.2 ADDD-Add D-Floating Operands'4.2 ADDD-Add D-Floating Operands'4.2 ADDD-Add D-Floating Operands'4.2 ADDD-Add D-Floating Operands'4.3 ADDF-Add F-Floating Operands'4.3 ADDF-Add F-Floating Operands'4.3 ADDF-Add F-Floating Operands'4.3 ADDF-Add F-Floating Operands'4.3 ADDF-Add F-Floating Operands'4.4 ADDG-Add G-Floating Operands'4.4 ADDG-Add G-Floating Operands'4.4 ADDG-Add G-Floating Operands'4.4 ADDG-Add G-Floating Operands'4.4 ADDG-Add G-Floating Operands'4.5 ADDH-Add H-Floating Operands'4.5 ADDH-Add H-Floating Operands'4.5 ADDH-Add H-Floating Operands'4.5 ADDH-Add H-Floating Operands'4.5 ADDH-Add H-Floating Operands&4.6 ADDM-Add Multiword Operands&4.6 ADDM-Add Multiword Operands&4.6 ADDM-Add Multiword Operands&4.6 ADDM-Add Multiword Operands&4.6 ADDM-Add Multiword Operands&4.6 ADDM-Add Multiword Operands14.7 ASHP-Arithmetic Shift and Round Packed14.7 ASHP-Arithmetic Shift and Round Packed14.7 ASHP-Arithmetic Shift and Round Packed14.7 ASHP-Arithmetic Shift and Round Packed14.7 ASHP-Arithmetic Shift and Round Packed14.7 ASHP-Arithmetic Shift and Round Packed14.7 ASHP-Arithmetic Shift and Round Packed14.7 ASHP-Arithmetic Shift and Round Packed14.7 ASHP-Arithmetic Shift and Round Packed14.7 ASHP-Arithmetic Shift and Round Packed14.7 ASHP-Arithmetic Shift and Round Packed14.7 ASHP-Arithmetic Shift and Round Packed%4.8 ASHQ-Arithmetic Shift Quad%4.8 ASHQ-Arithmetic Shift Quad%4.8 ASHQ-Arithmetic Shift Quad%4.8 ASHQ-Arithmetic Shift Quad%4.8 ASHQ-Arithmetic Shift Quad4.9 BICPSW-Bit Clear PSW4.9 BICPSW-Bit Clear PSW4.9 BICPSW-Bit Clear PSW4.10 BISPSW-Bit Set PSW4.10 BISPSW-Bit Set PSW4.10 BISPSW-Bit Set PSW 4.11 BPT-Break Point Trap 4.11 BPT-Break Point Trap 4.11 BPT-Break Point Trap+4.12 BUGL-Bugcheck with Long Operand+4.12 BUGL-Bugcheck with Long Operand+4.12 BUGL-Bugcheck with Long Operand+4.12 BUGL-Bugcheck with Long Operand+4.12 BUGL-Bugcheck with Long Operand+4.12 BUGL-Bugcheck with Long Operand+4.13 BUGW-Bugcheck with Word Operand+4.13 BUGW-Bugcheck with Word Operand+4.13 BUGW-Bugcheck with Word Operand24.14 CALLG-Call with General Parameter List24.14 CALLG-Call with General Parameter List24.14 CALLG-Call with General Parameter List24.14 CALLG-Call with General Parameter List24.14 CALLG-Call with General Parameter List24.14 CALLG-Call with General Parameter List24.14 CALLG-Call with General Parameter List24.14 CALLG-Call with General Parameter List4.15 CHMx-Change Mode4.15 CHMx-Change Mode4.15 CHMx-Change Mode.4.16 CMPC3-Compare Characters 3 Operand.4.16 CMPC3-Compare Characters 3 Operand.4.16 CMPC3-Compare Characters 3 Operand.4.16 CMPC3-Compare Characters 3 Operand.4.16 CMPC3-Compare Characters 3 Operand.4.16 CMPC3-Compare Characters 3 Operand.4.16 CMPC3-Compare Characters 3 Operand.4.16 CMPC3-Compare Characters 3 Operand.4.16 CMPC3-Compare Characters 3 Operand.4.16 CMPC3-Compare Characters 3 Operand.4.16 CMPC3-Compare Characters 3 Operand.4.16 CMPC3-Compare Characters 3 Operand.4.17 CMPC5-Compare Characters 5 Operand.4.17 CMPC5-Compare Characters 5 Operand.4.17 CMPC5-Compare Characters 5 Operand.4.17 CMPC5-Compare Characters 5 Operand.4.17 CMPC5-Compare Characters 5 Operand.4.17 CMPC5-Compare Characters 5 Operand.4.17 CMPC5-Compare Characters 5 Operand.4.17 CMPC5-Compare Characters 5 Operand.4.17 CMPC5-Compare Characters 5 Operand.4.17 CMPC5-Compare Characters 5 Operand.4.17 CMPC5-Compare Characters 5 Operand.4.17 CMPC5-Compare Characters 5 Operand.4.17 CMPC5-Compare Characters 5 Operand.4.17 CMPC5-Compare Characters 5 Operand,4.18 CMPD-Compare D-Floating Operands,4.18 CMPD-Compare D-Floating Operands,4.18 CMPD-Compare D-Floating Operands,4.18 CMPD-Compare D-Floating Operands,4.18 CMPD-Compare D-Floating Operands,4.18 CMPD-Compare D-Floating Operands,4.18 CMPD-Compare D-Floating Operands,4.19 CMPF-Compare F-Floating Operands,4.19 CMPF-Compare F-Floating Operands,4.19 CMPF-Compare F-Floating Operands,4.19 CMPF-Compare F-Floating Operands,4.19 CMPF-Compare F-Floating Operands,4.19 CMPF-Compare F-Floating Operands,4.19 CMPF-Compare F-Floating Operands,4.20 CMPG-Compare G-Floating Operands,4.20 CMPG-Compare G-Floating Operands,4.20 CMPG-Compare G-Floating Operands,4.20 CMPG-Compare G-Floating Operands,4.20 CMPG-Compare G-Floating Operands,4.20 CMPG-Compare G-Floating Operands,4.20 CMPG-Compare G-Floating Operands,4.21 CMPH-Compare H-Floating Operands,4.21 CMPH-Compare H-Floating Operands,4.21 CMPH-Compare H-Floating Operands,4.21 CMPH-Compare H-Floating Operands,4.21 CMPH-Compare H-Floating Operands,4.21 CMPH-Compare H-Floating Operands,4.21 CMPH-Compare H-Floating Operands+4.22 CMPM-Compare Multiword Operands+4.22 CMPM-Compare Multiword Operands+4.22 CMPM-Compare Multiword Operands+4.22 CMPM-Compare Multiword Operands+4.22 CMPM-Compare Multiword Operands+4.22 CMPM-Compare Multiword Operands+4.22 CMPM-Compare Multiword Operands+4.22 CMPM-Compare Multiword Operands4.23 CMPP-Compare Packed4.23 CMPP-Compare Packed4.23 CMPP-Compare Packed4.23 CMPP-Compare Packed4.23 CMPP-Compare Packed4.23 CMPP-Compare Packed4.23 CMPP-Compare Packed4.23 CMPP-Compare Packed4.23 CMPP-Compare Packed4.23 CMPP-Compare Packed4.23 CMPP-Compare Packed4.23 CMPP-Compare Packed4.23 CMPP-Compare Packed'4.24 CRC-Cyclic Redundancy Check'4.24 CRC-Cyclic Redundancy Check'4.24 CRC-Cyclic Redundancy Check'4.24 CRC-Cyclic Redundancy Check'4.24 CRC-Cyclic Redundancy Check'4.24 CRC-Cyclic Redundancy Check'4.24 CRC-Cyclic Redundancy Check24.25 CVTDF-Convert D-Floating to F-Floating24.25 CVTDF-Convert D-Floating to F-Floating24.25 CVTDF-Convert D-Floating to F-Floating24.25 CVTDF-Convert D-Floating to F-Floating24.25 CVTDF-Convert D-Floating to F-Floating24.25 CVTDF-Convert D-Floating to F-Floating/4.26 CVTDI-Convert D-Floating to Integer/4.26 CVTDI-Convert D-Floating to Integer/4.26 CVTDI-Convert D-Floating to Integer/4.26 CVTDI-Convert D-Floating to Integer/4.26 CVTDI-Convert D-Floating to Integer/4.26 CVTDI-Convert D-Floating to Integer,4.27 CVTDL-Convert D-Floating to Long,4.27 CVTDL-Convert D-Floating to Long,4.27 CVTDL-Convert D-Floating to Long,4.27 CVTDL-Convert D-Floating to Long,4.27 CVTDL-Convert D-Floating to Long,4.27 CVTDL-Convert D-Floating to Long24.28 CVTFD-Convert F-Floating to D-Floating24.28 CVTFD-Convert F-Floating to D-Floating24.28 CVTFD-Convert F-Floating to D-Floating24.28 CVTFD-Convert F-Floating to D-Floating24.29 CVTFG-Convert F-Floating to G-Floating24.29 CVTFG-Convert F-Floating to G-Floating24.29 CVTFG-Convert F-Floating to G-Floating24.29 CVTFG-Convert F-Floating to G-Floating24.30 CVTFH-Convert F-Floating to H-Floating24.30 CVTFH-Convert F-Floating to H-Floating24.30 CVTFH-Convert F-Floating to H-Floating24.30 CVTFH-Convert F-Floating to H-Floating/4.31 CVTFI-Convert F-Floating to Integer/4.31 CVTFI-Convert F-Floating to Integer/4.31 CVTFI-Convert F-Floating to Integer/4.31 CVTFI-Convert F-Floating to Integer/4.31 CVTFI-Convert F-Floating to Integer/4.31 CVTFI-Convert F-Floating to Integer,4.32 CVTFL-Convert F-Floating to Long,4.32 CVTFL-Convert F-Floating to Long,4.32 CVTFL-Convert F-Floating to Long,4.32 CVTFL-Convert F-Floating to Long,4.32 CVTFL-Convert F-Floating to Long,4.32 CVTFL-Convert F-Floating to Long24.33 CVTGF-Convert G-Floating to F-Floating24.33 CVTGF-Convert G-Floating to F-Floating24.33 CVTGF-Convert G-Floating to F-Floating24.33 CVTGF-Convert G-Floating to F-Floating24.34 CVTGH-Convert G-Floating to H-Floating24.34 CVTGH-Convert G-Floating to H-Floating24.34 CVTGH-Convert G-Floating to H-Floating24.34 CVTGH-Convert G-Floating to H-Floating,4.35 CVTGL-Convert G-Floating to Long,4.35 CVTGL-Convert G-Floating to Long,4.35 CVTGL-Convert G-Floating to Long,4.35 CVTGL-Convert G-Floating to Long24.36 CVTHF-Convert H-Floating to F-Floating24.36 CVTHF-Convert H-Floating to F-Floating24.36 CVTHF-Convert H-Floating to F-Floating24.36 CVTHF-Convert H-Floating to F-Floating24.37 CVTHG-Convert H-Floating to G-Floating24.37 CVTHG-Convert H-Floating to G-Floating24.37 CVTHG-Convert H-Floating to G-Floating,4.38 CVTHL-Convert H-Floating to Long,4.38 CVTHL-Convert H-Floating to Long,4.38 CVTHL-Convert H-Floating to Long,4.38 CVTHL-Convert H-Floating to Long/4.39 CVTID-Convert Integer to D-Floating/4.39 CVTID-Convert Integer to D-Floating/4.39 CVTID-Convert Integer to D-Floating/4.39 CVTID-Convert Integer to D-Floating/4.40 CVTIF-Convert Integer to F-Floating/4.40 CVTIF-Convert Integer to F-Floating/4.40 CVTIF-Convert Integer to F-Floating/4.40 CVTIF-Convert Integer to F-Floating,4.41 CVTLD-Convert Long to D-Floating,4.41 CVTLD-Convert Long to D-Floating,4.41 CVTLD-Convert Long to D-Floating,4.41 CVTLD-Convert Long to D-Floating,4.41 CVTLD-Convert Long to D-Floating,4.42 CVTLF-Convert Long to F-Floating,4.42 CVTLF-Convert Long to F-Floating,4.42 CVTLF-Convert Long to F-Floating,4.42 CVTLF-Convert Long to F-Floating,4.42 CVTLF-Convert Long to F-Floating,4.43 CVTLH-Convert Long to H-Floating,4.43 CVTLH-Convert Long to H-Floating,4.43 CVTLH-Convert Long to H-Floating,4.43 CVTLH-Convert Long to H-Floating(4.44 CVTLP-Convert Long to Packed(4.44 CVTLP-Convert Long to Packed(4.44 CVTLP-Convert Long to Packed(4.44 CVTLP-Convert Long to Packed(4.44 CVTLP-Convert Long to Packed(4.44 CVTLP-Convert Long to Packed(4.44 CVTLP-Convert Long to Packed(4.45 CVTPL-Convert Packed to Long(4.45 CVTPL-Convert Packed to Long(4.45 CVTPL-Convert Packed to Long(4.45 CVTPL-Convert Packed to Long(4.45 CVTPL-Convert Packed to Long(4.45 CVTPL-Convert Packed to Long(4.45 CVTPL-Convert Packed to Long<4.46 CVTPS-Convert Packed to Leading Separate Numeric<4.46 CVTPS-Convert Packed to Leading Separate Numeric<4.46 CVTPS-Convert Packed to Leading Separate Numeric<4.46 CVTPS-Convert Packed to Leading Separate Numeric<4.46 CVTPS-Convert Packed to Leading Separate Numeric<4.46 CVTPS-Convert Packed to Leading Separate Numeric<4.46 CVTPS-Convert Packed to Leading Separate Numeric<4.46 CVTPS-Convert Packed to Leading Separate Numeric<4.46 CVTPS-Convert Packed to Leading Separate Numeric<4.46 CVTPS-Convert Packed to Leading Separate Numeric<4.46 CVTPS-Convert Packed to Leading Separate Numeric<4.46 CVTPS-Convert Packed to Leading Separate Numeric44.47 CVTPT-Convert Packed to Trailing Numeric44.47 CVTPT-Convert Packed to Trailing Numeric44.47 CVTPT-Convert Packed to Trailing Numeric44.47 CVTPT-Convert Packed to Trailing Numeric44.47 CVTPT-Convert Packed to Trailing Numeric44.47 CVTPT-Convert Packed to Trailing Numeric44.47 CVTPT-Convert Packed to Trailing Numeric44.47 CVTPT-Convert Packed to Trailing Numeric44.47 CVTPT-Convert Packed to Trailing Numeric44.47 CVTPT-Convert Packed to Trailing Numeric44.47 CVTPT-Convert Packed to Trailing Numeric44.47 CVTPT-Convert Packed to Trailing Numeric44.47 CVTPT-Convert Packed to Trailing Numeric54.48 CVTRDL-Convert Rounded D-Floating to Long54.48 CVTRDL-Convert Rounded D-Floating to Long54.48 CVTRDL-Convert Rounded D-Floating to Long54.48 CVTRDL-Convert Rounded D-Floating to Long54.48 CVTRDL-Convert Rounded D-Floating to Long54.48 CVTRDL-Convert Rounded D-Floating to Long54.49 CVTRFL-Convert Rounded F-Floating to Long54.49 CVTRFL-Convert Rounded F-Floating to Long54.49 CVTRFL-Convert Rounded F-Floating to Long54.49 CVTRFL-Convert Rounded F-Floating to Long54.49 CVTRFL-Convert Rounded F-Floating to Long54.49 CVTRFL-Convert Rounded F-Floating to Long54.50 CVTRGL-Convert Rounded G-Floating to Long54.50 CVTRGL-Convert Rounded G-Floating to Long54.50 CVTRGL-Convert Rounded G-Floating to Long54.50 CVTRGL-Convert Rounded G-Floating to Long54.50 CVTRGL-Convert Rounded G-Floating to Long54.50 CVTRGL-Convert Rounded G-Floating to Long54.51 CVTRHL-Convert Rounded H-Floating to Long54.51 CVTRHL-Convert Rounded H-Floating to Long54.51 CVTRHL-Convert Rounded H-Floating to Long54.51 CVTRHL-Convert Rounded H-Floating to Long54.51 CVTRHL-Convert Rounded H-Floating to Long54.51 CVTRHL-Convert Rounded H-Floating to Long44.52 CVTSP-Convert Leading Separate to Packed44.52 CVTSP-Convert Leading Separate to Packed44.52 CVTSP-Convert Leading Separate to Packed44.52 CVTSP-Convert Leading Separate to Packed44.52 CVTSP-Convert Leading Separate to Packed44.52 CVTSP-Convert Leading Separate to Packed44.52 CVTSP-Convert Leading Separate to Packed44.52 CVTSP-Convert Leading Separate to Packed44.52 CVTSP-Convert Leading Separate to Packed44.52 CVTSP-Convert Leading Separate to Packed44.52 CVTSP-Convert Leading Separate to Packed44.52 CVTSP-Convert Leading Separate to Packed44.53 CVTTP-Convert Trailing Numeric to Packed44.53 CVTTP-Convert Trailing Numeric to Packed44.53 CVTTP-Convert Trailing Numeric to Packed44.53 C_} }VTTP-Convert Trailing Numeric to Packed44.53 CVTTP-Convert Trailing Numeric to Packed44.53 CVTTP-Convert Trailing Numeric to Packed44.53 CVTTP-Convert Trailing Numeric to Packed44.53 CVTTP-Convert Trailing Numeric to Packed44.53 CVTTP-Convert Trailing Numeric to Packed44.53 CVTTP-Convert Trailing Numeric to Packed44.53 CVTTP-Convert Trailing Numeric to Packed44.53 CVTTP-Convert Trailing Numeric to Packed44.53 CVTTP-Convert Trailing Numeric to Packed+4.54 DIVD-Divide D-Floating Operands+4.54 DIVD-Divide D-Floating Operands+4.54 DIVD-Divide D-Floating Operands+4.54 DIVD-Divide D-Floating Operands+4.54 DIVD-Divide D-Floating Operands+4.55 DIVF-Divide F-Floating Operands+4.55 DIVF-Divide F-Floating Operands+4.55 DIVF-Divide F-Floating Operands+4.55 DIVF-Divide F-Floating Operands+4.55 DIVF-Divide F-Floating Operands+4.56 DIVG-Divide G-Floating Operands+4.56 DIVG-Divide G-Floating Operands+4.56 DIVG-Divide G-Floating Operands+4.56 DIVG-Divide G-Floating Operands+4.56 DIVG-Divide G-Floating Operands+4.57 DIVH-Divide H-Floating Operands+4.57 DIVH-Divide H-Floating Operands+4.57 DIVH-Divide H-Floating Operands+4.57 DIVH-Divide H-Floating Operands+4.57 DIVH-Divide H-Floating Operands+4.58 EDITPC-Edit Packed to Character+4.58 EDITPC-Edit Packed to Character+4.58 EDITPC-Edit Packed to Character+4.58 EDITPC-Edit Packed to Character+4.58 EDITPC-Edit Packed to Character+4.58 EDITPC-Edit Packed to Character+4.58 EDITPC-Edit Packed to Character+4.58 EDITPC-Edit Packed to Character+4.58 EDITPC-Edit Packed to Character+4.58 EDITPC-Edit Packed to Character+4.58 EDITPC-Edit Packed to Character+4.58 EDITPC-Edit Packed to Character+4.58 EDITPC-Edit Packed to Character+4.58 EDITPC-Edit Packed to Character*4.59 EDIV-Extended-Precision Divide*4.59 EDIV-Extended-Precision Divide*4.59 EDIV-Extended-Precision Divide*4.59 EDIV-Extended-Precision Divide*4.59 EDIV-Extended-Precision Divide*4.59 EDIV-Extended-Precision Divide,4.60 EMUL-Extended-Precision Multiply,4.60 EMUL-Extended-Precision Multiply,4.60 EMUL-Extended-Precision Multiply,4.60 EMUL-Extended-Precision Multiply,4.60 EMUL-Extended-Precision Multiply,4.60 EMUL-Extended-Precision Multiply24.61 FFC and FFS-Find and Modify Operations24.61 FFC and FFS-Find and Modify Operations24.61 FFC and FFS-Find and Modify Operations24.61 FFC and FFS-Find and Modify Operations24.61 FFC and FFS-Find and Modify Operations24.61 FFC and FFS-Find and Modify Operations24.61 FFC and FFS-Find and Modify Operations24.61 FFC and FFS-Find and Modify Operations4.62 HALT-Halt Processor4.62 HALT-Halt Processor4.62 HALT-Halt Processor4.62 HALT-Halt Processor#4.63 INDEX-Index Calculation#4.63 INDEX-Index Calculation#4.63 INDEX-Index Calculation#4.63 INDEX-Index Calculation#4.63 INDEX-Index Calculation#4.63 INDEX-Index Calculation#4.63 INDEX-Index Calculation#4.63 INDEX-Index Calculation@4.64 INSQHI and INSQTI-Insert Entry in Queue, Interlocked@4.64 INSQHI and INSQTI-Insert Entry in Queue, Interlocked@4.64 INSQHI and INSQTI-Insert Entry in Queue, Interlocked@4.64 INSQHI and INSQTI-Insert Entry in Queue, Interlocked@4.64 INSQHI and INSQTI-Insert Entry in Queue, Interlocked@4.64 INSQHI and INSQTI-Insert Entry in Queue, Interlocked@4.64 INSQHI and INSQTI-Insert Entry in Queue, Interlocked@4.64 INSQHI and INSQTI-Insert Entry in Queue, Interlocked@4.64 INSQHI and INSQTI-Insert Entry in Queue, Interlocked(4.65 INSQUE-Insert Entry in Queue(4.65 INSQUE-Insert Entry in Queue(4.65 INSQUE-Insert Entry in Queue(4.65 INSQUE-Insert Entry in Queue(4.65 INSQUE-Insert Entry in Queue(4.65 INSQUE-Insert Entry in Queue!4.66 LOCC-Locate Character!4.66 LOCC-Locate Character!4.66 LOCC-Locate Character!4.66 LOCC-Locate Character!4.66 LOCC-Locate Character!4.66 LOCC-Locate Character!4.66 LOCC-Locate Character!4.66 LOCC-Locate Character!4.66 LOCC-Locate Character#4.67 MATCHC-Match Characters#4.67 MATCHC-Match Characters#4.67 MATCHC-Match Characters#4.67 MATCHC-Match Characters#4.67 MATCHC-Match Characters#4.67 MATCHC-Match Characters#4.67 MATCHC-Match Characters#4.67 MATCHC-Match Characters#4.67 MATCHC-Match Characters#4.67 MATCHC-Match Characters#4.67 MATCHC-Match Characters#4.67 MATCHC-Match Characters-4.68 MFPR-Move from Processor Register-4.68 MFPR-Move from Processor Register-4.68 MFPR-Move from Processor Register-4.68 MFPR-Move from Processor Register*4.69 MOVC3-Move Character 3 Operand*4.69 MOVC3-Move Character 3 Operand*4.69 MOVC3-Move Character 3 Operand*4.69 MOVC3-Move Character 3 Operand*4.69 MOVC3-Move Character 3 Operand*4.69 MOVC3-Move Character 3 Operand*4.69 MOVC3-Move Character 3 Operand*4.69 MOVC3-Move Character 3 Operand*4.69 MOVC3-Move Character 3 Operand*4.69 MOVC3-Move Character 3 Operand*4.69 MOVC3-Move Character 3 Operand*4.70 MOVC5-Move Character 5 Operand*4.70 MOVC5-Move Character 5 Operand*4.70 MOVC5-Move Character 5 Operand*4.70 MOVC5-Move Character 5 Operand*4.70 MOVC5-Move Character 5 Operand*4.70 MOVC5-Move Character 5 Operand*4.70 MOVC5-Move Character 5 Operand*4.70 MOVC5-Move Character 5 Operand*4.70 MOVC5-Move Character 5 Operand*4.70 MOVC5-Move Character 5 Operand*4.70 MOVC5-Move Character 5 Operand*4.70 MOVC5-Move Character 5 Operand*4.70 MOVC5-Move Character 5 Operand4.71 MOVP-Move Packed4.71 MOVP-Move Packed4.71 MOVP-Move Packed4.71 MOVP-Move Packed4.71 MOVP-Move Packed4.71 MOVP-Move Packed4.71 MOVP-Move Packed4.71 MOVP-Move Packed4.71 MOVP-Move Packed 4.72 MOVPSL-Move from PSL 4.72 MOVPSL-Move from PSL 4.72 MOVPSL-Move from PSL,4.73 MOVTC-Move Translated Characters,4.73 MOVTC-Move Translated Characters,4.73 MOVTC-Move Translated Characters,4.73 MOVTC-Move Translated Characters,4.73 MOVTC-Move Translated Characters,4.73 MOVTC-Move Translated Characters,4.73 MOVTC-Move Translated Characters,4.73 MOVTC-Move Translated Characters,4.73 MOVTC-Move Translated Characters,4.73 MOVTC-Move Translated Characters,4.73 MOVTC-Move Translated Characters,4.73 MOVTC-Move Translated Characters,4.73 MOVTC-Move Translated Characters,4.73 MOVTC-Move Translated Characters24.74 MOVTUC-Move Translated Until Character24.74 MOVTUC-Move Translated Until Character24.74 MOVTUC-Move Translated Until Character24.74 MOVTUC-Move Translated Until Character24.74 MOVTUC-Move Translated Until Character24.74 MOVTUC-Move Translated Until Character24.74 MOVTUC-Move Translated Until Character24.74 MOVTUC-Move Translated Until Character24.74 MOVTUC-Move Translated Until Character24.74 MOVTUC-Move Translated Until Character24.74 MOVTUC-Move Translated Until Character24.74 MOVTUC-Move Translated Until Character24.74 MOVTUC-Move Translated Until Character24.74 MOVTUC-Move Translated Until Character+4.75 MTPR-Move to Processor Register+4.75 MTPR-Move to Processor Register+4.75 MTPR-Move to Processor Register+4.75 MTPR-Move to Processor Register-4.76 MULD-Multiply D-Floating Operands-4.76 MULD-Multiply D-Floating Operands-4.76 MULD-Multiply D-Floating Operands-4.76 MULD-Multiply D-Floating Operands-4.76 MULD-Multiply D-Floating Operands-4.77 MULF-Multiply F-Floating Operands-4.77 MULF-Multiply F-Floating Operands-4.77 MULF-Multiply F-Floating Operands-4.77 MULF-Multiply F-Floating Operands-4.77 MULF-Multiply F-Floating Operands-4.78 MULG-Multiply G-Floating Operands-4.78 MULG-Multiply G-Floating Operands-4.78 MULG-Multiply G-Floating Operands-4.78 MULG-Multiply G-Floating Operands-4.78 MULG-Multiply G-Floating Operands-4.79 MULH-Multiply H-Floating Operands-4.79 MULH-Multiply H-Floating Operands-4.79 MULH-Multiply H-Floating Operands-4.79 MULH-Multiply H-Floating Operands-4.79 MULH-Multiply H-Floating Operands4.80 NOP-No Operation4.80 NOP-No Operation4.80 NOP-No Operation+4.81 PROBER-Probe Read Accessibility+4.81 PROBER-Probe Read Accessibility+4.81 PROBER-Probe Read Accessibility+4.81 PROBER-Probe Read Accessibility+4.81 PROBER-Probe Read Accessibility+4.81 PROBER-Probe Read Accessibility+4.81 PROBER-Probe Read Accessibility,4.82 PROBEW-Probe Write Accessibility,4.82 PROBEW-Probe Write Accessibility,4.82 PROBEW-Probe Write Accessibility,4.82 PROBEW-Probe Write Accessibility,4.82 PROBEW-Probe Write Accessibility,4.82 PROBEW-Probe Write Accessibility,4.82 PROBEW-Probe Write AccessibilityB4.83 REMQHI and REMQTI-Remove Entry From Queue, InterlockedB4.83 REMQHI and REMQTI-Remove Entry From Queue, InterlockedB4.83 REMQHI and REMQTI-Remove Entry From Queue, InterlockedB4.83 REMQHI and REMQTI-Remove Entry From Queue, InterlockedB4.83 REMQHI and REMQTI-Remove Entry From Queue, InterlockedB4.83 REMQHI and REMQTI-Remove Entry From Queue, InterlockedB4.83 REMQHI and REMQTI-Remove Entry From Queue, InterlockedB4.83 REMQHI and REMQTI-Remove Entry From Queue, InterlockedB4.83 REMQHI and REMQTI-Remove Entry From Queue, InterlockedB4.83 REMQHI and REMQTI-Remove Entry From Queue, Interlocked*4.84 REMQUE-Remove Entry from Queue*4.84 REMQUE-Remove Entry from Queue*4.84 REMQUE-Remove Entry from Queue*4.84 REMQUE-Remove Entry from Queue*4.84 REMQUE-Remove Entry from Queue*4.84 REMQUE-Remove Entry from Queue4.85 ROT-Rotate a Value4.85 ROT-Rotate a Value4.85 ROT-Rotate a Value4.85 ROT-Rotate a Value!4.86 SCANC-Scan Characters!4.86 SCANC-Scan Characters!4.86 SCANC-Scan Characters!4.86 SCANC-Scan Characters!4.86 SCANC-Scan Characters!4.86 SCANC-Scan Characters!4.86 SCANC-Scan Characters!4.86 SCANC-Scan Characters!4.86 SCANC-Scan Characters!4.86 SCANC-Scan Characters4.87 SKPC-Skip Character4.87 SKPC-Skip Character4.87 SKPC-Skip Character4.87 SKPC-Skip Character4.87 SKPC-Skip Character4.87 SKPC-Skip Character4.87 SKPC-Skip Character4.87 SKPC-Skip Character4.87 SKPC-Skip Character!4.88 SPANC-Span Characters!4.88 SPANC-Span Characters!4.88 SPANC-Span Characters!4.88 SPANC-Span Characters!4.88 SPANC-Span Characters!4.88 SPANC-Span Characters!4.88 SPANC-Span Characters!4.88 SPANC-Span Characters!4.88 SPANC-Span Characters!4.88 SPANC-Span Characters-4.89 SUBD-Subtract D-Floating Operands-4.89 SUBD-Subtract D-Floating Operands-4.89 SUBD-Subtract D-Floating Operands-4.89 SUBD-Subtract D-Floating Operands-4.89 SUBD-Subtract D-Floating Operands-4.90 SUBF-Subtract F-Floating Operands-4.90 SUBF-Subtract F-Floating Operands-4.90 SUBF-Subtract F-Floating Operands-4.90 SUBF-Subtract F-Floating Operands-4.90 SUBF-Subtract F-Floating Operands-4.91 SUBG-Subtract G-Floating Operands-4.91 SUBG-Subtract G-Floating Operands-4.91 SUBG-Subtract G-Floating Operands-4.91 SUBG-Subtract G-Floating Operands-4.91 SUBG-Subtract G-Floating Operands-4.92 SUBH-Subtract H-Floating Operands-4.92 SUBH-Subtract H-Floating Operands-4.92 SUBH-Subtract H-Floating Operands-4.92 SUBH-Subtract H-Floating Operands-4.92 SUBH-Subtract H-Floating Operands,4.93 SUBM-Subtract Multiword Operands,4.93 SUBM-Subtract Multiword Operands,4.93 SUBM-Subtract Multiword Operands,4.93 SUBM-Subtract Multiword Operands,4.93 SUBM-Subtract Multiword Operands,4.93 SUBM-Subtract Multiword Operands/4.94 TESTBITx-Test and Modify Operations/4.94 TESTBITx-Test and Modify Operations/4.94 TESTBITx-Test and Modify Operations/4.94 TESTBITx-Test and Modify Operations/4.94 TESTBITx-Test and Modify Operations&4.95 XFC-Extended Function Call&4.95 XFC-Extended Function Call&4.95 XFC-Extended Function Call$5. Programming Considerations/5.1 Library and Require File Differences/5.1 Library and Require File Differences/5.1 Library and Require File Differences/5.1 Library and Require File Differences/5.1 Library and Require File Differences/5.1 Library and Require File Differences/5.1 Library and Require File Differences Note 1/5.1 Library and Require File Differences/5.1 Library and Require File Differences'5.2 Frequent BLISS Coding Errors5.2.1 Missing Dots5.2.1 Missing Dots*5.2.2 Valued and Nonvalued Routines*5.2.2 Valued and Nonvalued Routines*5.2.2 Valued and Nonvalued Routines*5.2.2 Valued and Nonvalued Routines,5.2.3 Semicolons and Values of Blocks,5.2.3 Semicolons and Values of Blocks,5.2.3 Semicolons and Values of Blocks75.2.4 Complex Expressions Using AND, OR, and NOT75.2.4 Complex Expressions Using AND, OR, and NOT#5.2.5 Computed Routine Calls#5.2.5 Computed Routine Calls#5.2.5 Computed Routine Calls#5.2.5 Computed Routine Calls'5.2.6 Signed and Unsigned Fields'5.2.6 Signed and Unsigned Fields5.2.7 Complex Macros5.2.7 Complex Macros5.2.7 Complex Macros5.2.8 Missing Code5.2.8 Missing Code5.2.8 Missing Code5.2.8 Missing Code5.2.8 Missing Code5.2.8 Missing Code"5.2.9 Using the Built-In PC"5.2.9 Using the Built-In PC"5.2.9 Using the Built-In PC"5.2.9 Using the Built-In PC'5.2.10 Indexed Loop Coding Error'5.2.10 Indexed Loop Coding Error'5.2.10 Indexed Loop Coding Error'5.2.10 Indexed Loop Coding Error'5.2.10 Indexed Loop Coding Error'5.2.10 Indexed Loop Coding Error 5.3 Linker Error Messages 5.3 Linker Error Messages 5.3 Linker Error Messages!5.4 Obscure Error Messages/5.5 Position-Independent Code Generation'5.6 Advanced Use of BLISS Macros'5.6 Advanced Use of BLISS Macros55.6.1 Advantageous Use of Machine Dependencies55.6.1 Advantageous Use of Machine Dependencies55.6.1 Advantageous Use of Machine Dependencies55.6.1 Advantageous Use of Machine Dependencies&5.6.2 Using String Instructions&5.6.2 Using String Instructions&5.6.2 Using String Instructions&5.6.2 Using String Instructions&5.6.2 Using String Instructions&5.6.2 Using String Instructions&5.6.2 Using String Instructions+5.6.3 Dealing with Enumeration Types+5.6.3 Dealing with Enumeration Types 5.6.3.1 The SET Data Type 5.6.3.1 The SET Data Type 5.6.3.1 The SET Data Type 5.6.3.1 The SET Data Type 5.6.3.1 The SET Data Type5.6.3.2 Creating a Set5.6.3.2 Creating a Set5.6.3.2 Creating a Set5.6.3.2 Creating a Set5.6.3.2 Creating a Set5.6.3.2 Creating a Set5.6.3.2 Creating a Set5.6.3.2 Creating a Set5.6.3.2 Creating a Set5.6.3.2 Creating a Set5.6.3.2 Creating a Set5.6.3.2 Creating a Set5.6.3.2 Creating a Set5.6.3.2 Creating a Set5.6.3.2 Creating a Set'5.6.3.3 Placing Elements in Sets'5.6.3.3 Placing Elements in Sets"5.6.3.4 Membership in a Set"5.6.3.4 Membership in a Set"5.6.3.4 Membership in a Set"5.6.3.4 Membership in a Set"5.6.3.4 Membership in a Set"5.6.3.4 Membership in a Set"5.6.3.4 Membership in a Set%6. Transportability Guidelines%6. Transportability Guidelines%6. Transportability Guidelines%6. Transportability Guidelines%6. Transportability Guidelines6.1 Introduction6.1 Introduction6.1 Introduction6.1 Introduction6.1 Introduction6.2 General Strategies6.2.1 Isolation6.2.1 Isolation6.2.1 Isolation6.2.1 Isolation6.2.2 Simplicity6.2.2 Simplicity6.3 Tools6.3.1 Literals#6.3.1.1 Predeclared Literals#6.3.1.1 Predeclared Literals#6.3.1.1 Predeclared Literals#6.3.1.1 Predeclared Literals#6.3.1.1 Predeclared Literals#6.3.1.1 Predeclared Literals$6.3.1.2 User-Defined Literals$6.3.1.2 User-Defined Literals$6.3.1.2 User-Defined Literals$6.3.1.2 User-Defined Literals$6.3.1.2 User-Defined Literals$6.3.1.2 User-Defined Literals$6.3.1.2 User-Defined Literals/6.3.2 Macros and Conditional Compilation/6.3.2 Macros and Conditional Compilation/6.3.2 Macros and Conditional Compilation/6.3.2 Macros and Conditional Compilation/6.3.2 Macros and Conditional Compilation6.3.3 Module Switches6.3.3 Module Switches6.3.3 Module Switches6.3.3 Module Switches6.3.3 Module Switches6.3.3 Module Switches6.3.3 Module Switches6.3.3 Module Switches6.3.3 Module Switches6.3.3 Module Switches6.3.3 Module Switches6.3.3 Module Switches6.3.3 Module Switches6.3.3 Module Switches6.3.4 Reserved Names6.3.4 Reserved Names&6.3.5 REQUIRE and Library Files&6.3.5 REQUIRE and Library Files&6.3.5 REQUIRE and Library Files&6.3.5 REQUIRE and Library Files&6.3.5 REQUIRE and Library Files&6.3.5 REQUIRE and Library Files&6.3.5 REQUIRE and Library Files&6.3.5 REQUIRE and Library Files&6.3.5 REQUIRE and Library Files&6.3.5 REQUIRE and Library Files&6.3.5 REQUIRE and Library Files6.3.6 Routines6.3.6 Routines6.3.6 Routines86.4 Techniques for Writing Transportable Programs86.4 Techniques for Writing Transportable Programs86.4 Techniques for Writing Transportable Programs6.4.1 Allocation of Data6.4.1 Allocation of Data6.4.1.1 Problem Origin6.4.1.1 Problem Origin6.4.1.1 Problem Origin6.4.1.1 Problem Origin6.4.1.1 Problem Origin6.4.1.1 Problem Origin6.4.1.1 Problem Origin)6.4.1.2 Transportable Declarations)6.4.1.2 Transportable Declarations)6.4.1.2 Transportable Declarations)6.4.1.2 Transportable Declarations)6.4.1.2 Transportable Declarations)6.4.1.2 Transportable Declarations)6.4.1.2 Transportable Declarations)6.4.1.2 Transportable Declarations)6.4.1.2 Transportable Declarations)6.4.1.2 Transportable Declarations)6.4.1.2 Transportable Declarations)6.4.1.2 Transportable Declarations)6.4.1.2 Transportable Declarations)6.4.1.2 Transportable Declarations)6.4.1.2 Transportable Declarations)6.4.1.2 Transportable Declarations)6.4.1.2 Transportable Declarations)6.4.1.2 Transportable Declarations6.4.2 Data Addresses16.4.2.1 Addresses and Address Calculations16.4.2.1 Addresses and Address Calculations16.4.2.1 Addresses and Address Calculations16.4.2.1 Addresses and Address Calculations16.4.2.1 Addresses and Address Calculations16.4.2.1 Addresses and Address Calculations16.4.2.1 Addresses and Address Calculations16.4.2.1 Addresses and Address Calculations16.4.2.1 Addresses and Address Calculations16.4.2.1 Addresses and Address Calculations16.4.2.1 Addresses and Address Calculations16.4.2.1 Addresses and Address Calculations;6.4.2.2 Relational Operators and Control Expressions;6.4.2.2 Relational Operators and Control Expressions;6.4.2.2 Relational Operators and Control Expressions;6.4.2.2 Relational Operators and Control Expressions;6.4.2.2 Relational Operators and Control Expressions;6.4.2.2 Relational Operators and Control Expressions;6.4.2.2 Relational Operators and Control Expressions;6.4.2.2 Relational Operators and Control Expressions;6.4.2.3 BLISS-10 Addresses Versus BLISS-36 Addresses;6.4.2.3 BLISS-10 Addresses Versus BLISS-36 Addresses;6.4.2.3 BLISS-10 Addresses Versus BLISS-36 Addresses;6.4.2.3 BLISS-10 Addresses Versus BLISS-36 Addresses;6.4.2.3 BLISS-10 Addresses Versus BLISS-36 Addresses;6.4.2.3 BLISS-10 Addresses Versus BLISS-36 Addresses%6.4.3 Data Character Sequences%6.4.3 Data Character Sequences%6.4.3 Data Character Sequences46.4.3.1 Quoted Strings Used as Numeric Values46.4.3.1 Quoted Strings Used as Numeric Values46.4.3.1 Quoted Strings Used as Numeric Values46.4.3.1 Quoted Strings Used as Numeric Values46.4.3.1 Quoted Strings Used as Numeric Values46.4.3.1 Quoted Strings Used as Numeric Values46.4.3.1 Quoted Strings Used as Numeric Values46.4.3.1 Quoted Strings Used as Numeric Values46.4.3.1 Quoted Strings Used as Numeric Values46.4.3.1 Quoted Strings Used as Numeric Values76.4.3.2 Quoted Strings Used as Character Strings76.4.3.2 Quoted Strings Used as Character Strings76.4.3.2 Quoted Strings Used as Character Strings76.4.3.2 Quoted Strings Used as Character Strings76.4.3.2 Quoted Strings Used as Character Strings%6.4.4 PLITs and Initialization6.4.4.1 PLITs in General6.4.4.1 PLITs in General6.4.4.1 PLITs in General 6.4.4.2 Scalar PLIT Items 6.4.4.2 Scalar PLIT Items 6.4.4.2 Scalar PLIT Items 6.4.4.2 Scalar PLIT Items(6.4.4.3 String Literal PLIT Items(6.4.4.3 String Literal PLIT Items(6.4.4.3 String Literal PLIT Items(6.4.4.3 String Literal PLIT Items(6.4.4.3 String Literal PLIT Items(6.4.4.3 String Literal PLIT Items(6.4.4.3 String Literal PLIT Items(6.4.4.3 String Literal PLIT Items(6.4.4.3 String Literal PLIT Items(6.4.4.3 String Literal PLIT Items(6.4.4.3 String Literal PLIT Items(6.4.4.3 String Literal PLIT Items(6.4.4.3 String Literal PLIT Items(6.4.4.3 String Literal PLIT Items(6.4.4.3 String Literal PLIT Items(6.4.4.3 String Literal PLIT Items(6.4.4.3 String Literal PLIT Items(6.4.4.3 String Literal PLIT Items%6.4.4.4 Initialization Example%6.4.4.4 Initialization Example%6.4.4.4 Initialization Example%6.4.4.4 Initialization Example%6.4.4.4 Initialization Example%6.4.4.4 Initialization Example%6.4.4.4 Initialization Example%6.4.4.4 Initialization Example%6.4.4.4 Initialization Example%6.4.4.4 Initialization Example%6.4.4.4 Initialization Example%6.4.4.4 Initialization Example%6.4.4.4 Initialization Example'6.4.4.5 Initializing Packed Data'6.4.4.5 Initializing Packed Data'6.4.4.5 Initializing Packed Data'6.4.4.5 Initializing Packed Data'6.4.4.5 Initializing Packed Data'6.4.4.5 Initializing Packed Data'6.4.4.5 Initializing Packed Data'6.4.4.5 Initializing Packed Data'6.4.4.5 Initializing Packed Data'6.4.4.5 Initializing Packed Data'6.4.4.5 Initializing Packed Data'6.4.4.5 Initializing Packed Data'6.4.4.5 Initializing Packed Data'6.4.4.5 Initializing Packed Data'6.4.4.5 Initializing Packed Data+6.4.5 Structures and Field Selectors+6.4.5 Structures and Field Selectors6.4.5.1 Structures6.4.5.1 Structures6.4.5.1 Structures6.4.5.2 FLEX_VECTOR6.4.5.2 FLEX_VECTOR6.4.5.2 FLEX_VECTOR6.4.5.2 FLEX_VECTOR6.4.5.2 FLEX_VECTOR6.4.5.2 FLEX_VECTOR6.4.5.2 FLEX_VECTOR6.4.5.2 FLEX_VECTOR6.4.5.2 FLEX_VECTOR6.4.5.2 FLEX_VECTOR6.4.5.2 FLEX_VECTOR6.4.5.2 FLEX_VECTOR6.4.5.2 FLEX_VECTOR6.4.5.2 FLEX_VECTOR6.4.5.2 FLEX_VECTOR6.4.5.2 FLEX_VECTOR6.4.5.2 FLEX_VECTOR6.4.5.2 FLEX_VECTOR6.4.5.2 FLEX_VECTOR6.4.5.2 FLEX_VECTOR6.4.5.2 FLEX_VECTOR6.4.5.2 FLEX_VECTOR6.4.5.2 FLEX_VECTOR6.4.5.2 FLEX_VECTOR6.4.5.3 Field Selectors6.4.5.3 Field Selectors6.4.5.3 Field Selectors6.4.5.3 Field Selectors6.4.5.3 Field Selectors6.4.5.3 Field Selectors6.4.5.3 Field Selectors6.4.5.3 Field Selectors6.4.5.4 GEN_VECTOR6.4.5.4 GEN_VECTOR6.4.5.4 GEN_VECTOR6.4.5.4 GEN_VECTOR6.4.5.4 GEN_VECTOR6.4.5.4 GEN_VECTOR6.4.5.4 GEN_VECTOR6.4.5.4 GEN_VECTOR6.4.5.4 GEN_VECTOR6.4.5.4 GEN_VECTOR6.4.5.4 GEN_VECTOR6.4.5.4 GEN_VECTOR6.4.5.4 GEN_VECTOR6.4.5.4 GEN_VECTOR6.4.5.4 GEN_VECTOR6.4.5.4 GEN_VECTOR6.4.5.4 GEN_VECTOR6.4.5.4 GEN_VECTOR6.4.5.4 GEN_VECTOR6.4.5.4 GEN_VECTOR6.4.5.4 GEN_VECTOR6.4.5.4 GEN_VECTOR6.4.5.4 GEN_VECTOR6.4.5.4 GEN_VECTOR86.4.5.5 Summary of Structures and Field Selectors86.4.5.5 Summary of Structures and Field Selectors86.4.5.5 Summary of Structures and Field Selectors86.4.5.5 Summary of Structures and Field Selectors86.4.5.5 Summary of Structures and Field Selectors86.4.5.5 Summary of Structures and Field Selectors57. Compiler Overview and Optimization Switches57. Compiler Overview and Optimization Switches57. Compiler Overview and Optimization Switches7.1 Compiler Phases7.1 Compiler Phases7.1 Compiler Phases17.1.1 Lexical and Syntactic Analysis Phase17.1.1 Lexical and Syntactic Analysis Phase17.1.1 Lexical and Syntactic Analysis Phase17.1.1 Lexical and Syntactic Analysis Phase17.1.1 Lexical and Syntactic Analysis Phase17.1.1 Lexical and Syntactic Analysis Phase17.1.1 Lexical and Syntactic Analysis Phase17.1.1 Lexical and Syntactic Analysis Phase17.1.1 Lexical and Syntactic Analysis Phase 7.1.2 Flow Analysis Phase 7.1.2 Flow Analysis Phase 7.1.2 Flow Analysis Phase 7.1.2 Flow Analysis Phase 7.1.2 Flow Analysis Phase+7.1.2.1 Knowing When a Value Changes+7.1.2.1 Knowing When a Value Changes+7.1.2.1 Knowing When a Value Changes+7.1.2.1 Knowing When a Value Changes+7.1.2.1 Knowing When a Value Changes+7.1.2.1 Knowing When a Value Changes+7.1.2.1 Knowing When a Value Changes+7.1.2.1 Knowing When a Value Changes+7.1.2.1 Knowing When a Value Changes+7.1.2.1 Knowing When a Value Changes+7.1.2.1 Knowing When a Value Changes+7.1.2.1 Knowing When a Value Changes+7.1.2.1 Knowing When a Value Changes+7.1.2.1 Knowing When a Value Changes%7.1.2.2 Accounting for Changes%7.1.2.2 Accounting for Changes%7.1.2.2 Accounting for Changes%7.1.2.2 Accounting for Changes%7.1.2.2 Accounting for Changes%7.1.2.2 Accounting for Changes%7.1.2.2 Accounting for Changes7.1.3 Heuristic Phase7.1.3 Heuristic Phase7.1.3 Heuristic Phase)7.1.4 Temporary Name Binding Phase)7.1.4 Temporary Name Binding Phase)7.1.4 Temporary Name Binding Phase)7.1.4 Temporary Name Binding Phase)7.1.4 Temporary Name Binding Phase"7.1.5 Code Generation Phase"7.1.5 Code Generation Phase+7.1.6 Code Stream Optimization Phase+7.1.6 Code Stream Optimization Phase+7.1.6 Code Stream Optimization Phase)7.1.7 Output File Production Phase)7.1.7 Output File Production Phase$7.2 Summary of Switch Effects$7.2 Summary of Switch Effects$7.2 Summary of Switch Effects$7.2 Summary of Switch Effects$7.2 Summary of Switch Effects$7.2 Summary of Switch Effects$7.2 Summary of Switch Effects$7.2 Summary of Switch Effects$7.2 Summary of Switch Effects18. Tools, Libraries, and System Interfaces18. Tools, Libraries, and System Interfaces)8.1 VAX Source Code Analyzer (SCA))8.1 VAX Source Code Analyzer (SCA)98.2 Tutorial Terminal Input/Output Package (TUTIO)98.2 Tutorial Terminal Input/Output Package (TUTIO)98.2 Tutorial Terminal Input/Output Package (TUTIO)98.2 Tutorial Terminal Input/Output Package (TUTIO)98.2 Tutorial Terminal Input/Output Package (TUTIO)(8.3 VMS System Services Interface(8.3 VMS System Services Interface(8.3 VMS System Services Interface(8.3 VMS System Services Interface(8.3 VMS System Services Interface(8.3 VMS System Services Interface58.3.1 Sample Program Using VMS System Services58.3.1 Sample Program Using VMS System Services38.3.2 Common Errors in Using System Services38.3.2 Common Errors in Using System Services38.3.2 Common Errors in Using System Services38.3.2 Common Errors in Using System Services38.3.2 Common Errors in Using System Services/8.4 Record Management Services Interface/8.4 Record Management Services Interface!8.4.1 Using VAX RMS Macros!8.4.1 Using VAX RMS Macros!8.4.1 Using VAX RMS Macros!8.4.1 Using VAX RMS Macros!8.4.1 Using VAX RMS Macros)8.4.2 Sample Routine Using VAX RMS8.5 Other VMS Interfaces8.5.1 LIB Interface8.5.2 TPAMAC Interface*Example 8- 1: Sample TPARSE Program*Example 8- 1: Sample TPARSE Program*Example 8- 1: Sample TPARSE Program 9. BLISS-32 Code Examples'9.1 Example 1: The ALPHA Program'9.1 Example 1: The ALPHA Program'9.1 Example 1: The ALPHA Program'9.1 Example 1: The ALPHA Program'9.1 Example 1: The ALPHA Program'9.1 Example 1: The ALPHA Program'9.1 Example 1: The ALPHA Program9.1.1 Module ALPHA9.1.2 Routine SORT_CHARS9.1.2 Routine SORT_CHARS9.1.2 Routine SORT_CHARS9.1.3 Routine ALPHA_SORT"9.1.4 Cell-Handling Package"9.1.4 Cell-Handling Package9.1.5 Macro REL_CELL9.1.5 Macro REL_CELL9.1.5 Macro REL_CELL9.1.5 Macro REL_CELL9.1.5 Macro REL_CELL9.1.6 Macro INS_CELL9.1.7 Macro GET_CELL9.1.7 Macro GET_CELL9.1.7 Macro GET_CELL9.1.8 Macro REM_CELL&9.2 Example 2: The CALC Program&9.2 Example 2: The CALC Program&9.2 Example 2: The CALC Program&9.2 Example 2: The CALC Program&9.2 Example 2: The CALC Program&9.2 Example 2: The CALC Program9.2.1 Module CALCULATE 9.2.2 Routine CALC_DRIVER9.2.3 Routine MAIN#9.2.4 Routine READEXPRESSION9.2.5 Routine READTERM9.2.6 Routine READFACTOR9.2.7 Routine READNUMBER9.2.8 Routine READCHAR!9.2.9 Routine CATCH_ERRORS#A. Summary of Command SyntaxA.1 Command-Line SyntaxA.1 Command-Line Syntax%A.2 File Specification Summary%A.2 File Specification SummaryA.3 Qualifier SyntaxA.3 Qualifier SyntaxA.4 Qualifier DefaultsA.4 Qualifier DefaultsA.5 AbbreviationsA.5 AbbreviationsA.5 Abbreviations%B. Summary of Formatting Rules%B. Summary of Formatting Rules%B. Summary of Formatting Rules%B. Summary of Formatting Rules%B. Summary of Formatting Rules%B. Summary of Formatting RulesC. Module TemplateC. Module TemplateC. Module TemplateC. Module TemplateC. M8T 8Todule TemplateC. Module TemplateC. Module TemplateC.1 Module Preface%C.2 Declarative Part of Module$C.3 Executable Part of ModuleC.4 Closing FormatD. Implementation LimitsD.1 BLISS-32 ConstructsD.1 BLISS-32 ConstructsD.2 System InterfacesD.2 System InterfacesE. Error Messages"000 Undeclared name: 9001 Declaration following an expression in a block=002 Superfluous operand preceding ``''.003 BEGIN paired with right parenthesis8004 Missing operand preceding ``''3005 Control expression must be parenthesized=006 Superfluous operand following ``''8007 Missing operand following ``''$008 Missing THEN following IF.009 Missing DO following WHILE or UNTIL.010 Missing WHILE or UNTIL following DO)011 Name longer than 31 characters,012 Missing DO following INCR or DECRN013 Missing comma or right parenthesis in routine actual parameter list&014 Missing FROM following CASE7015 Missing TO following FROM in CASE expression5016 Missing OF following TO in CASE expression&017 Missing OF following SELECT8018 Missing SET following OF in SELECT expressionE019 Missing colon following right bracket in SELECT expression=020 Missing semicolon or TES following a SELECT actionI021 Address arithmetic involving REGISTER variable =022 Field reference used as an expression has no valueC023 Missing comma or right angle bracket in a field selector:024 Value in field selector outside permitted range5025 Value of attribute outside permitted rangeE026 ALIGN request negative or exceeds that of PSECT (or stack)+027 Illegal character in source textP028 Illegal parameter in call to lexical function 0029 Attribute illegal in this declarationG030 Access formals must not appear in structure size- expression7031 Conflicting or multiple specified attributes*032 Two consecutive field selectors$033 Syntax error in attribute6034 INITIAL value too large for fieldY035 The attribute contradicts cor- responding FORWARD declarationO036 Literal value cannot be represented in the de- clared number of bits5037 Lower bound of a range exceeds upper boundQ038 Number of routine actual parameters exceeds implementation limit of 64:039 Name used in an expression has no value: ?040 LEAVE not within the block labelled by k041 Missing comma or right parenthesis in parameter list to lexical function -042 Missing label name following LEAVE:043 Label already labels another block%044 EXITLOOP not within a loop/045 Missing structure name following REF8046 Register cannot be reservedR047 Module prematurely ended by extra close bracket or missing open bracket&048 Syntax error in module head#049 Invalid switch specified6050 Name already declared in this block: /051 Syntax error in switch specification5052 Expression must be a compile-time constant+053 Invalid attribute in declarationU054 Name in attribute list not declared as a structure or linkage name: >055 Missing equal sign in BIND or LITERAL declara- tion?056 Missing comma or semicolon following a declara- tionL057 Value of structure size-expression for REGISTER must not exceed 4+058 Left parenthesis paired with ENDE059 Register cannot be specifically declared6060 Missing SET following OF in CASE expressionA061 Missing left bracket preceding a CASE- or SELECT-label0062 MODULE declaration inside module body@063 More than one CASE-label matching the same CASE-indexE064 Value in CASE-label outside the range given by FROM and TO4065 Missing equal sign in ROUTINE declaration@066 Two consecutive operands with no intervening operatorK067 Missing comma or right bracket following a CASE- or SELECT-label9068 Name to be declared is a reserved word: ^069 Size-expression required in STRUCTURE decla- ration when storage is to be allocatedS070 Number of structure formal parameters exceeds implementation limit of 31b071 Missing comma or closing bracket in formal pa- rameter list for C072 Missing control variable name in INCR or DECR expression?073 Missing equal sign in STRUCTURE or MACRO declaration@074 Missing actual parameter list for macro i075 Missing closing bracket or unbalanced brackets in actual parameter list for macro W076 Extra actual parameters for structure referencing data segment C077 Missing colon following right bracket in CASE expressionD078 Name to be mapped is undeclared or not map- pable: L079 Missing comma or right bracket in structure actual parameter listS080 Illegal characters in quoted string parameter of :081 Quoted string not terminated before end of lineV082 Missing comma or right parenthesis following a PLIT, INITIAL or PRESET item\083 Actual parameter list for macro not terminated before end of program2084 Expression must be a link-time constant9085 String literal too long for use outside a PLIT7086 Name declared FORWARD is not defined: Z087 Size of initial value () exceeds declared size ()C088 Missing quoted string following ,089 Syntax error in PSECT declaration;090 Missing semicolon or TES following a CASE action/091 No CASE-label matches the CASE-indexT092 Some values in the range given by FROM and TO have no matching CASE-labelL093 No structure attribute for variable in structure reference3094 Routine specified as MAIN is not definedQ095 %REF built-in function must be used only as a routine actual parameter[096 Module body contains executable expression or non-link-time constant declarationc097 Length of quoted string parameter of must not exceed /098 Cannot satisfy REGISTER declarationsN099 Simultaneously allocated two quantities to Register 100 Division by zero)101 Name to be declared is missingF102 Null structure actual parameter has no default value/103 Illegal up-level reference to *104 Missing ELUDOM following moduleW105 Language feature not yet implemented in : I106 REQUIRE file nesting depth exceeds implemen- tation limit of 9L107 Structure and allocation-unit or extension are mutually exclusive<108 Allocation-unit must not follow INITIAL attribute=109 Missing quoted string following REQUIRE or LIBRARY3110 Open failure for REQUIRE or LIBRARY fileC111 Comment not terminated before end of R112 Definition of macro not termi- nated before end of program]113 Missing semicolon, right parenthesis or END fol- lowing a subexpression of a block8114 Invalid REQUIRE or LIBRARY file specification;115 Expression identified by a label must be a blockM116 Value of structure size-expression must be a compile-time constantB117 Value of structure size-expression must not be negativeB118 Missing left parenthesis in PLIT or INITIAL at- tribute3119 ALWAYS illegal in a SELECTONE expressionP120 Case range spanned by FROM and TO exceeds implementation limit of 5121121 Percent sign outside macro declarationC122 Recursive invocation of non-recursive macro >123 Recursive invocation of structure T124 Expression nesting or size of a block exceeds implementation limit of 300Y125 Operand preceding left bracket in structure ref- erence is not a variable name8126 Value of PLIT replicator must not be negative&127 RETURN not within a routineA128 BIND or LITERAL name used in its own definitionb129 Missing comma or right parenthesis in actual parameter list for Y130 Omitted actual parameter in call to has no default valueF131 Extra actual parameters in call to \132 Translation table entries in call to CH$TRANSTABLE must be compile-time constantsE133 Allocation unit (other than BYTE) in call to CH$TRANSTABLEk134 Length of table produced by CH$TRANSTABLE () not an even number between 0 and 256N135 Length of destination shorter than sum of source lengths in CH$COPYT136 Character-size parameter of must be equal to 8(137 Built-in routine has no value>138 Missing equal sign in GLOBAL REGISTER decla- rationp139 Illegal use of %REF built-in function as actual pa- rameter of call to f140 Illegal use of register name as actual parameter of call to routine .141 Routine has no value6142 Missing quoted string following CODECOMMENT7143 Missing comma or colon following CODECOMMENT;144 Expression following CODECOMMENT must be a block)145 Illegal OPTLEVEL value E146 ENABLE declaration must be in outermost block of a routine8147 More than one ENABLE declaration in a routine=148 Handler specified by ENABLE must be a routine name9149 Illegal actual parameter in ENABLE declarationH150 Name used as ENABLE actual parameter must be VOLATILE: M151 Missing comma or right parenthesis in ENABLE actual parameter listA152 LANGUAGE switch specification excludes #153 Missing OF following REP]154 Incorrect number of parameters in call to lexical function S155 Number of parameters of ENTRY switch exceeds implementation limit of 1286156 Unknown name in BUILTIN declaration: .157 Conditional out of sequence: L158 <%PRINT, %INFORM, %WARN, %ERROR, or %ERRORMACRO>: O159 Conditional not terminated before end of W160 Missing formal parameter or equal sign in call to keyword macro e161 Formal parameter multiply specified in call to keyword macro &162 Missing %THEN following %IFY163 Actual parameter of call to routine is illegal4164 Language feature to be removed: @165 Language feature not present in : 6166 Name declared STACK is not properly defined>167 Name declared ENTRY is not globally defined: 7169 Fetch or store applied to field of zero size2170 Missing equal sign in FIELD declaration@171 Missing comma on right bracket in FIELD decla- ration4172 Missing left bracket in FIELD declaration4173 Missing comma or TES in FIELD declaration;174 Missing left bracket or SET in FIELD declarationJ175 Number of field components exceeds implemen- tation limit of 32W176 Field name invalid in structure reference to variable I177 Parameter of FIELD attribute must be a field or field-set nameX178 Number of parameters of FIELD attribute ex- ceeds implementation limit of 1284179 Missing equal sign in LINKAGE declaration)180 Invalid linkage type specifiedC181 Illegal register number in LINKAGE declarationW182 Multiple specification of register in LINKAGE declaration/183 Invalid parameter location specifiedD184 Missing comma or right parenthesis in LINKAGE declaration:185 Invalid linkage modifier in LINKAGE declaration:186 Missing left parenthesis in LINKAGE declaration@187 Missing global register name in LINKAGE decla- rationK188 No match in linkage for EXTERNAL REGISTER variable Z189 Global register specified by linkage not declared to callR190 WORD or Radix-50 item number allo- cated at odd byte boundary6191 Multiple GLOBAL declaration of name: B192 Multiple declaration of name in assembly source: W193 declaration not available when OBJECT(ABSOLUTE) in effectA194 Library source module must contain only declara- tions*195 LIBRARY file has invalid formatJ196 LIBRARY file must be regenerated using current compiler release:197 LIBRARY file must be generated using ;198 LIBRARY file contains internal consistency errorB199 Warnings issued during LIBRARY precompilation: <200 Illegal declaration type in library source moduleK201 Illegal occurrence of bound name in library source modulek202 Number of parameters of ARGTYPE linkage at- tribute modifier exceeds implementation limit of 128G203 linkage modifier not available with this linkage type@204 Length of SYSLOCAL specification not in range 1 to 15@205 BUILTIN declaration of invalid in this contextA206 BUILTIN operation needs a register declared as NOTUSEDW207 NOTUSED linkage modifier of caller is not a subset of that of called routineO208 Called routine does not preserve register declared NOTUSED by caller:209 Illegal character or field too large in VERSION0210 Stack pointers in different registers3211 Use of uninitialized data-segment <212 Null expression appears in value-required contextE213 Expressions eliminated following RETURN, LEAVE or EXITLOOP-214 Language feature not transportable5215 Language feature not transportable: 8216 Language feature not transportable: E217 GLOBAL or EXTERNAL name not unique in 6 characters: I218 Implicit declaration of BUILTIN to be withdrawn/219 Empty compound expression is illegal7220 PRESET items have overlapping initialization:221 Missing left square-bracket in PRESET attribute=222 Source line too long. Truncated to 132 characters.L223 Name used in routine-call not declared as ROUTINE: 4224 INTERRUPT general routine call is invalidK225 Invalid linkage attribute specified is assumedF226 Value of a linkage name is outside per- mitted rangeA227 Effective position and size outside of permitted range-228 Builtin machop has no valueS229 Parameter of builtin has value outside the range_230 Parameter of builtin must be a link-time constant expressionB231 Invalid linkage attribute specified CLEARSTACK is added&232 OTS linkage specified twiceK233 OTS linkage not declared before first routine declarationY234 OTS linkage may not use global registers or pass parameters by register:235 OTS linkage not defined before it's usedW236 First PSECT declaration appears after a declara- tion that allocates storageH237 Exponent for floating or double floating literal out of rangeW239 String exceeding implementation limits ( characters) was truncatedJ240 declaration is illegal in STRUCTURE declaration]242 Output formal parameter in routine declaration was not described in linkage?243 Output actual parameter was not described in linkage8244 Name declared UNDECLARE is not defined:P246 FORWARD declaration of cannot be satisfied by BIND declarationk247 Character size parameter of must be equal to a compile-time constant in the range 1 to 36r248 is an illegal character size for a global byte pointer. A local byte pointer will be generated=249 EXTENDED addressing is not supported under TOPS-10\250 Referenced symbol is probably not initialized.>251 Symbol is declared in an outer block1252 Test expression is always C253 Action true. E254 PRESET-attribute must be preceded by a structure-attribute3255 Offset in PRESET-item cannot be negativeM256 Filespec TRUNCATED, too long for DEBUG DST /SFC Record: R257 /MASTER_CROSS_REFERENCE qualifier has been superseded by /ANALYSIS_DATAF259 Number of psects used exceeds implementation limit of 32768&E.1 BLISS Compiler Fatal Errors&E.1 BLISS Compiler Fatal Errors&E.1 BLISS Compiler Fatal Errors&E.1 BLISS Compiler Fatal Errors&E.1 BLISS Compiler Fatal Errors&E.1 BLISS Compiler Fatal Errors&E.1 BLISS Compiler Fatal Errors&E.1 BLISS Compiler Fatal Errors&E.1 BLISS Compiler Fatal Errors&E.1 BLISS Compiler Fatal Errors&E.1 BLISS Compiler Fatal Errors&E.1 BLISS Compiler Fatal Errors&E.1 BLISS Compiler Fatal Errors&E.1 BLISS Compiler Fatal ErrorsF. Sample Output Listing*Example F- 1: Sample Output Listing1G. Optional Programming Productivity Tools"G.1 Using LSE with BLISS-32"G.1 Using LSE with BLISS-32"G.1 Using LSE with BLISS-32"G.1 Using LSE with BLISS-32?G.1.1 Entering Source Code Using Tokens and Placeholders?G.1.1 Entering Source Code Using Tokens and Placeholders?G.1.1 Entering Source Code Using Tokens and Placeholders?G.1.1 Entering Source Code Using Tokens and Placeholders?G.1.1 Entering Source Code Using Tokens and Placeholders?G.1.1 Entering Source Code Using Tokens and Placeholders?G.1.1 Entering Source Code Using Tokens and Placeholders?G.1.1 Entering Source Code Using Tokens and Placeholders?G.1.1 Entering Source Code Using Tokens and Placeholders?G.1.1 Entering Source Code Using Tokens and Placeholders?G.1.1 Entering Source Code Using Tokens and Placeholders?G.1.1 Entering Source Code Using Tokens and Placeholders"G.1.2 Compiling Source Code"G.1.2 Compiling Source Code"G.1.2 Compiling Source Code"G.1.2 Compiling Source Code"G.1.2 Compiling Source Code"G.1.2 Compiling Source CodeG.1.3 ExamplesG.1.3 ExamplesG.1.3 ExamplesG.1.3 ExamplesG.1.3 ExamplesG.1.3 ExamplesG.1.3 ExamplesG.1.4 Module DeclarationG.1.4 Module DeclarationG.1.4 Module Declaration"G.1.4.1 Routine Declaration"G.1.4.1 Routine Declaration"G.1.4.1 Routine Declaration"G.1.4.1 Routine Declaration"G.1.4.1 Routine Declaration"G.1.4.1 Routine Declaration"G.1.4.1 Routine DeclarationG.1.4.2 IF StatementG.1.4.2 IF StatementG.1.4.2 IF Statement G.1.4.3 Select Expression G.1.4.3 Select Expression G.1.4.3 Select Expression G.1.4.3 Select Expression G.1.4.3 Select Expression G.1.4.3 Select Expression G.1.4.3 Select Expression G.1.4.3 Select Expression G.1.4.3 Select Expression"G.1.4.4 CH$COMPARE Function"G.1.4.4 CH$COMPARE Function"G.1.4.4 CH$COMPARE Function"G.1.4.4 CH$COMPARE Function"G.1.4.4 CH$COMPARE Function"G.1.4.4 CH$COMPARE Function"G.1.4.4 CH$COMPARE Function-G.2 Using the VAX Source Code Analyzer-G.2 Using the VAX Source Code Analyzer-G.2 Using the VAX Source Code Analyzer-G.2 Using the VAX Source Code Analyzer-G.2 Using the VAX Source Code Analyzer-G.2 Using the VAX Source Code Analyzer-G.2 Using the VAX Source Code AnalyzerCFigure G- 1: Use of LSE and SCA for Multimodular Development-G.2 Using the VAX Source Code Analyzer-G.2 Using the VAX Source Code Analyzer-G.2 Using the VAX Source Code Analyzer-G.2 Using the VAX Source Code Analyzer*G.2.1 Setting Up an SCA Environment*G.2.1 Setting Up an SCA Environment*G.2.1 Setting Up an SCA Environment&G.2.1.1 Creating an SCA Library&G.2.1.1 Creating an SCA Library&G.2.1.1 Creating an SCA Library&G.2.1.1 Creating an SCA Library&G.2.1.1 Creating an SCA Library-G.2.1.2 Generating Data Analysis Files-G.2.1.2 Generating Data Analysis Files?G.2.1.3 Loading Data Analysis Files into a Local Library?G.2.1.3 Loading Data Analysis Files into a Local Library?G.2.1.3 Loading Data Analysis Files into a Local Library'G.2.1.4 Selecting an SCA Library'G.2.1.4 Selecting an SCA Library'G.2.1.4 Selecting an SCA Library,G.2.2 Using SCA for Cross-Referencing,G.2.2 Using SCA for Cross-Referencing,G.2.2 Using SCA for Cross-Referencing,G.2.2 Using SCA for Cross-Referencing,G.2.2 Using SCA for Cross-Referencing,G.2.2 Using SCA for Cross-Referencing,G.2.2 Using SCA for Cross-Referencing,G.2.2 Using SCA for Cross-Referencing,G.2.2 Using SCA for Cross-Referencing f  title preface4359fm_6 ch14359ch1_1'cmd_line_syntax)4359ch1_2/4359ch1_3>cmd_qual@4359ch1_4B4359ch1_5D4359ch1_6F4359ch1_7H4359ch1_8N4359ch1_9P4359ch1_10Q4359ch1_11S4359ch1_12W4359ch1_13Z4359ch1_14^4359ch1_15`4359ch1_16d4359ch1_17g4359ch1_18j4359ch1_19m4359ch1_20popt_qualt4359ch1_21w4359ch1_22{4359ch1_23}4359ch1_244359ch1_254359ch1_264359ch1_274359ch1_284359ch1_294359ch1_304359ch1_314359ch1_324359ch1_334359ch1_344359ch1_354359ch1_36corres_qual_switch4359ch1_374359ch1_384359ch1_39 ch24359ch2_1out_liscomp_out4359ch2_2list_hd4359ch2_3form_pobj_lstdef_ob_ls4359ch2_5default_objectassembler_input4359ch2_64359ch2_7list_liblist_maclist_tradefault_sourceoutput_listingmacro_expansiontracing_data4359ch2_84359ch2_94359ch2_104359ch2_114359ch2_12symbol_type4359ch2_134359ch2_144359ch2_15cross_reference4359ch2_16err_mgs%error_messages& ch3'4359ch3_1-4359ch3_2.4359ch3_344359ch3_46 debg;4359ch3_5@4359ch3_6D4359ch3_7Garithmetic_exH4359ch3_8Iaddress_repJ4359ch3_9P4359ch3_10S4359ch3_11Y4359ch3_12_4359ch3_13c fld_rnstruct_ref4359ch3_154359ch3_164359ch3_174359ch3_18debug_cs ch44359ch4_14359ch4_2machine_spec4359ch4_34359ch4_44359ch4_54359ch4_64359ch4_74359ch4_8 4359ch4_9$4359ch4_10%4359ch4_11)4359ch4_12*4359ch4_13/4359ch4_1404359ch4_15;4359ch4_16<4359ch4_17@4359ch4_18A4359ch4_19C4359ch4_20D4359ch4_21F4359ch4_22G4359ch4_23I4359ch4_24J4359ch4_25L4359ch4_26P4359ch4_27R4359ch4_28S4359ch4_29X4359ch4_30[4359ch4_31]4359ch4_32^4359ch4_33f4359ch4_34j4359ch4_35t4359ch4_36x4359ch4_37{4359ch4_384359ch4_394359ch4_404359ch4_414359ch4_424359ch4_434359ch4_444359ch4_454359ch4_464359ch4_474359ch4_484359ch4_494359ch4_504359ch4_514359ch4_524359ch4_534359ch4_544359ch4_554359ch4_564359ch4_574359ch4_584359ch4_594359ch4_604359ch4_614359ch4_624359ch4_634359ch4_644359ch4_654359ch4_664359ch4_674359ch4_684359ch4_694359ch4_704359ch4_714359ch4_724359ch4_734359ch4_744359ch4_754359ch4_764359ch4_774359ch4_784359ch4_794359ch4_804359ch4_814359ch4_824359ch4_834359ch4_844359ch4_854359ch4_864359ch4_874359ch4_88 4359ch4_894359ch4_904359ch4_914359ch4_924359ch4_93!4359ch4_94+4359ch4_95.4359ch4_9614359ch4_9744359ch4_9874359ch4_99:4359ch4_100=4359ch4_101@4359ch4_102C4359ch4_103F4359ch4_104O4359ch4_105R4359ch4_106\4359ch4_107_4359ch4_108c4359ch4_109d4359ch4_110h4359ch4_111i4359ch4_112m4359ch4_113n4359ch4_114r4359ch4_115s4359ch4_116~4359ch4_1174359ch4_1184359ch4_1194359ch4_1204359ch4_1214359ch4_1224359ch4_1234359ch4_1244359ch4_1254359ch4_1264359ch4_1274359ch4_1284359ch4_1294359ch4_1304359ch4_1314359ch4_1324359ch4_1334359ch4_1344359ch4_1354359ch4_1364359ch4_1374359ch4_1384359ch4_1394359ch4_1404359ch4_1414359ch4_1424359ch4_1434359ch4_1444359ch4_1454359ch4_1464359ch4_1474359ch4_1484359ch4_1494359ch4_1504359ch4_151 4359ch4_152 4359ch4_153 4359ch4_1544359ch4_1554359ch4_1564359ch4_1574359ch4_1584359ch4_1594359ch4_160 4359ch4_161!4359ch4_162#4359ch4_163$4359ch4_164(4359ch4_165+4359ch4_166/4359ch4_16724359ch4_16854359ch4_169<4359ch4_170?4359ch4_171B4359ch4_172E4359ch4_173F4359ch4_174O4359ch4_175P4359ch4_176V4359ch4_177Y4359ch4_178b4359ch4_179c4359ch4_180g4359ch4_181h4359ch4_182l4359ch4_183m4359ch4_184q4359ch4_185r4359ch4_186v4359ch4_187w4359ch4_188|4359ch4_189}4359ch4_1904359ch4_1914359ch4_1924359ch4_193 ch54359ch5_14359ch5_24359ch5_34359ch5_44359ch5_54359ch5_64359ch5_74359ch5_84359ch5_94359ch5_104359ch5_114359ch5_124359ch5_134359ch5_144359ch5_154359ch5_164359ch5_174359ch5_184359ch5_194359ch5_204359ch5_214359ch5_224359ch5_23 ch64359ch6_14359ch6_24359ch6_34359ch6_44359ch6_54359ch6_64359ch6_74359ch6_84359ch6_9 4359ch6_104359ch6_114359ch6_12&4359ch6_13)4359ch6_14,4359ch6_15.4359ch6_1654359ch6_17G4359ch6_18H4359ch6_19T4359ch6_20\4359ch6_21b4359ch6_22e4359ch6_23o4359ch6_24t4359ch6_25u4359ch6_26x4359ch6_27|4359ch6_284359ch6_294359ch6_304359ch6_314359ch6_324359ch6_334359ch6_344359ch6_354359ch6_36 ch74359ch7_14359ch7_2fl_an_phknow_val_chacc_ch4359ch7_6temp_name4359ch7_8 4359ch7_9#4359ch7_10%summ_switch. ch804359ch8_124359ch8_274359ch8_3=4359ch8_4?4359ch8_5D4359ch8_6F4359ch8_7K4359ch8_8L4359ch8_9M4359ch8_10N4359ch8_11Osample_programR ch9S4359ch9_1Z4359ch9_2[4359ch9_3^4359ch9_4_4359ch9_5a4359ch9_6f4359ch9_7g4359ch9_8j4359ch9_9k4359ch9_10q4359ch9_11r4359ch9_12s4359ch9_13t4359ch9_14u4359ch9_15v4359ch9_16w4359ch9_17x4359ch9_18y4359ch9_19z apa{4359apa_1}4359apa_24359apa_34359apa_44359apa_5 apb apc c1 c2 c3 c4 apdblis_cons4359apd_1 ape4359ape_1 apfsample_output apgusing_lse_sec g11 g12 g134359apg_14359apg_24359apg_34359apg_44359apg_54359apg_64359apg_7relat_sca4359apg_84359apg_94359apg_104359apg_114359apg_124359apg_13 O-ADOBE-New Century Schoolbook-Medium-R-Normal--*-100-*-*-P-*-ISO8859-1@-ADOBE-Helvetica-Bold-R-Normal--*-180-*-*-P-*-ISO8859-1@-ADOBE-Helvetica-Bold-R-Normal--*-120-*-*-P-*-ISO8859-1O-ADOBE-New Century Schoolbook-Medium-R-Normal--*-120-*-*-P-*-ISO8859-1@-ADOBE-Helvetica-Bold-R-Normal--*-100-*-*-P-*-ISO8859-1M-ADOBE-New Century Schoolbook-Bold-R-Normal--*-100-*-*-P-*-ISO8859-1@-ADOBE-Helvetica-Bold-R-Normal--*-140-*-*-P-*-ISO8859-1O-ADOBE-New Century Schoolbook-Medium-R-Normal--*-140-*-*-P-*-ISO8859-1B-ADOBE-Helvetica-Medium-R-Normal--*-120-*-*-P-*-ISO8859-1O -ADOBE-New Century Schoolbook-Medium-I-Normal--*-140-*-*-P-*-ISO8859-1/ -ADOBE-Symbol-*-R-*--*-140-*-*-P-*-*-*O -ADOBE-New Century Schoolbook-Medium-I-Normal--*-120-*-*-P-*-ISO8859-1O -ADOBE-Interim DM-Medium-I-Normal--*-140-*-*-P-*-DEC-DECMATH_EXTENSIONM -ADOBE-New Century Schoolbook-Bold-R-Normal--*-120-*-*-P-*-ISO8859-1@-ADOBE-Courier-Medium-R-Normal--*-120-*-*-M-*-ISO8859-1>-ADOBE-Courier-Bold-R-Normal--*-120-*-*-M-*-ISO8859-1L-ADOBE-Interim DM-Medium-I-Normal--*-140-*-*-P-*-DEC-DECMATH_ITALIC>-ADOBE-Times-Medium-R-Normal--*-140-*-*-P-*-ISO8859-1L-ADOBE-Interim DM-Medium-I-Normal--*-140-*-*-P-*-DEC-DECMATH_SYMBOLM-ADOBE-New Century Schoolbook-Bold-R-Normal--*-140-*-*-P-*-ISO8859-1B-ADOBE-Helvetica-Medium-R-Normal--*-140-*-*-P-*-ISO8859-1@-ADOBE-Courier-Medium-R-Normal--*-140-*-*-M-*-ISO8859-1 #W f-OPrefaceOMManual Objectives EOAThismanualisauser'sguidefortheVAXBLISS-32HOcompilerrunningundertheVMS operatingsystem.+Itis.Ointendedasa complementtothe  BLISSLanguageGuide Q.HOKItprovidesthreekindsof information:.basic operatingAO instructions, supplementary programming information,#Oand reference material.OIntendedAudienceC  LOAThisguideisintendedforusersoftheBLISS-32program-HOming language.+It presupposessome familiaritywiththeJOVMS operatingsystem,itscommand language,anditsfileOKsystem conventions.ODocument Structure ZlOAChapters A1Athrough -A33qAdescribebasic operating instructions.* -?* -,?&  J ` Chapter18\gives proceduresfor compilingaBLISS-32<(programand describesthecommand qualifiers. ` Chapter2X describescompiler architectureandtheeffectsBWofthecommand qualifiersrelatedto optimization. ` Chapter87_ describessometoolsrelatedtoBLISS-32/ programming. ` Chapter9<[providescodingexamplesintheformoftwo-completeand annotated programs.*lO*lO*oO*lO*oO.*rmORb88OThe appendixescontain reference material.  ` Appendix A+ summarizes the!command syntax,C( includingthecommand qualifiersandtheirdefaultsandabbreviations. ` AppendixB&provides formattingrules. ` AppendixC(providesamodule template. ` AppendixD1listscurrentimplementationlimits. `~ ~AppendixE<~ describestheerrormessagesproducedbythe compiler. `V VAppendixF)Visasampleoutputlisting. ` AppendixG7 describeshowtouserelated development.tools.O Associated Documents*Oz*O*CO*O*AO*O*O  OAThe%A VAX Information Directory-Alistsand describesalloftheQO documentsyoumayneedtorefertointhecourseofbuilding,Oand executingaBLISSprogram.OO Additional documentationthatiseitherdirectlyor indirectlyEOrelevanttoBLISS programmingincludesthe following: b_!OBLISSlanguageusage:$ BLISSLanguage Reference0 Manual0 (AA-H275D-TK)!OBLISSsyntaxsummary: BLISSPocketGuide& (AV-H289D- TK)!OqTransportabilitytool:$q XPORT Programmer'sGuide4q(AA-201A-TK)+O8Programlinkingand execution: 8 V#8 AX/VMSLinker Reference Manual (AA-Z420A-TE)  V! AX/VMSDCL Dictionary(AA-M Z200C-TE)OSymbolic debugging:  V% AX/VMSDebugger Reference Manual (AA-Z411C-TE)OSystem services:  V" AX/VMSSystemServices ReferenceManual (AA-Z501C-TE)+V VAXRecord ManagementServices ReferenceManual (AA-Z503B-TE)OI Conventions2dEOASyntaxnotationand definitionsusedinBLISS-32are8O explained thoroughlyinChapter2ofthe* BLISSLanguageO GuideH.(The followingisasummaryofsyntax notationsusedOKinthismanual:;TXO{item-1!|"item-2!|!item-3}CSelectexactlyoneoftheitemssep-130aratedbyverticalbarswithinthe3~braces. O$ 8 O < O :*item-1witem-2item-3 $ 9  =  ;23Selectexactlyoneoftheitemsin/3Ebracesonseparatebut contiguous3lines.Oitem ...-3Theitemdirectly precedingthe 3``y .../''canberepeatedzeroormore03)timeswiththeitems separatedby3vspaces.Oitem,  ...-3Theitemdirectly precedingthe 3>``,> ...)>''canberepeatedzeroor23moretimeswiththeitems separated3bycommas.ORitem+R ...-3RTheitemdirectly precedingthe 3``+ ...)&''canberepeatedzeroor23moretimeswiththeitems separated3;byplussigns.QOIn addition,theredportionsofasyntaxlineor system-userFOdialogueidentify informationenteredinbytheuser.A *O1.1B CompilingaBLISSModuleJOUTocompileaBLISSmodule,issuetheDCLcommandBLISS,JOfollowedbyaBLISScommandline.'Thecommandlinecon-MOsistsofoneormoresourcefilenames optionallypreceded3O^by command-line qualifiers.)(Referto^Section1.1.1.)^Some1OBLISScommandlineexamplesfollow:*!?' nn ` ATocompileamodule,givethe followingcommand: U$UBLISS&MYPROGR!1(BbTheBLISScompilerusesfile MYPROG.B32asinput,Kcompilesthesourceinthatfile,andproducesanobjectfile, MYPROG.OBJ. ` MToproducealistingfile,usethe/LISToutput qualifier: $ BLISS/LIST%MYPROG" VNbInadditiontotheobjectfile,theBLISScompilerproduces)thelistingfile MYPROG.LIS. `: G:Toproduceanobjectfilewithaname differentfromMthatofthesourcefile,givethenameinthecommandasfollows: p$#pBLISS/OBJECT=GAMMA%ALPHA$#* GbTheBLISScompilerproducestheobjectfile GAMMA.OBJ. ` NToproduceaBLISSlibraryfileinsteadofanobjectfile,1:usethe/LIBRARYcommand qualifier: $ BLISS/LIBRARY%ALPHAP$1&EbTheBLISScompilercompilestheinputfile ALPHA.R327andproducesthelibraryfile ALPHA.L32. `: L:Tocompilemorethanonemodule,includealistofinput'files separatedbycommas: $!BLISS&ALPHA,BETA,GAMMA%EbThecompilercompiles ALPHA.B32, producingtheobjectAfile ALPHA.OBJ;then BETA.B32, producing BETA.OBJ;6andthen GAMMA.B32, producing GAMMA.OBJ. ` LTocompileamodulethatconsistsofseveralpieces,eachNinaseparatefile,usethe concatenation indicator( + ): p$!pBLISS&ALPHA+BETA+GAMMA&EbTheBLISScompilercompilesthesourcemoduleformed@bythe concatenationof ALPHA.B32, BETA.B32,and> GAMMA.B32, andproducesthesingleobjectfilel ALPHA.OBJ.O'%%O1.1.1B Command-LineSyntax(! oxOcompilation-request3$BLISS [/qualifier ...]input-30spec,0 ...O input-spec3 file-spec[+ ...] [/qualifier ... ]O$ qualifiers 3P 8 3 > 30 > 3 < 3 > 3x > 3 :lcheck qualifiergeneral qualifiers&machine-code-list qualifierToptimize qualifieroutput qualifiers reference qualifier = source-list qualifierterminal qualifier P 9  > 0 >  =  > x >  ;ROThedollarsign( $ ) representstheDCLprompt.'As indicatedROinthesyntaxrule,aspacemust immediatelyprecedethefirstLOLoronly input-spec.*OptionalspacesmaybeusedbeforeorLOafterany delimiter charactershowninthisand subsequentIOsyntax diagrams.*The applicable delimitersarethecommafOV( , ),plussign( + ),slash( / ),equalsign( = ),andcolon( : ).) (O1.1.2B Command-Line SemanticsHO4TheBLISS-32compileruses command-line qualifiersgivenKOintheBLISS-command-linetomodifytheirdefaultsettingsNOforeach compilation.'Then,each input-speciscompiledsep-TO=aratelyinthecontextoftheinitialdefault qualifier settings.PO Qualifiersandtheirinitialdefaultsettingsare describedinOSection1.3.*)O|?>U*+MOUnlessyouusea qualifiertochangethe compiler'sbehav-OOior,theoutputfroman interactive compilationisanobjectLO5fileandaterminallisting,andtheoutputfromabatchCO compilationisanobjectfileandalistingfile.g+! >=WOThecompilerusesthecontentsofafileorofaseriesoffilesQOjoinedbyplussigns( + )asinputtoaBLISS compilation.RO5Thecompilerbegins processingwiththefirstfilegiveninanNO input-specand continuesuntilan end-of-fileisreached.)ItSO continuestoreadinputuntilallfiles specifiedintheinput-LO>spechavebeenread.' Command-line qualifierscanappearinQOtwoplacesinacommandline:&beforethefirst input-specandOOafter individual input-specs.(Those appearingbeforethefirstQOH input-spechaveaglobal applicationtoall input-specsinthe&O command-line.'Forexample: O%$4% BLISS/LIBRARY%ALPHA,BETA+THETA+ZETA,OMEGA,! zROThose appearingattheendofan input-specapplyonlytothe2O input-spectheyfollow.'Forexample: Oa$/a BLISS/LIBRARY%ALPHA,BETA/OBJECT,IOTA,- MOIfno command-line qualifiersexistinacommandline,de-ROfault qualifiersettingsareassumedforall input-specsintheOO5commandline.'All qualifiershaveanassigneddefaultsettingOorvalue..NGOTheonlyrequiredspaceinthecommandline separatesGOthefirst input-specfrom precedingglobal command-lineO5 qualifiers.96/ #O1.2BFileSpecificationsMOUFilespecificationsareusedtonamethesourceofprogramNOtexttobecompiledandthe destinationofoutputfromtheNO compilation.'Filespecificationscanoccurinthree contexts:G0 ` 9Inthe input-specsofaBLISS-command-line `O COAsthevaluesofthe qualifiers/OBJECT, /LIBRARY,%/LIST,and/ANALYSIS-DATA `' B'InREQUIREandLIBRARY declarationsinthemodulebeingcompiled1! SOThe file-specisastandardVMSfilespecification,as describedOinthe 8 V"f AX/VMSDCL Dictionary.;(SeeAppendixA.)*1Ozi2??OAfile specificationis interpretedasfollows:3 }.`1.:Logicalnamesare translated.W`O2.:Ifafiletypeisnotgiven,adefaultfiletypeisused,as, describedinthenextsection.W`'3.:Ifthe file-specappliestoanoutputfileandafilenameisQnotgiven,thenthenameofthefirstoronlyinputfilein$the input-specisused.{4 QNOThecompilerusesthissameinterpretationwhenit processesLOthefile specificationgiveninaREQUIREorLIBRARYdec-$O5 laration.)(Refertothe,~5 BLISSLanguage ReferenceManual 5).SOThecompilerhastwoorderedlistsofdefaultfiletypestobeSOtriedforan input-specthatdoesnotincludeafiletype.)TheMO>defaulttypethatthecompilerappliesdependsontheout-NOputtobeproducedbythe compilation,as indicatedintheO followinglist:5 O'O Input-specUsedtoProduceDefaultTypeList OObAnobjectmoduleb.B32,.BLIOAlibraryfile#.R32,.REQ,.B32,.BLI O%6 EOIftheprogrambeingcompiledcontainsaREQUIREorOOLIBRARY declaration,thecompilerusesthe followingliststoQO5searchforthe appropriatefiletype accordingtothetypeofO declaration:7 OOFileUseDefaultTypeList OMObFilegiveninaREQUIRE declarationI.R32,.REQ,.B32,.BLI8OFilegiveninaLIBRARY declarationD.L32 O8qKOThedefault file-typesforoutputfilesthatthecompiler&O generatesareasfollows:9  OOFile-DesignatorDefaultType OOb/OBJECTb.OBJO/LIST.LISOV/LIBRARYV.L32O/ANALYSIS-DATA.ANA O: *ROSupposeyouhaveenteredthe followingsourcetextinthefileO ALPHA.BLI:OaMODULE%MYTEST&=OBEGINOREQUIRE& 'CBLISS';O9LIBRARY& 'TBLISS'; O... OENDOELUDOM;!iHOAndyouusethe followingcommandlinetocompileit: O$BLISS&ALPHA<! HOBecausetheBLISS-command-linecontainsno qualifierre-OOquestingthatalibraryfilebe produced,theoutputoftheIO5 compilationisanobjectmodule.- Therefore,thecompilerROchoosesthelistofdefaulttypes associatedwithobjectmoduleLOoutputandsearchesfirstfor ALPHA.B32;then,notfindingQO>thatfile,thecompilersearchesfor ALPHA.BLI,whichitfindsOand compiles.= arMOIn processingthemoduleMYTESTinthatfile,thecompilerHO encounterstheREQUIRE declarationforthefileCBLISS.OO5BecausenofiletypeforCBLISSisgiven,thecompilerusesMOthelistofdefaulttypesforfilesinaREQUIREdeclara-HOtionandsearchesfor CBLISS.R32,then CBLISS.REQ,thenHO> CBLISS.B32,andthen CBLISS.BLI.Whenthecompilerpro-POcessestheLIBRARY declaration,itusesthedefaulttypelistLO associatedwithlibrary declarationsandsearchesfirstforOH TBLISS.L32.}w >'O1.3B Command-Line QualifiersIOU Command-line qualifiersprovidecontrolovermanyaspectsLOofthe compilation.)Valid command-line qualifiersandtheir&O functionsareasfollows:? ( ` H/CHECKqualifier-controlsthelevelofsemanticchecking#(doneduring compilation ` 6/CROSS_REFERENCEqualifier-includescross-5 reference informationinoutputlisting ` KGeneralqualifiers-setsavariantvalueand specifiescode%and debugging information `W 8W/MACHINE-CODE-LISTqualifier-providesoutputLlisting information concerningtheformoftheobjectpart `/ D/ /OPTIMIZEqualifier-suppliescode optimizationstrate-giesand directions ` JOutputqualifiers-definesthetypesofoutputtobepro-`duced ` C /SOURCE_LISTqualifier-providesoutputlistinginfor->8mation concerningtheformofthesourcepart ` @ /TERMINALqualifier-controlsoutputproducedonaterminal@ VV"O1.3.1B/CHECK QualifierNO4The/CHECK qualifiercontrolsthelevelofsemanticcheckingOOdoneduring compilation.'The qualifierallowsalllegalBLISSHOsyntaxtobeexaminedforsemanticirregularities.-SomeOO=examplesoftheuseofthe/CHECK qualifierareasfollows:A| ` JTosuppressfieldnamecheckingon structureaccessesifI(thedatasegment declarationhasnofield-attribute,use.the/CHECK qualifierasfollows: $$BLISS/CHECK=NOFIELD%ALPHA ` ITocheckfortheuseof uninitializedstorage,usethe)/CHECK qualifierasfollows: c$$cBLISS/CHECK=INITIAL%ALPHAxBBNO1.3.1.1CSyntax5O)/CHECK qualifiersyntaxisasfollows:CO0check qualifierK/CHECK=  n (check-value, ... 0) check-value q oOE check-value K 8 K> < K :FIELDINITIALPOPTIMIZE REDECLARE|!NOFIELD|! NOINITIALP|! NOOPTIMIZE|! NOREDECLARE = 9 => = = ;D O1.3.1.2CDefaultsSO)Intheabsenceofaspecificchoiceof check-value,thefollow-1Oingvaluesareassumedbydefault:qEGFIELD(INITIALOPTIMIZE NOREDECLAREFO1.3.1.3C SemanticsHO)The/CHECK qualifier indicatesthatoneormorecheck-IOvaluesfollow.)The check-valueshavethe followingmean-Oings:FG!  OO Check-ValueKMeaning OObFIELD3KbDonotsuppressfieldname checking.ONOFIELD>KIfthedatasegment declarationhasnofield->K) attribute,suppressfieldnamecheckingontheKw structure accesses.OINITIAL9KCheckfortheuseof uninitializedLOCAL,4K> STACKLOCAL,andREGISTERdatastorage.O NOINITIAL:KDonotcheckfortheuseof uninitializedKstorage.OOPTIMIZE8KCheckfor suspiciousoptimizations-forex-=Kample,constantfolding expressionsofaform-Kthatisalwaysfalse,suchas::X< 0 ; 8 ; %1b>EQLOq NOOPTIMIZE9KqDonotcheckfor suspiciousoptimizations.O REDECLARE=KCheckforthe redeclarationofanamewithinK8anestedscope.LO NOREDECLAREDonotcheckforthe redeclarationofaname. OH,O1.3.2B/CROSS_REFERENCE Qualifier=O4The/CROSS_REFERENCE qualifierallowsacross-LO referencelistingtobeincludedwiththecompilerlistingNOoracross-referencedatafiletobecreated,orboth(re-O=ferto+=Section1.3.5).1<=Someexamplesofusingthe/CROSS_1O REFERENCE qualifierareasfollows:*H+?p2I ` DTohaveacross-referencelistingincludedwiththe?(normalsourcecompilerlisting, usethe/CROSS_D REFERENCE qualifierinthecommandlineasfollows: $+BLISS/LIST/CROSS_REFERENCE&ALPHAJMbInadditiontotheobjectfile,thecompilerproduceslistFfile ALPHA.LIS,towhichacross-referencelistingis appended. ` ITohaveonlyacross-referencelistingproduced(withoutHthenormalsourcecompiler listing),usethe following: p$7p*BLISS/LIST/CROSS_REFERENCE/SOURCE=NOSOURCE%- $_/MACH=NOOBJECT&ALPHA}KSMbInadditiontotheobjectfile,thecompilerproduceslistBfile ALPHA.LIS,whichcontainsonlycross-reference information. ` EToproduceacompilerlistingwithacross-reference(listing,usethe following: p$+pBLISS/LIST/CROSS_REFERENCE&ALPHAL MbInadditiontotheobjectfile,thecompilerproduceslistIfileALPHA.LIS,towhichacross referencelistingis appended. ` HToproducealistingwithcross-referencesthatincludeJmultiple referencestothesametypesymbol occurringon8Dthesamesourceline,usethe following: $6%BLISS/LIST/CROSS_REFERENCE=(MULTIPLE)%ALPHAMMbInadditiontotheobjectfile,thecompilerproduceslistKfile ALPHA.LIS,towhichacross-referencelistingisap-Ependedthatincludesmultiple referencestothesamelsymbol.NBXO1.3.2.1CSyntax?O)/CROSS_REFERENCE qualifiersyntaxisasfollows:O< Oreference-qualifier Kf4/CROSS_REFERENCE{=reference-value} gOqreference-value Kqf!vMULTIPLE!|! NOMULTIPLE ZqgPO1.3.2.2CDefaultsPO)Intheabsenceofanexplicitchoiceof referencevalue,the6Ovalue NOMULTIPLEisassumedbydefault.QO1.3.2.3C Semantics>O)The/CROSS_REFERENCE qualifier indicatesthat aFOreference-valuecanbegivenforthe compilation./The9Oreference-valuehasthe following meanings:R O"OReference-ValueMeaning OObMULTIPLE:KbAllowallmultiple references(ofthesame9K referencetype)toasymbol, occurringon=Kthesamesourceline,tobeincludedinthe#KKcross-referencelisting.O NOMULTIPLE;KExcludefromthecross-referencelistingallUGbThecompilerreadsthesourcefrom ALPHA.B32andcre-Iatesanobjectfile ALPHA.OBJ,whichincludes additionaldebugtables. ` JTocheckthesyntaxofaprogramyoudonotintendtoGexecute,usethe/NOCODE qualifiertosave compilationDtime,asfollows: $"BLISS/LIST/NOCODE&ALPHA `H LHTosetthevalueofthelexicalfunction%VARIANTto17,Dforexample,usethe/VARIANT qualifierasfollows: %$!%BLISS/VARIANT=17%ALPHAyWBOO1.3.3.1CSyntax6O)General qualifiersyntaxisasfollows:X} YOgeneral qualifier K 8 K > K < KW > K :2 /TRACEBACK/DEBUG/CODE /VARIANT{=value}$h /ERROR_LIMIT{=value}P7|! /NOTRACEBACKP|!/NODEBUGP|!/NOCODE P | Pm|  9  >  = W >  ;Y IOIfthe /NOTRACEBACK qualifierisgiven,thenthe/DEBUGOO qualifieris meaninglessand, therefore,shouldnotbegiven.ZO1.3.3.2CDefaultsRO)Intheabsenceofanexplicitchoiceofgeneral qualifier,the;O following qualifiersareassumedbydefault:[Kb /TRACEBACK(/NODEBUG/CODE /VARIANT=02/ERROR_LIMIT=30\ NMOThecompilerproducescode,doesnotincludethe additionalSO debugging informationintheobjectfile,andsetsthevalueofO5%VARIANTtozero.]! QOIfthegeneral qualifier/VARIANTisgivenwithouta specified5Ovalue,thenavalueof1isassumed.^B_O1.3.3.3C SemanticsCO)Thecommand qualifiershavethe following meanings:_ O /TRACEBACK9K Generates informationintheobjectmodule9K0thatcanbeusedbytheVMSDebuggerto:K~locatemodule,routine,andprogramsectionKnames.BOE /NOTRACEBACKProducestheminimumsizeobjectmod-9Kule.&Doesnotincludeany informationfor!K debuggingortracing.OZ/DEBUG9KZ Generates informationintheobjectmodule9KthatcanbeusedbytheVMSDebuggerto8K referencenamesdeclaredwithintheBLISSKBmodule.O/NODEBUG9KDoesnotgenerateany additional debugging@K  information."Ifthis qualifierisappliedeither:KW explicitlyorbydefault,theVMSDebugger:Kcanonlylocatemodule,routine,andPSECTKnames.Ol/CODE:Kl GeneratesobjectcodefortheBLISSsourceKmodule.O3/NOCODE=K3Performsonlyasyntaxcheckoftheprogram.O/VARIANT KSets%VARIANTto1.O& /VARIANT=n:K&Sets%VARIANTton,wherenisadecimal"Ktintegerintherange: n   (2  J 31)    n   ; (2   31) j   1+O  /ERROR_LIMITSetslimitto1.IOM /ERROR_LIMIT=n Terminates compilationafternerrorlevel(K  diagnosticsare encountered.` O1.3.3.4C DiscussionNO)Anobjectmodulecanbeproducedwiththe followingdegreesLOof informationforthelinker, debugger,andthe operatingOsystem:laB ` )No information(/NOTRACEBACK) `O FOBasic informationaboutmodules, routines,andprogram/sections (/TRACEBACKand /NODEBUG) `' E' Informationaboutmodules, routines,program sections,>anddatasegmentnames (/TRACEBACKand/DEBUG)b! WOOThedefaultobjectmodulecontainsthebasic information.'ForNOexample,ifaprogramfailsbecauseofanaccess violation,OO5VMScandisplaythestateoftheprogramwhenthe violationOOoccurredthroughits traceback facility.(Further,youcanuseMOtheVMSDebuggertorefertomodules, routines,andPSECTs0O> symbolicallyandtocall routines.Tc! *IOThe /NOTRACEBACK qualifiershouldbeusedonlywhenob-JOjectmodulesforwell-checked-outprogramsarebeinggen-MO5eratedandwhenthespacetobeoccupiedbythesemodulesCOmustbekeptataminimum.*Usingthe /NOTRACEBACKUO qualifierreducesthesizeoftheobjectmoduleand,toalesserRO>degree,thesizeofthe executableimage,butdeprivestheob-QOjectmoduleof informationthatcouldbevaluableat executionOtime.edV;.O1.3.4B/MACHINE_CODE_LIST QualifierEO4The/MACHINE_CODE_LIST qualifierisusedtogivetheROcompiler instructionsabouttheformoftheobjectpartoftheEOoutputlisting.,Someexamplesofusingthe /MACHINE_1O= CODE_LIST qualifierareasfollows:'e{ | ` NToobtainanoutputlistingthatcanbe subsequentlyeditedA(andthen reassembledbytheVAXMACRO assembler,8usethe ASSEMBLER code-value,asfollows: $7&BLISS/LIST/MACHINE_CODE_LIST=ASSEMBLER&ALPHA ` PToobtainalistingthatcanbe assembledandthatdoesnot?containbinary,includetheNOBINARY code-value: c$Dc(BLISS/LIST/MACHINE_CODE_LIST=(ASSEMBLER,% NOBINARY)&ALPHAf N@OTheformoftheoutputlistingis describedinSection2.2. QThePOobjectcodepartofthatlistingdependsonthe machine-code-O5list qualifier.*fF|?gBZO1.3.4.1CSyntaxAO)/MACHINE_CODE_LIST qualifiersyntaxisasfollows:h (^ qualifier/MACHINE_CODE_LIST=  8 w <  :^;( code-value,f;... ;)^ code-value D  9 D w = D  ;i ~O code-value K 8 K > K < KW > K : OBJECTY ASSEMBLERSYMBOLICBINARYA COMMENTARY UNIQUE_NAMESY |!NOOBJECTYY|! NOASSEMBLERY|! NOSYMBOLICY|!NOBINARYYA|! NOCOMMENTARYY|!NOUNIQUE_NAMES  9  >  = W >  ;j O1.3.4.2CDefaultsSO)Intheabsenceofanexplicitchoiceof code-value,thefollow-1Oingvaluesareassumedbydefault:ksOBJECT( NOASSEMBLERSYMBOLICBINARY2 COMMENTARYNOUNIQUE_NAMESl}KOThecompilerproducesalistingthat resemblestheoutput2OlistingoftheVAXMACRO assembler.m O1.3.4.3C SemanticsEO)The/MACHINE_CODE_LIST qualifierindicatethatoneorLOmore code-valuesfollow.'The code-valueshavethe followingO meanings:n i OO Code-Value3Meaning OObOBJECT53bProducetheobjectpartoftheoutput3listing.O)NOOBJECT63)Suppresstheobjectpartoftheoutput3wlisting.O ASSEMBLER13Producealistingthatcanbeas-/3>sembled,bylistingthe assembler33 instructionsproducedasaresultof-3 compilingtheBLISSprogramand43& includingallother informationwithin63t comments.#Ifthisoutputistobeas--3sembled,the qualifiers/SOURCE_'3 LIST=NOHEADERand /MACHINE_&3\CODE_LIST=UNIQUE_NAMESmust3alsobe specified.O$ NOASSEMBLER63$Donotlistthe assembler instructions.OSYMBOLIC23Includeamachinecodelistingthat/3usesnamesfromtheBLISSsource38program.O NOSYMBOLIC53Donotincludeamachinecodelisting-3thatusessourceprogramnames.Oy COMMENTARY-3yIncludeamachine-generatedcom-23mentaryintheobjectcodelisting.13 Atthistime,themachine-generated03b  commentaryislimitedtoacross-3  reference.O)  NOCOMMENTARY43) Donotincludea commentaryfieldin%3w theobjectcodelisting.O BINARY93 Includealistingofthebinaryforeach63>  instructionintheobjectcodelisting.O NOBINARY73 DonotincludealistingofthebinaryO1  UNIQUE_NAMES/31 Replacenamesbymachine-generated33 namessothatallnamesareunique,83  regardlessofscope,sothattheresult-63 inglistingcanbe correctly assembled."3g (See ASSEMBLERabove.)O NOUNIQUE_NAMES-3 Donotreplacenamesbyunique3/names. OJoNIOEachofthe code-valuesis describedand illustratedinOSection2.2.3@ in connectionwiththe discussionoftheoutputO5 compilation.*oO?p %O1.3.5B /OPTIMIZE QualifierNO4The /OPTIMIZE qualifierisusedtosupply directionstotheLOcompileraboutthedegreeandtypeof optimizationwanted,MOandtomake assertionsabouttheprogramsothatthecom-OO=pilercanselectthe appropriate optimization strategies.'SomeHOexamplesoftheuseofthe /OPTIMIZE qualifierareasOfollows:aq w7 ` JToincreasethe compilationspeedbyomittingsomestan-G(dardoptimizations,useeitherthe/QUICK qualifierorEthe /OPTIMIZE qualifierwiththevalueQUICKinthe&commandline,asfollows: ^$%^BLISS/OPTIMIZE=QUICK&ALPHAqrGFbNotethattheuseofeithertheQUICKvalueortheD/QUICK qualifierturnsoffflow analysis..(RefertoSection7.1.2.) ` >Togetminimum optimization,usethe /OPTIMIZE= qualifierwiththevalueLEVEL:0,asfollows: p$'pBLISS/OPTIMIZE=LEVEL:0%ALPHA ` AToobtainmaximum optimization,usethe /OPTIMIZE=H qualifierwiththevalueLEVEL:3,asfollows: $'BLISS/OPTIMIZE=LEVEL:3%ALPHA `L ILTodirectthecompilertouse techniquesthatmaygen-Leratealargerprograminordertoincreaseits operatingH efficiency,givethe /OPTIMIZE qualifierwiththevalueVSPEED,asfollows: $%BLISS/OPTIMIZE=SPEED&ALPHA `Z GZToinformthecompilerthattheprogramusespointersFto manipulatenameddata,usethe /OPTIMIZE qualifier1 withthevalueNOSAFE,asfollows: $&BLISS/OPTIMIZE=NOSAFE%ALPHA*r?s! QOAdetailed discussionofthe optimizations resultingfromusing2Othe /OPTIMIZE qualifierisgiveninoChapter7.*solO{tBQO1.3.5.1CSyntax8O) /OPTIMIZE qualifiersyntaxisasfollows: u@ |O0optimize qualifier3 /OPTIMIZE= 3b 8 3 < 32 :(optimize-value, ... M)optimize-value b 9  = 2 ;Ogoptimize-value 3 8 3a < 3 :QUICK%SPEED"sLEVEL:optimize-levelSAFE|!NOQUICK%|!SPACE|!NOSAFE  9 a =  ;Ocoptimize-level#3c{0!|!1!|!2!|!3}vEOTheoptimize-valuesSPEEDandSPACEaremutuallyex-MOclusive;theymustnotbegiveninthesamecommandline.wO1.3.5.2CDefaultsNO)Intheabsenceofanexplicitchoiceofoptimize-value,the7O followingvaluesareassumedbydefault:ix?NOQUICK(SPACELEVEL:2SAFEhy>>OThecompilerisdirectedtodothe following:ez @; ` CPerformnormal optimization,biasingthe speed/space:( trade-offinfavorofminimumprogramsize ` FAssumethatall variablesare addressedbynameonly `' ;'Perform optimizationacrossmarkpoints(seeA'Section 7.1.2.2.)*zA?{O1.3.5.3C SemanticsCO)The /OPTIMIZE qualifier indicatesthatoneormoreHOoptimize-valuesaregiven.,Optimize-valueshavethefol-Olowing meanings.D|  OO Optimize-O+Valueb+Meaning OFOQUICKCbOmitsomestandard optimizations(forexample,turnDboffflow analysis)inordertoincrease compilationbKspeed.4ONOQUICKPerformstandardoptimizations.O>SPEEDFb>Increasethe potential executionspeedoftheprogramAbbeingcompiled(if possible)byusingmorespaceDbwhere necessary."Formore informationontheeffectb&ofthisvalue,see&Section7.1.4.=&NotethatSPEEDis2bt equivalenttothe module-switchZIP.OSPACE@bKeepprogramsizetoaminimumatthepossible@b;expenseof operatingspeed.%Formore information0bontheeffectofthisvalue,seeSection7.1.4.Notethat?bSPACEis equivalenttothe module-switchNOZIP.OPLEVEL@bPOptimizetheprogrambeingcompiled accordingto3btheoptimize-levelgiven,asfollows: bb  Optimize-bZLevelvZMeaning bu b0vMinimum optimization bX1!vX Subnormal optimization b2vNormal optimization bL 3vL Maximum optimization bg Tb LEVEL:3 optimizesspeedattheexpenseofspaceinthesamewayTb4 asSPEED.Formore informationontheeffectofthisvalue,seeb Section7.2.O SAFE>b Assumethatallnamed data-segmentsarerefer-BbI encedbynameonlyandnot manipulated indirectlyAb inanyway,anduse optimization techniquesthatGb exploitthisfact.#Formore informationontheeffectb1 ofthisvalue,see1 Section7.1.2.1.EO NOSAFEAssumethat sometimesanamed data-segmentisBb  referencedbymeansofacomputed expressionand,@bF  therefore,some optimization techniquescannotbeb used. O *|4*|W}4*|bP I4%*| 4} k#O1.3.6BOutput QualifiersTO4Output qualifiersareusedtoindicatethetypeofoutputtobeHOproducedfromaBLISS-32 compilationandtogivenamesNOforthefilestobeproducedwhenyoudonotwanttouseIO=thedefaultnames.,The followingareexamplesofoutputO qualifiers:~ ` HTosuppressthe productionofanobjectfile,usetheE( /NOOBJECT qualifierinthecommandline,asfollows: $BLISS/NOOBJECT&ALPHADbTheBLISS-32compilerreadsthesourceinthefileG ALPHA.B32andproducesnooutputfiles.(Theonlyout-Dputsaretheerrormessagesandsummary information&lproducedatthe terminal. ` SToobtainalistfileforasinglesourcefile,usethe/LIST"D qualifier,asfollows: $ BLISS/LIST%ALPHA y=bThe BLISS-32 compiler produces anobject file@ ALPHA.OBJandalistfile ALPHA.LIS.(The/LISTF qualifierisassumedbydefaultinabatch command.) ` STousea differentnamefortheobjectorlistfiles,usethe  following qualifiers: p$-pBLISS/OBJECT=BETA/LIST=GAMMA%ALPHAh@bThecompilerreadstheinputfile ALPHA.B32andEproducestheobjectfileBETA.OBJandthelistfile GAMMA.LIS. ` JToproduceananalysisdatafileforaVAXSourceCodeDAnalyzer(SCA)library,usethe following qualifier: p$+pBLISS/ANALYSIS_DATA=SCALIB&ALPHAY! 1/FbThecompilerreadstheinputfile ALPHA.B32andpro-7ducestheanalysisdatafile SCALIB.ANA. `: R:Toproducealibraryfileratherthananobjectfile,usethe,/LIBRARY qualifier,asfollows: $ BLISS/LIBRARY%ALPHAuFbThecompilerreadstheinputfile ALPHA.B32andpro-/ducesthelibraryfile ALPHA.L32.xBNO1.3.6.1CSyntax5O)Output qualifiersyntaxisasfollows:o 2EO~outputO qualifier b 8 bw < b :/OBJECT {=file-spec}4/LIST {=file-spec} /LIBRARY {=file-spec}&/ANALYSIS_DATA {=file-spec}|! /NOOBJECT6|!/NOLIST|! /NOLIBRARY|!/NOANALYSIS_DATA {  9 { w = {  ;4  POThecompilercanproduceeitheralibraryoranobjectfile,JObutnotboth.* Therefore,thefile-designators/OBJECTandMO5/LIBRARYaremutually exclusive;theymustnotbegivenin#Othesamecommandline.O1.3.6.2CDefaultsLO)In interactivemode,intheabsenceofanexplicitchoiceNOofoutput qualifier,the following qualifiersareassumedbyOdefault:zP/OBJECT(/NOLIST /NOLIBRARY/NOANALYSIS_DATAQOInbatchmode,alistfileisproducedbydefault;thus,the.O following qualifiersareassumed:xN/OBJECT(/LIST /NOLIBRARY/NOANALYSIS_DATAB^O1.3.6.3C SemanticsBO)Theoutput qualifiershavethe following meanings:y OO/OBJECT=file-spec:3Produceanobjectfileinthefilespeci-30fiedby file-spec.O/OBJECT:3Produceanobjectfileinthefilespeci-3fiedby '5input-file-name.OBJ ' .Oq /NOOBJECT-3qDonotproduceanobjectfile.O/LIST=file-spec:3Producealistfileinthefile specified38by file-spec.O/LIST:3Producealistfileinthefile specified 3by 'input-file-name.LIS 4' Z.Oz/NOLIST*3zDonotproducealistfile.O/LIBRARY=file-spec:3Producealibraryfileinthefilespeci-3Afiedby file-spec.O/LIBRARY:3Producealibraryfileinthefilespeci-3fiedby '5input-file-name.L32 ' .O /NOLIBRARY-3Donotproducealibraryfile.NO/ANALYSIS_DATA=file-specDProduceananalysisdatafileinthe)3Ifile specifiedby file-spec.O/ANALYSIS_DATA/3Produceananalysisdatafilein"3thefile specifiedby ' input-file-3^name.ANA ^' ^.O/NOANALYSIS_DATA53Donotproduceananalysisdatafile.F V(O1.3.7B /SOURCE_LIST QualifierFO4The /SOURCE_LIST qualifierisusedtosupplyinforma-ROtionabouttheformofthesourcepartoftheoutputlisting.JOSomeexamplesofusingthe /SOURCE_LIST qualifierareasO=follows:  ` OToobtainapagedlistingwith44linesoneachpage,give2(the following /SOURCE_LIST qualifier: $4#BLISS/LIST/SOURCE_LIST=PAGE_SIZE:44&ALPHA `- I-Toobtainanunpagedlistinginwhichthemacroexpan-@sionsaregiven,usethe following source-value: $A 'BLISS/LIST/SOURCE_LIST=(NOHEADER,EXPAND%MACROS)&ALPHA ` HToobtainalistingthatcontainsthecontentsoftheEREQUIREfilesgiveninREQU?( (IRE declarations,usethe": following source-value: $/BLISS/LIST/SOURCE_LIST=REQUIRE%ALPHA~BTO1.3.7.1CSyntax;O) /SOURCE_LIST qualifiersyntaxisasfollows: ' O source-list qualifiery /SOURCE_LIST=  n( source-value, ... y) source-value  oO source-value y 8 y4 > y < y  > yt :HEADER PAGE_SIZE::LIBRARYREQUIRE EXPAND_MACROS" TRACE_MACROSpSOURCE|!NOHEADERnumber-of-lines:|! NOLIBRARY|! NOREQUIRE|!NOEXPAND_MACROS"|!NOTRACE_MACROSp|!NOSOURCE B  9 B 4 > B  = B  > B t ;Onumber-of-lines y{20!|!21!|!22!| ... 3}O1.3.7.2CDefaultsLO)Intheabsenceofanexplicitchoiceof source-value,the7O followingvaluesareassumedbydefault:HEADER( PAGE_SIZE:58 NOLIBRARY NOREQUIRE2NOEXPAND_MACROSNOTRACE_MACROSSOURCEOOThecompilerproducesapagedlistingwith58linesoneachEOpage,inwhichno expansionortracingis included.O1.3.7.3C SemanticsFO)The /SOURCE_LIST qualifier indicatesthatoneormoreIO source-valuesaregivenforthe compilation.,Thesource-1Ovalueshavethe following meanings: ! ~ OO Source-Value3Meaning OObHEADER53bPagethelistingproducedonthelist23fileandincludeaheadingoneach3page.OwNOHEADER83wDonotpagethelisting,donotinclude63 headings,anddonotproduce statistics33inthe compilationsummary."Usethis93_valueifthelistingistobe assembled.OPAGE_SIZE:lines53Usethenumberoflines specifiedfor73&eachpageofthelistfile."Thenumber13toflinesmustbegreaterthan19.OLIBRARY:3Produceatraceinthelistingfileiden-23;tifyingthelibraryafteraLIBRARY53 declarationandthefirstuseofeach/3namewhose definitionisobtained73$fromalibraryfile."Foranexampleof!3qalibrarytrace,seeqSection2.2.4.2.O NOLIBRARY63Donotproduceatrace identifyingany/38 librariesandtheircontributions.OREQUIRE/3Includesourcetextobtainedfrom&3requirefilesinlisting.Oy NOREQUIRE/3yNonotinclude require-filetext.O EXPAND_MACROS23Includethe expansionofeachmacro53A callinthelistingfile.&Foranex-.3 ampleofamacro expansion,see3 Section2.2.4.3.OU NOEXPAND_MACROS.3U Donotincludethe expansionof3 macros.O  TRACE_MACROS43 Includeatraceofeachmacroexpan-33j sion.#Thatis,includethe parameter43 bindingandany intermediateformsof83  expansion,aswellastheresultofthe43S  expansion."Foranexampleofamacro3 trace,seep Section2.2.4.4.O NOTRACE_MACROS43 Donotincludeatraceofmacroex-3g  pansions.O SOURCE43  Incrementthelistingcontrolcounter.63/Outputislistedwhenthelistingcon-73|trolcounterispositiveandnotlisted53whenthecounteriszeroor negative.OCNOSOURCE43C Decrementthelistingcontrolcounter. O_*?4*3 4*pn 4%O1.3.8B /TERMINAL QualifierMO4The /TERMINAL qualifierisusedtocontroltheoutputthatNOissenttothe terminal.-Youcanhaveerrorsor statisticsKOprintedor suppressedontheterminalduringthecompila-MO=tionofaBLISSprogram.*Someexamplesoftheuseofthe1O /TERMINAL qualifierareasfollows: | ` OToseethe statisticsforeachroutineastheyareproducedJ(duringthe compilation,specifytheterminal qualifierasfollows: $*BLISS/TERMINAL=STATISTICS%ALPHA ` KTosuppresserrormessagesandobtain statistics,usethe following: c$5c$BLISS/TERMINAL=(NOERRORS,STATISTICS)%ALPHA{BQO1.3.8.1CSyntax8O) /TERMINAL qualifiersyntaxisasfollows:mCOterminal qualifierK /TERMINAL=  nb(terminal-value, ... )bterminal-value \ oOterminal-value K 8 K, < K :ERRORS> STATISTICS|!NOERRORS>|! NOSTATISTICS > 9 >, = > ;O1.3.8.2CDefaultsNO)Intheabsenceofanexplicitchoiceofterminal-value,the7O followingvaluesareassumedbydefault:PA&ERRORS( NOSTATISTICSxMOErrorsarereportedontheterminalduringthe compilation,+Obut statisticsare suppressed.O1.3.8.3C SemanticsCO)The /TERMINAL qualifier indicatesthatoneormoreIOterminal-valuesfollow.*Theterminal-valueshavethefol-Olowing meanings:   OOTerminal-Value3Meaning OObERRORS:3bListeacherrorontheterminalasitis,3 encounteredinthe compilation.O)NOERRORS33)Donotlisterrorsonthe terminal.O STATISTICS73Listthenameandsizeofeachroutine53ontheterminalaftereachroutineis3> compiled.O NOSTATISTICS43Donotlistroutinenamesandsizes. Oq`G8O1.3.9B QualifierNamesVersusSwitchNamesOO4Some directionscanbegiventothecompilereitherbycom-NOmandline qualifiersorbyswitchsettings containedintheJOmodulebeing compiled.*Insomecases,the qualifiernameFO=isthesameastheswitchname(moduleswitchesandLOSWITCHESdeclarations),whileinothercasesitissimilarNObutnot identical.(Thenamesofthe corresponding qualifiers3OGandswitchitemsaregiveninTableiGTable1-1.*i a?4O1.3.10C QualifiersandDefaultSettingsNO Qualifiersgiveninthecommandlinealterthedefaultset-IO_tingsassumedfor module-head switches.*AswitchsettingLOgiveninthemodulehead overridesthe correspondingqual-OOifiergiveninthe command-line;anyswitchsettinggiveninJOiaSWITCHES-declaration overridesthesettinggivenintheOmodulehead.B _IOSupposeyouare compilingtwomodules.*ThefirstmoduleGO ALPHA.B32hasamoduleswitchCODE.ThesecondmoduleIOiBETA.B32hasno switches.*TheBLISScommandlineisasOfollows: OF$"F BLISS/NOCODE% ALPHA,BETA+ JOThe qualifier/NOCODEchangestheinitialdefaultsettingAOfrom/CODEto/NOCODE.Whenthemodule ALPHA.B32IO5is compiled,codeisproducedbecause ALPHA.B32hastheJO module-headswitchCODE,which overridesthedefaultset-IOting.+WhenthemoduleBETA.B32is compiled,nocodeisQO>producedbecauseittakesitssettingofthatswitchfromtheIOinitialdefaultsetting establishedinthecommandline. v@O1.3.11CPositiveandNegativeFormsof QualifiersPO4Ingeneral,twoformsofa qualifierareallowed:*apositiveMOformandanegativeform.'Forexample,/CODE(thepositiveJOform)directsthecompilertogeneratecode,and/NOCODEKO=(thenegativeform)directsthecompilertosuppresscodeOO generation.' Generally,positiveandnegativeformsofaqual-MOifieraremutually exclusive;however, exceptionscanoccur,0OGsuchasinthe followingexample: O$- BLISS/LIST%ALPHA,BETA/NOLIST,GAMMANDOThe qualifier/LISTcreates ALPHA.LISand GAMMA.LIS,JOwhereasthe/NOLIST qualifierpreventsthecreationofa'O5listingfilefor BETA.B32. AO1.3.12C Abbreviationsof QualifierandValueNamesIO4Command qualifiernamesandvaluenamescanbeabbrevi-KOated.)Avalid abbreviationconsistsoftheminimumnumberIOof charactersrequiredtoidentifyagivencommandkey-HO=wordwithout ambiguity.*AlistoftheBLISS-32command3O abbreviationsandvaluesisgiveninZAppendixA.*ZYOz-W@ 'O2.2BOutputListingMOUTheoutputlistingproducedasaresultofaBLISScompi-MOlationconsistsofsource listings,whichincludeanyerrorEO messages,object listings,anda compilationsummary. iIOWhenthecompiler completesthe processingofaroutineRO declaration,itproducesthesourceandobjectlistingforthatIO5 declarationandany nonroutine declarationsthatprecededWOit.(Inthisway,theoutputlistingisdividedintoasequenceofO segments.'See`Figure2-1.*`O; QOBoththesourceandobjectpartsofaroutinesegmentcanbeOO suppressedandtheformatoftheobjectpartcanbechangedQO<by includingswitchesinthemoduleor qualifiersinthecom-NOmandline.,Intheabsenceofanyexplicit instruction,bothTOsourceandobjectpartsare produced.'IftheobjectpartoftheNOEprogramis produced,anobjectsummaryisgiven.(TheobjectEOsummarycontainsaPSECTsummaryand,ifthecompi-GOlationincludedanyLIBRARY declarations,asummaryofIOOlibraryusage.)The compilationsummarycontainsthesameHO informationasgiveninthe compilationsummaryattheO terminal. WIOThecompleteoutputlistingforthemoduleTESTFACToc-,Ocupiesseveralpages(refertoSection 2.2.3.1).TheroutineIO5segmentfortheroutineIFACTcontainsthemodulehead-LOing,theOWN declaration,andtheroutine declarationsforPOIFACT.The followingsectionsdiscusseachpartoftheoutputO>listing.*?8  O2.2.1BListingHeaderUO4Listingheadersconsistoftwolines;eachlineconsistsofthreeTOfields separatedbyatleastonespace.(ThefirstfieldcontainsNO informationinprint positions1through15;thesecondex-NO=tendsfrom17through63;thelastextendsfrom65throughPO132.*Thecontentsofeachfieldareleft-justifiedwithintheOfield.Figure2-24 illustratesthelistingheaderformat.*O\! 2HOThenameandidentfieldscontainthesame informationLOasthat containedintheobjectfilemoduleheaders.,SomeQO< processorsmustgeneratethefirstpageheaderbeforethisin-PO formationis available.)Thus,thefirstpageofamodulemayLObeblank; subsequentpagesmustincludethe informationifOOEitappearsintheobjectmodule.(IfthemodulenameexceedsRO15 characters,thetitlefieldbegins8columnsfurthertotheOright.! kQOThetitleandsubtitlefieldscontain user-supplied information;MOtheyidentifythepurposeofthemoduleandroutine.*User-RO5definedtitleandsubtitleentriesthataretoolongarerightMO truncatedatcolumn63.(Ifthelanguage processormakesnoTO provisionforyoutosupplythis information,thefieldsareig-MO>noredandthe processorandsourceidentificationsstartinOOcolumn17.*Ifthelanguage processorallowsonlyonesetofSOtitle information,thesubtitlefieldisusedforstandardiden-QOH tificationoftheportionofthelisting represented.)WhenyouVOupdatethetitleorsubtitle informationinthefirstlineoftheSOsourcepage,thelistingforthatpagewillincludetheupdatedOR information.g =OOThe processoridentificationfieldcontainsthedateandtimeFOof compilation(intheform dy-mon-year hh:mm:ss)andNO5thefullproductnameofthelanguage processor.*ThisfieldKOincludesthereleaseversionnumber,withtheeditnumberOOappendedtoit.)ThepagelistingnumberappearsasthelastMO>entryinthisfield.+Thisnumber incrementsby1foreachROlistingpageproducedfroma concatenatedsourcefile,thatis,!Ointhelistingfile.! wPOThesourceidentificationfieldcontainsthedateandtimeofROcreationorlast modificationofthesourcefilebeingreadatUO5thestartofthispage.(Italsocontainsthe resultantfilenameUOofthissourcefile.*Itisafully qualifiedname, includingthePOactualversionnumber.)Ifthenameistoolong,theleftmostPO>fieldisright truncated.'ThesourcefilepagenumberappearsSOlast,in parentheses,andis1greaterthanthenumberofpage8Omarks(formfeeds)readfromthesource.  O2.2.2BSourceListingMO4Thesourcepartoftheoutputlisting reproducestheinputJOtotheBLISS compilationwith annotationsuppliedbytheIO compiler.,Thecompiler annotationincludesa16-or24-QO= characterprefacestringthatprecedeseachlineofinput,andMOerrormessagelinesthatfolloweachlineonwhichoneor&Omoreerrorsare detected. NOOThebasic differenceinprefacestringlengthisduetotheOOfactthatthe 24-characterprefacecontainstheeditor'slineLO5sequencenumbers,whereasthe 16-characterstringdoesnot.zsJOThe 16-characterprefacestringhasthe followinggeneralOform: a;byznnnnbnnbbbbbz{JOThe 24-characterprefacestringhasthe followinggeneralOform:" a;xxxxxbbyznnnnbnnbbbbbbb NOTable2-1C describesprefacestring componentsofeachstring.IO (Asterisksdenotethe componentsandcolumnsofthe24-&O5 characterprefacestring.)*OFb?(gPOForexample,considerthe followinglineofthesourceinput: RESULT%=&1;POIftheabove expressionwerethe fourteenthlineofthecom-TO pilation,forexample,theoutputlistingforthatlinewouldbeO5asfollows:# ;p0014K2RESULT%=%1;! POThelinenumber0014isthelineassignedbytheBLISScom-OOpiler,andthe begin-endblockdepthnumber2 indicatesthatSO5thelineofcodeoccursinthesecondblocklevel.*Ifthein-POputlinehadaneditorlinesequencenumber2300,theoutput:Olistingforthelinewouldbeasfollows: k;023000014K2kRESULT%=&1;zKOIftheinputlinecomesfromaREQUIREfile,theoutput1OlistingincludesanR,asfollows:$ a;KR0014K2RESULT%=%1;zQOIftheinputlineispartofamacro declaration,theoutput1OlistingincludesanM,asfollows:& a;%M%0014K2RESULT%=%1;cLOTheyitemintheprefacestringcolumn3(9fora24-PO characterpreface)isusefulfor detectinglexicalerrors.)ForOO5example,ifyouforgetto terminateamacro declaration,allMOthe followinglinesintheprogramarethenassumedtobePOpartofthatmacro declarationandtheerrorisnotdetectedPO>untiltheendoftheprogram.)Youcanfindthe beginningofJOthe unterminatedmacro,however,byfindingthepointatAOwhichtheMcodefirstappearsintheyfield. sPOThe followingisanexampleofthesourcelisting(thefirstCOsegmentofthemodule TESTFACT)thatusesthe24-%O5 characterprefacestring: ..&(header) I. ;001000001K0/module%testfact%(main%=& mainprog) ;002000002K0begin !;%WARN#048!1KL1:0002, i;%Syntax&error&in&module%head ;003000003K1 ;004000004K1 own A;005000005K1 Aa, ;006000006K1 b; ;007000007 ;008000008K1 routine%ifact%(n)&= a;009000009K2abegin ;010000010K2local ;011000011K2result; 9;012000012K29result%=%1; ;013000013K2&incr&i%from%2&to&.n&do ;014000014K2result&=% .reult*.i; ;%WARN#000&..................1KL1:0014% X;% Undeclared%name:JREULT ;015000015K2.result ;016000016K1end; 0. x. . amIO Followingthreeheadinglines,thesourceofthemoduleGOTESTFACTis reproduced.)The 24-characterprefacestringOO5beginswitha semicolon( ; ).+Columns7and8arealwaysKOblank,andcolumns9and10areblankbecausethelexi-ROcal processinglevelisnormalandthematerialisnotfromaJO>REQUIREfile.(Linenumbers generatedbythecompileroc-IOcupycolumns11through14.+Column15isalwaysblank,LOandincolumns16and17the begin-endblocklevelcountOHappears. ROTwoerrormessagesarereportedaspartofthesourcelisting.OSection2.5: discusseserrormessagesandtheirmeaning.*O|?E` O2.2.3BObjectListingPO4Theobjectpartofthelistinghasfourpossiblefields:-as-HOsemblerinput, assembleroutput,binary,and commentary.OOThepartsoftheobjectlistingthatareproduceddependonMO=thechoiceofmachine-code-list code-values specifiedintheOOcommandline.)Eachpartoftheobjectlistinghas associatedNOwithitamachine-code-list code-valuethatallowsittobe*OGeitherprintedor suppressed.! aJOHowever,although32 differentformsoflistingarethe-MO oretically possible,inpracticeonlyafew combinationsofLO5 code-valuesare meaningful.&Thebasic distinctionamongob-QOjectlistingsiswhetherthelisting replicates assemblerinputLOor assembleroutput.'Ifthe ASSEMBLER code-valueisgiven,UO>theobjectpartis formattedsothatitcanbereadbytheas-EOsembler.,Ifthe NOASSEMBLER code-valueisgiven,theGOobjectpartis formattedtoresemble assembleroutput.kIOThe following combinationsofthemachine-code-listcode-"Ovaluesare acceptable: QcO ASSEMBLER 1 8 14 < 1 :SYMBOLICK NOSYMBOLIC  9 4 =  ; COMMENTARY 2 8 24 < 2 :BINARYKNOBINARY ) 9 ) 4 = )  ; Oh 8 O < O8 : UNIQUE_NAMESNOUNIQUE_NAMES h 9  = 8 ;8+O' NOASSEMBLERSYMBOLIC COMMENTARY  8 @ <  : BINARYXNOBINARY  9 @ =  ;ONOUNIQUE_NAMESMHOThe commentaryfieldrequireslittlespaceandprovidesLOuseful informationsothatyouhavenorealneedforthe"O4 NOCOMMENTARY qualifier.! NOThequestionofwhethertohavethebinaryfieldappearonPOthelistingisaquestionofpersonal preference.*However,itPO5mayattimesbeusefulfor debugging purposes.(IfthebinaryROfieldisomitted,thelistingislikelytobemore compressed,ROsince additionaloperandscanthenbeplacedonthesameline.YIOThecompilerproducesthe following informationforeachOfield:! : OOFieldKContents OMOb ASSEMBLERfield Instructionsin assemblerform,forexample:MOVLp#1,R0HOfSYMBOLICfield Instructionsin assemblerformbutusing1Ksymbolicsourcenames,forexample:>MOVLp #1,RESULTOBINARYfield8K Hexadecimal equivalentof instructionsand9Kdatatoenableeasier debugging.%Thehex-7KSadecimal instructionsappearinthesame9KformatasthatproducedbytheVAXMACRO;K assemblerasfaras possible.$The rightmostBK;numericfieldinthebinarylistingistheloca-@Ktioncounter,relativetothestarting routine'snot repeated.m)C&O2.2.4BSourcePartOptionsLOThe followingsectionscontainmoreoutputlistingstoil-TO_lustrate differentoptionsforthesourcepartofthelistfile.HOTo illustratethese differentforms,thesampleprogram5OTESTFACThastobemademorecomplex./! KOSupposethetestingofthesameprogramTESTFACTiscom-OOplete,sourcecodeerrors containedinthe precedingexamplesLOihavebeen corrected,andthedataontherelativeperfor-MOmanceofthetwo factorialroutineshasbeen obtained.*TheOOnextstepisthe productionofanewmoduleTESTthatusesNOrthe factorialroutinetotake combinations, accordingtotheKO followingformulafor obtainingthenumberof combinations/O#ofmthingstakennatatime: [ 0 [h @ m On  1 h A &= m H! ~_ ~O( Om O 4On dO)! On O!DKOFirst,entertheroutine declarationsforIFACTandRFACTDOintoseparateREQUIREfiles,namedIFACTandRFACT,KO4 respectively.)ThemoduleTESTcanthenuseeitherroutine@Oby includingthe appropriateREQUIRE declaration.@ KJONext,writeamacro (COMBN.R32)for obtainingthecombi-Onations: aMACROCOMBINATIONS(N,M)%=(IF%N%LSS%M9THEN&ERROR()ELSE& COMB(N,M))%%, COMB(M,N)&=*2FACT(N)/(FACT(N-M)_*FACT(M))&%; FOThen, precompilethemacro declarationintoaLIBRARYOOfileasfollows(includeaLIBRARY declarationinthemoduleO5TEST): t$ BLISS/LIBRARY%COMBN`66OFinally,includesometest combinations. POThe followingsections illustratethe differentoutputlistingsMOobtainedforthatmodulebyvaryingthecommand qualifiers.+O2.2.4.1CDefaultSourceListingLO)The followingcommandline generatedtheoutputlistinginOExample2-3!CforthemoduleTEST: t$!BLISS/LIST/NOCODE%TEST*ODO@ NOObservethat,althoughthecontentsoftheREQUIREfileareNOnotprinted,thelineswithinthefilearenumberedbytheLO5 compiler.+Theoutputlistingshowsthatlines0011through.O0016areusedforthispurpose.nxDDO2.2.4.2CListingwithLIBRARYandREQUIRE InformationLO)The followingcommandline generatedtheoutputlistinginOExample2-4,5Wwhichcontains informationfromLIBRARYOandREQUIREfiles: t_$?_/BLISS/NOCODE/LIST/SOURCE_LIST:(LIBRARY,REQUIRE)%TEST*ODO5 NOTheLIBRARYfileis identified followingline0009,andtheROfirstuseofanamefromthatlibraryisnoted followinglineMO50020.*ThecontentsoftheREQUIREfilearegiveninlinesO0011through0016.ax73O2.2.4.3CListingwithMacro ExpansionsLO)The followingcommandline generatedtheoutputlistinginOExample2-5;Hto illustratemacro expansions,whichfollow!Olines0020and0021: t_$;_+BLISS/NOCODE/LIST/SOURCE_LIST:EXPAND_MACROS%TEST*ODO fQOObservethat expansionsarelistedintheorderinwhichtheyNOoccur.*The innermost expansionisprintedfirst,followedbyOO5theouter expansion,whichincludestheexpandedformoftheOOinnermacro.( Therefore,thelastlineofthemacro expansion)Oisthefullyexpandedform.Wx-0O2.2.4.4CListingwithMacroTracingKO)The followingcommandlineproducedtheoutputlistinginOExample2-6,5[whichcontainsmacrotracingandmacro!O expansion information: t_$:_*BLISS/NOCODE/LIST/SOURCE_LIST:TRACE_MACROS&TEST*ODOJOThemacrotracegives informationabout parameterbinding8Oinadditiontothe expansion information.U!$#& 2O2.5BErrorMessagesLOUTheBLISScompilerdetectstwotypesoferrors:+fatalandOOwarning.(Afatalerrorisonethatthecompilercannothan-HOdlewithout potentiallyskippingsomesource.,AwarningOO^errorisoneforwhichthecompilerhasan effectiverecov-QOery techniquethatpermitsittogeneratean executableobjectIOmodule.,ThewarningandfatalerrormessagesarelistedOh separatelyin5hAppendixE..hThewarningsarelistedbynum-MOber,andeachwarningincludesan explanationoftheerror,Oanda recommendeduseraction.*5+O3gQOIfafatalerroris detected,thecompiler continuestocheckMOthesyntaxofthe remainderoftheprogram;any subsequentPOierrorscanbe detected,butneitheranobjectmodulenortheNOobjectpartoftheoutputlistingisproduced followingthe+O detectionofthefatalerror. HOAwarningerrormessagebeginswiththeindentificationEOWARN.Forexample,theroutine declarationforIFACT5O5includesacodingmistake,asfollows: RESULT%=& .REULT*.I;Z b0NOTheBLISScompilerdetectsthiserrorandreportsthewarn-MOingmessageshowninthe followingsegmentfromtheoutputO5listing: ;p0014K2RESULT&=% .REULT*.I;+ ;%WARN#000 ..........1JL1:0014% I;% Undeclared%name:JREULTNMOThemessageisnotfatal,becausethecompilercandeclareCOthe undeclarednameREULTasEXTERNALandcontinueKO5 processingwithoutomittingthe compilationofanysource.!gHOConsidera differentkindofcodingerror,asfollows: ROUTINE%RFACT%(N%=L MOTheBLISScompilerdetectsthiserrorandreportsthemes-OOsagegiveninthe followingsegmentfromtheoutputlisting: a;p0013K2$aINCR%I&FROM%2%TO%.NDO6 ;%WARN#000.....................1pL1:0013# ;% Undeclared%name:JNDO 9;p0014K29RESULT%=% .REULT*.I;* ;%WARN#066 .........1KL1:0014I ;%Two& consecutive&operands&with%no% intervening% operator.) ;%A%"DO"&has%been&inserted2 Y;%WARN#000.................1KL1:0014% ;% Undeclared%name:JREULT ;p0015K2.RESULT 0;p0016K1 0end x;p0017K1+ ;p0018K1ROUTINE&RFACT&(n&=< ;%ERR&#0712......3.........1KL1:0018KL3:0016Z P;%Missing%comma%or%closing&bracket%in%formal& parameter%list&for%RFACT0 ;%The& incorrect% delimiter%was&"=" aHOOmittingtheblankbetweenthenameNandthekeywordLODOcausedanotherwarning,whileomittingthecloseparen-TO5thesis,thatis(N=),causedonefatalerror.'WiththeabsenceMOofablank seperator,thecompilerseesNDOandRESULTasJOtwo consecutiveoperandswithno interveningoperatorandNO>insertsaDO.However,whenthecompilerfailstofindtheQOclose parenthesis,itcannotmake syntacticsenseoftheline;QO therefore,itreportsafatalerrormessageand suppressesthe+OH productionofanobjectfile.WIONotethat,althoughthecompiler continuestochecktheKOsyntaxofthe remainderofthemodule,sometextmaybeLO5left unscanned.*Also,thescanprocesscan sometimescauseMOgenuineerrorstobemissedandspuriouserrorstobere-MOported.)AmodulecannotbeassumedtobefullycheckedbyFO>thecompileruntilallerrormessagesare eliminated.C! ROTheBLISScompilersuppliesagreatdealof informationinitsLOerror messages.)Eacherrormessageoccupiestwolines;theVO5firstline classifiesand pinpointstheerror,andthesecondlinePOgivesashort descriptionoftheerror.)Forexample,considerDOthe followingerrormessagefromtheaboveexample: k;p0013K2$kINCR%I&FROM%2%TO%.NDO6 ;%WARN#000.....................1pL1:0013# ;% Undeclared%name:JNDOpFIOThefirsterrormessageline indicatesawarning(WARN)KOandprovidestheerrormessagenumber000,followedbyaSO5pointertotheplaceintheinputlineatwhichtheerrorwasOOdetectedandaline indicator.*Thesecondline describestheOerror.! aUOThefirstlineofanerrormessagelinesupwiththeinputcol-JOumnatwhichthecompilerdetectedtheerror.*UndertheOO5prefacefortheinputline,theerrormessagehasaprefaceQOpartthatgivesthetypeoferror(warningorfatal)andthe$Oerrornumber.+(RefertoAppendixE.) UnderthetextpartNO>oftheinputline,theerrormessagecanhaveuptothreeKOpointersandthreeline indicators.+Thepointersarenum-NOberedfrom1to3andthemeaning associatedwitheachof=OHthepointersisgiveninthe followinglist:*O + OOPointerbMeaning O Ob1Ebb Indicatesthepointintheinputtextatwhichtheberrorwasdetected O)2Eb) Indicatesthe beginningofthecurrentcontrolscope O3Gb IndicatestheendofthelastcontrolscopethatwasIb successfullyclosedpriortothe detectionoftheerror O .!MOTheline indicatorsarecloselyrelatedtothepointersinNOmeaning,butwhereasthepointersindicateapositionwithinSO5aline,theline indicatorsindicatealinewithintheprogram,Oasfollows:" x OOLine IndicatorKMeaning OObL1:nnnn?Kb Indicatesthelinennnnintheinputatwhich#KtheerrorwasdetectedO)L2:nnnn=K) Indicatesthelinennnnatwhichthecurrent KwcontrolscopebeginsOL3:nnnn:K Indicatesthelinennnnatwhichthelast3K>controlscopewas successfullyclosed OYs#! IOOLine indicatorsareusuallynottoo informativewhentheer-MOrorisconfinedwithinaprogramline,asintheexamplesNO5givenabove,buttheyareveryusefulforerrorsthatspanSOseverallines.'Forexample,considerthefullsourcelistingfor*OthemoduleTESTFACTgiveninExample2-8.Thisver-PO>sionofTESTFACTincludesthecodingerror illustratedintheLOabove examples.*Theerrormessageattheendofthepro-NOgram identifieswithline indicatorsthepointatwhichtheNOHerrorwasdetected(line0032),thelineatwhichthecon-TOtrolscopebegan(line0013),andthelineatwhichthecontrol+Oscopewasclosed(line0032).*#O%$NOOWiththe informationprovidedbytheline indicatorsforer-ROrormessage012,thesourceoftheerroris identifiedasthe7O5typingerrorinline0013.'Forexample:})(,A6 O3.3B DebuggingMOUTheVMSDebuggerisusedtodebugortestBLISS programs.IOThe following discussionofBLISS debuggingassumesthatIOyouarefamiliarwithusingthedebuggerforVAXMACRO+O^ programs,as describedinthe ^ V%^ AX/VMSDebugger ReferenceO ManualCo.+Thissection describesBLISS debugging facilitiesRO primarilyintermsofhowsuchusagediffersfromthatofthe Oh MACRO-level debugger.7NMOThedebuggerprovidesanumberoffeatures specificallyde-HOsignedformore convenient debuggingofBLISS programs.9NLOIn combination,thesefeaturesprovidea high-level,BLISS-GOlikefacilityfor examiningand modifyingprogramdata3O5 segments,bothscalarand structured.\:! 2IOManyofthe proceduralaspectsofBLISS debugging,how-NOever,suchassetting breakpointsandprogram stepping,mustRO5 necessarilybehandledat object-codelevel;thatis,withref-NOerencetotheassemblylisting,asin MACRO-level debugging.QOThisisa consequenceoftworelatedcharacteristicsofBLISS:LO>Itisnota statementlanguage(asisFORTRAN,forexam-IOple);andsymbolicnamesfor procedure addressesdonotPOexistinBLISSbelowtheroutinelevel.)Ingeneral,thesameMOHprocedure-related debugging facilitiesareprovidedforBLISSOOusageasforMACROusage,andthese facilitiesare exercised)Oinverymuchthesameway.,; */O3.3.1B InitializedModesandTypesMO4Whenyouinitiatea debuggingsessionforaBLISSprogram,=Othedebuggerprovidesthe informationmessage:I%DEBUG-I-INITIAL,%language%is%BLISS,%module&set%to%'ABC'<zFOABC representsyourmainmodulename.+ForBLISS,theFOinitial entry/displaymodesaresettothe following: a SYMBOLIC,% HEXADECIMALF=! GOYoucanchangethesemodesettingswiththeSETMODELOcommandandcanrestorethemtotheinitialsettingswith@O5theCANCELMODEorSETLANGUAGEBLISS commands.IOThe initializedmodesarethesameasthoseforMACRO.>zUOTheinitialsettingforthedefaulttypeisasfollows(referto%OtheSETTYPEcommandinVSection 3.3.11.):aLONG&INTEGER*>V?W?--OTheinitialscopeisPCscope.@! samemeaning,andinothercasesthe charactersorkey-KOwordsareanadditiontothose recognizedinMACROmode.SOThese differencesarenoted.'InallcasestheoperatorusageisMOH BLISS-likeinthatthemeaningsassignedtospecialcharac-KOtersandsymbolsindebuggercommandsare consistentwith%OBLISSoperator semantics.:C LONotethatthe significanceofspecial charactersasdelim-MOitersindebuggercommandsisthesameforbothBLISSandFO5MACRO debugging.,Alsoinordertomaintainareason-)Oablecorrespondencewiththe z V% AX/VMSDebugger ReferenceO ManualGo,theinformal categories ``arithmetic expression''andLO> ``address expression''areusedbelowratherthanthemore5OformalBLISSlanguage-syntax categories.hD `>7O3.3.3B Operatorsin Arithmetic ExpressionsO4Table3-1A4listsspecial charactersandkeywordsymbolsusedNOin arithmetic expressions.(The semantics, priority,andrela-TOtionshipofthe operatorslistedinthetableareasdefinedinKO=BLISS.Thatis,thedebugger evaluates expressionsaccord-NOingtothelanguagecontext.)In particular,the intermediateROandfinalresultsofan expression evaluationare calculatedas%OGlongword(32-bit)values.*DOb?GENOThe following restrictions,relativetofullBLISS expression?Osyntax,applyto expressionsindebug commands:F | ` ORoutineorfunctioncallsareinvalidaspartofanexpres-(sion. ` JThe assignmentoperator( = )isinvalidwithinanex-M pression.'(Theequalsign charactercanbeusedonlyasa9Y separatorinDEPOSITandDEFINE commands.) ` GTheBLISS relational operators(forexample,EQL,NEQ,)1andLSS)arenot supported. ` <BLISS executable functionsarenot supported. `/ 4/Control expressionsarenot supported. ` , Declarationsarenot supported.H)W>O3.3.4BSpecial CharactersinAddress ExpressionsOTable3-2Elistsspecial charactersthatcanbeusedtorepre-LO_sent locationsinadebugger expression.+(Later subsectionsKOdescribe BLISS-stylesyntax extensionsfor structurerefer-)Oencesandfield references.)*HOb?IBJ (5O3.3.4.1CCurrentLocationSymbol( . )QOUsedeitherbyitselforasanoperandinan expression,theROTcurrentlocationsymbol( . ) representsthelocationmostre-GOcentlyreferredtoinanEXAMINE,DEPOSIT,SETBREAK,AOSETTRACE,orSETWATCHcommand.,Thevaluerep-JO^resentedbythecurrentlocationsymbolremains unchangedNOuntiloneoftheabove mentionedcommandsisusedtorefer Otoanother location. K #GOThesymbolisassigned differentmeanings dependingonNOthecontextinwhichitoccurs.,InadditiontoitsmeaningPOiascurrent-locationsymbol,itisthedebugger ``contents''orMOindirectoperator(as describedbelow)and, analogously,thePOBLISSfetchoperatorin expressions.(Thus,thesequence``..''ROritself constitutesavalid expression,meaning ``contentsoftheNOcurrent location''.+Asanexample,supposethat,atagivenKO#stepinthe executionofaprogram,the data-segmentPTRHO|containstheaddressofalongwordvectornamedINBUF,POandthatthelocationlastreferredtobyadebuggercommandPO-isPTR.Atthispointthe followingcommandwilldisplaytheLOaddressofINBUF(thatis,thecontentsoflocationPTR): EXAMINE%.*_ /&Examine%current%location%/LzMOThe followingcommandwilldisplaythecontentsoflocationOINBUF:aEXAMINE%..4_a/&Examine%current%location%indirect%/<MJO Subsequently(sincethelastcommandalteredthecurrent-IOlocationvaluetolocationINBUF),the followingcommand>O5willdisplaythecontentsoflocationINBUF+4:AEXAMINE%.+4/&Examine%current%location%plus&4%/ NNNOIn contrast,notethatthe expression.(+4)wouldbeinter-POpreted(asinBLISS)as ``contentsoflocation00004''ratherDO5thanas ``currentlocationvalueplusfourbytes''.eO ;NOThepreviouslocationsymbol( ^ ) recognizedinMACROde-KObugging,isinvalidwhen 'languageisBLISS'.TheaddressPO5 expression.-1or.-4canbeused,forexample,to representROthelocationofthe ``previous''byteor longword, respectively.6P  :O3.3.4.2CLastValue DisplayedSymbol( \ )OO)Youcanusethe backslash character( \ )to representtheKOvaluemostrecently displayed.'Thevalueremains unchanged8Ountilthedebuggerdisplaysanewvalue.-QRGOForexample(againassumingthedatasegmentsPTRand(OINBUF previously described):OaDBG>a EXAMINE/DEC%PTR!OLISTER\LSTR\PTR:&1024)ODBG> EXAMINE/ASCII%\#O9LISTER\INBUF<0,32>:&ABCDR! WJOThefirstEXAMINEcommanddisplaysthecontentsofloca-OOtionPTRasthevalue1024.*ThedisplayshowsthescopeofLO5thesymbolPTRtobemoduleLISTERandroutineLSTR.TheIOsecondEXAMINEcommanddisplaysthecontentsoflocationRO1024,thatis,thelastvalue displayed.)ThedisplayshowstheKO>location symbolizedasINBUFwithscopeLISTER,andshows0Othecontentsof INBUF<0,32>tobe `"ABCD p", interpretedasOanASCIIstring.-S.O3.3.4.3CContentsOperator( . )QO)Thedot character( . )usedasanoperatoristhedebuggerQO ``contentsof''orindirect operator.+Itrequeststhatthede-OObuggerevaluatethe expression followingitandthenusetheLO3contentsofthelocation addressedbythe expressionvalueLOratherthanusethe expressionvalueitself.,(ThecontentsLOoperatorinMACRO debuggingmodeistheatsign( @ ).)TswPOExamplesoftheuseofthedotasboththecurrentlocationIOsymbolandthecontents operator, dependingonitscon-NO5text,aregiveninthetwo preceding subsections.+AfurtherHOexample,basedonthesame assumptions,isasfollows:ODBG> EXAMINE/ASCII%.PTROZ LISTER\INBUF:&ABCDU NHOObservethatthisoneEXAMINEcommandis equivalenttoDOthesequenceEXAMINEPTRfollowedbyeitherEXAMINEOO5\orEXAMINE..'(intermsofthefinallocation displayed).V zAOOther examples,modifiedfromthosegiveninthe W V AX/VMS%O Debugger ReferenceManual-,follow:OaDBG>#aDEPOSIT%MASK&=%.MASK^4WzJOThiscommandshiftsthecurrentcontentsofthelocation4OMASKfourbit positionstotheleft:OaDBG>'aEXAMINE%.R7%:% .R7+%DEC20XMOThiscommanddisplaysthecurrentcontentsofthe21bytesNO beginningwiththelocation addressedbygeneralregister7.Y+O3.3.4.4CRangeOperator( : )UO)Acolon( : )isusedtoseparateelementsinanaddressrangeHOinanEXAMINEcommand(seetheprevious example),just#OasinMACRO debugging.UZ +MOUnlikeitsMACROusage,however,thecolonisnotusedinKOtheEVALUATEcommandtoexpressa bit-fieldspecification.NO5(InBLISSuse,thestandardBLISSfield-selectornotationis+Ousedinstead,as describedinPSection3.3.5.)*ZPP?c[beGOSeveralexamplesofrange-operatorusage,modifiedfromOthosegiveninthe  V- AX/VMSDebugger ReferenceManual l,O5follow:ODBG>,EXAMINE/ASCII:1&INBUF&:%INBUF+6ODBG>(EXAMINE%.&:%.%+& %DEC200OIDBG>-IEXAMINE/INSTRUCTION%.PC%:%.PC+10\[EOInthefirstcommandexample, theaddress expressionGOINBUFis interpretedasa nonstructureddata referenceLO5becausenoaccessactualsare specified,althoughINBUFisMOassumedtonamea structured(vector)datasegmentfortheJOpurposesofthis discussion.+ThiscommandsimplydisplaysQO>thecontentsofthesequenceof locations requestedinstorageMOunits determinedbythecurrentlengthtype,withoutrefer-POencetodeclared structure.+Inthiscase,sincethe specifiedOOHtypeisASCII:1,thefirstsevenbytes beginningatlocation-OINBUFare displayedasfollows:%LISTER\INBUF<0,8>:&A!mLISTER\INBUF+1<0,8>:%B . . E.!LISTER\INBUF+6<0,8>:%G]! ROIfthetypewereASCII:4,thefirsttwo longwords beginningat4OINBUFwouldbe displayed,asfollows:#aLISTER\INBUF<0,32>:%ABCD%LISTER\INBUF+4<0,32>:&EFGH^NDOTheuseof structure referencesinEXAMINEcommandsHOandtheformatof structureddisplaysare describedinO5Section3.3.6.*^O?n_ {1O3.3.4.5CDefaultNextLocationValueQO)ThedefaultnextlocationvalueistheaddressimpliedbytheIO ``shorthand''formoftheEXAMINEcommand,thatis,theIOEXAMINEverb(andpossiblyatypespecification)immedi-OO3atelyfollowedbyacarriagereturn.)ThenextlocationvalueVOisalwaystheaddressofthebyte followingthelastbyteoftheJOpreviousdisplayitem.+Forexample,supposethe followingDO<EXAMINEcommandsaregiven,withthesecondcommand"Oin ``shorthand''form:ODBG>,EXAMINE/ASCII:1&INBUF&:%INBUF+6ObDBG>bEXAMINE/ASCII:1}`!S7OThe followingdisplaywouldbe produced:OLISTER\INBUF+7:%HazOOIftypeASCII:2hadbeen specified,thedisplaywouldbeasOfollows:OaLISTER\>INBUF+8:&IJbzOOIftypeASCII:4hadbeen specified,thedisplaywouldbeasOfollows: taLISTER\INBUF+0A:%KLMNcg"O3.3.5BField ReferencesJO4ABLISSfield reference(thatis,an expressionfollowedSObyafield selector)isusedtospecifyafieldofstoragein>OEXAMINE, EVALUATE,andDEPOSIT commands.*AsinFO=BLISS,theformofafield referenceisasfollows:$addressdzJOwhereextis0forunsigned extensionand1forsignedO extension;or aaddresse uNOwhereunsigned extensionisassumedbydefault.'ThepositionNOandsizevaluesare interpretedasdecimal integers,regard-OO5lessofcurrentradixmode,unlessaradixoperatorisusedO(forexample,%X ' F .'9^).Thesizevaluemustnotexceed32inOanycase.rf HHOIntheEXAMINEcommand,afieldselectorhasthesameLOmeaningasintheBLISSfetchcontext,because indirectionPO5(thatis,contentsof)isimplied.'Thatis,theEXAMINEcom-OOmanddisplaysthecontentsofthefieldofstorage specifiedSObypositionandsize,relativetotheaddressgiven.)(ThefieldRO>valueisfirstextendedtoa longword,withsignedorunsignedKO extensionas requested).,Thereisno syntactic restrictionROontherangeofthepositionvalue,exceptthatitmustbea+OHpositiveinteger.'Forexample:ODBG>  EXAMINE/ASCII%INBUF+8%OLISTER\INBUF+8<0,32>:%IJKLO]DBG>&]EXAMINE/ASCII:1& INBUF<72,8>!OLISTER\INBUF+9<0,8>:%JgyKONotethattheaddress expressionINBUF+8is equivalentto.Othefield reference INBUF<64,32>.h$HOInanEVALUATEcommand,themeaningofafieldselec-POtordependsonwhetheracontentsoperatoris specified(thatQO5is,whether indirectionis requested).(IfthecontentsoperatorPOis specified,afieldselectorhasthesamemeaningandlackQOof restrictiononpositionasintheBLISSfetchcontext.*ForO>example:ODBG>$ EVALUATE/DEC& .INBUF<72,8> O 74Gi ROObservethattheeffectofthisfield reference(withthecon-POtentsoperator specified)isthesameasthatproducedbyanIO5 equivalentEXAMINEcommand:'thedecimalvalue74isthe2OASCIIcodeforthe character``J''.!j LOIf indirectionisnot specifiedinanEVALUATEcommand,aROfiledselectorhasthesamemeaningand restrictionsasintheLO5BLISS nonfetch, nonassignmentcontent.'Thatis,theexpres-Osion addr(p,s)4s calculatesthevalue addr+(p/8),where  p*must%Obeamultipleof8and } s6isignored.*Theeffectofafieldse-WO>lectorinthiscaseissimplythatofanaddressoffset,withtheOpositionvalue O p; interpretedasp/8.(Forexample,assume(asBOabove)thatthesymbolINBUFhasthevalue1024:OtDBG>#t EVALUATE/DEC& INBUF<80,8>O1024kIONotethatthefield reference INBUF<80,8>inthe``non-NOfetch''contextis equivalenttothe expressionINBUF+10(asCO5alsois INBUF<80,16>, INBUF<80,23>,or INBUF<80,32>,Ofor example).l WJOIntheDEPOSITcommand,afieldselectorintheaddressOO expressionontheleftsideoftheequalsignhasthesameHO5meaningandeffectasintheBLISS assignmentcontext.YOThatis,it specifiesafieldofstorage,relativetothegivenad-TOdress,intowhichavalueistobestored.)ThestoredvalueisCO> truncatedif necessarytofitthe receivingfield.Km !TOIfafieldselectorappearsina``data'' (righthand)operandofHOaDEPOSITcommand,ithasthesamemeaningandeffectGO5as describedabovefortheEVALUATEcommand, depending>Ouponwhetheracontentsoperatoris specified.n&O3.3.6B Structure ReferencesIO4A BLISS-style structure referencecanbeusedasade-FObuggeraddress-expressionifthedatasegmentreferredGOtohasastandardBLISS predeclared structure(VECTOR,>O= BITVECTOR,BLOCK,or BLOCKVECTOR).ThedebuggerFO recognizesthe followingformsof structure reference:#o ` +ForVECTOR-structured segments:Usegname[actual_1]segname[field-name] `= .=ForBITVECTOR-structured segments:segname[actual_1]+segname[field-name] ` *ForBLOCK-structured segments:6/,segname[actual_1,actual_2,actual_3,actual_4]segname[field-name] ` 0ForBLOCKVECTOR-structured segments:1'segname[actual_1,actual_2,---,actual_5]&segname[actual_1,field-name]*pqOsegnameLOIsanamedeclaredwiththe appropriatestructure-attribute4Oqor appropriateREFstructure-attribute.rOactual_iNO(Isan expression evaluatedasadecimalinteger representingDOavalid access-actualforthegivendata structure.s O field-nameGO(Isanamedeclaredinasource-programFIELDdeclara-SOtionthat representsavalidfield-definitionforthegivendataO structure.tNJONotethat access-actualvaluesare interpretedindecimalMOunlessaradixoperatorisused, regardlessofthecurrentO5radixmode.u !DOThe followingEXAMINEcommandsprovideasimpleex-MOampleof structure referencesand structureddisplayformat:taDBG>! a EXAMINE/ASCII%INBUF[1] tLISTER\INBUF[1]:%EFGHtDBG>$ EXAMINE/ASCII:16%INBUF[0],t9LISTER\INBUF[0]:%ABCDEFGHIJKLMNOPtDBG>*  EXAMINE/ASCII%INBUF[0]:INBUF[3] tLISTER\INBUF[0]:%ABCD tLISTER\INBUF[1]:%EFGH tYLISTER\INBUF[2]:%IJKL tLISTER\INBUF[3]:%MNOPtDBG>$ EXAMINE%INBUF[1]:INBUF[2]$t0LISTER\INBUF[1]:%48474645$txLISTER\INBUF[2]:%4C4B4A49tDBG> EXAMINE*tLISTER\INBUF+0C<0,32>:%504F4E4D-v! LOInresponsetoa structure reference,thedebuggerignoresNOdefaulttypeanddisplaysdatain accordancewiththeallo-NO5cationunitdeclaredforthe structure.+Forexample,ifyouJOspecifyarangeofdatawithina BLOCKVECTORsegmentinGOanEXAMINEcommand(intermsofcolon-separatedstruc-NO>ture references)andthesegmentisdeclaredwith allocationisignored.'Forexample:tDBG> EVALUATE& .INBUF[2]t 4C4B4A49z! HOInanEVALUATEcommandwithout indirection(nocontentsQOoperator specified),a structure referenceresultsinanevalu-QO5ationoftheaddress correspondingtothe requestedelementorPOcomponent-thatis,theaddressofthebyteinwhichthedataFOitembegins.*(InthecaseofaBLOCKor BLOCKVECTORKO> structure,theaccessactuals representingsizeandexten-MOsionare ignored.))Forasimpleexample,assume(asabove)KOthatthesymbolINBUFnamesalongwordvectorsegmentat"OHdecimallocation1024:tDBG> EVALUATE&INBUFt1024t]DBG> ]EVALUATE&INBUF[3]t1036{WDO(ThisexampleassumesthecurrentradixmodetobeO DECIMAL.)(|FOForasomewhatmorecomplexexample,assumeablock-EO structuredsegmentnamedBLK2beginsatlocation648IO5 (decimal)andis allocatedin longwords.,Further,assumeQOasetofdeclaredfieldnamesF1,F2,F3,andF4.+Also,for3O simplicityassumeDECIMALradixmode:tkDBG> kEVALUATE&BLK2 t648tDBG> EVALUATE&F4tB2,%4,%12,&0tDBG> EVALUATE&BLK2[F4] t656[}11OThisexample illustratestwofacts:I~!  ` AThattheEVALUATEcommand evaluatesafieldnameG(by reportingthe access-actualvaluesdefinedforthatGname.'(Access-actualvalues,likefield-selectorparame-Mters,arealways displayedindecimal regardlessofcurrentI2radixmode.))Thelastvalue displayed (representedbyaG backslash) followingthistypeofcommandisthelastO access-actualshowninthelist:&inthiscase,thevalue0. `c DcThat evaluatingthestructure-referenceBLK2[2,4,12,0]GresultsintheaddressvalueBLK2+8,becausethecom-Nponent identifiedbythe referencebeginsinthefirstbyteGlofthethirdlongwordinsegmentBLK2.*(Morespecifi-Tcally,fieldF2isdefinedasthe12bits beginningwithbit4Pofthethird allocationunit.)(Asstated previously,thesizeJvand extensionvaluesarenotinvolvedinthe evaluation.! GOIntheDEPOSITcommand,a structure referenceusedasROtheaddress expressionontheleftsideoftheequalsignhasIO5thesamemeaningandeffectasintheBLISS assignmentOOcontext.+Thatis,it specifiesanelementor componentofaROdata structureintowhichavalueistobestored.)ThestoredUO>valueis truncated,if necessary,tofitthe receivingelementorO component. aLOIfa structure referenceappearsina``data'' (righthand)HOoperandofaDEPOSITcommand,ithasthesamemeaningGO5as describedabovefortheEVALUATEcommand, dependingROonwhetheracontentsoperatoris specified.'Thatis,within-QO direction specified,the structure referenceresultsinafetchNO>oftheelementor component indicated,withorwithoutsignNO extensionas requested.)Without indirection,a structureref-OOerenceresultsinthesamekindofaddress evaluationasis0OH performedbytheEVALUATEcommand.! p+O3.3.7BREF Structure ReferencesLO4Thedebugger recognizesandtreatsREFdatasegmentsinaHOmanner consistentwiththeBLISS language.*(AREFdataKOsegmentisalongwordsegmentdeclaredwiththe attributeFO=REFstructure-name.))WhenaREFsegmentnameisusedNOina structure reference,thedebugger automaticallysuppliesTOanextralevelof indirection,treatingthenameasthelocationSOGofapointertoasegmentthathasthesame structureasthat+OdeclaredfortheREFsegment.FLOAs} }inBLISS,whenaREFsegmentnameisgiveninade-GObuggercommandwithoutaccessactuals,theextralevelMO5of indirectionisnot provided./Inthiscase,thenameiseveryroutinebody.+ Redeclarationalsoincludesthecom-LOmoncasewhereaname, explicitlydeclaredasa permanentOOdatasegmentina containingblock,is redeclared(forexam-EOHple,LOCAL, STACKLOCAL,or REGISTER)inoneormoreO containedblocks.H POInallsuchcases,thedebuggerknowsonlyofthelastdec-POlarationofagivennamethatoccursinthesourcecodeforPO5aroutine;thatis,thelast declarationofthenameencoun-LOteredbythecompilerwhen processingthesourcecodeforOOa particularroutine.)Thismeansthatthe attributesof(andMO>storageaddress correspondingto)agivennameasknownbyFOthedebuggerare determinedbythatlast declaration.{LOAnentirely differentandmoresubtlekindofproblemcanLOarisein connectionwith referencesto temporarydataseg-OO5mentsbyname,aproblemthatisinherentinthe compiler's6O optimization techniques.,As describedinSection7.1.4, theLOcompilermayallocatetwoormore temporaryvaluestotheNO>samestoragelocationorregisterat differentpointswithinPOaroutine,iftheir``useful lifetimes''donotoverlap.,(TheNOcompilerdoesthistooptimizetheuseoftimeandspace.)*P?aPOThepossible implicationofthisfor debuggingisthat,ataROgivenpointinthe executionofaroutine,anamedeclaredasEO5LOCAL, STACKLOCAL,orREGISTERcanpointtoaloca-OOtionoccupiedbyeitheravalue correspondingtoa differentFO temporarydatasegmentoracompiler-defined temporaryMO>value.+Theonlywaytoresolvethe resultant ambiguity(ifLO examinationofsuchavalueis necessary)isby carefullyGO interpretingtheobjectcodeand examiningtheprogramGOHcounterwhensteppingthroughtheroutinein question.'O3.3.9B Source-Line DebuggingAO4WhentheBLISS-32compilerisexecutedunderVMSJOVersion4(orhigher versions), additional informationisIOenteredintothedebuggersymboltable,whichpermitsaIO=limitedformofsourcelinenumber debugging(wheretheLOsourcelinenumbersaredefinedasthenumbersprintedin1Otheleftmostmarginofa listing).zVOForexample,itispossibletosetabreakonthefirstinstruc-aSET&BREAK&%LINE&42 NLONote,however,thatbecauseBLISS-32isan optimizingcom-QOpilerforan expression language,youcannotaccessallsource*O5lineswiththe%LINEsyntax.P&FOHowever,usingtheTYPEcommand,youcandisplaythe=Osourcetextforanyline, including comments.OaDBG>aTYPE%17:19OModule%TESTERO17:%J=%.J+1;5O918:%T=% IFACT(5);K!Check%out&5!&=%120O19:%RETURN&.T+J NHONotethattheTYPEcommandshowndisplayssourcelinesMOrangingfrom17through19,usingthemodule designatedby'O5thecurrentscopesetting.! UOItisalsopossibletoexaminethesourcecode associatedwitha-OcurrentPClocationasfollows:taDBG> aEXAMINE/SOURCE&.PCt18:&T=& IFACT(5);8 EO3.3.10CEffectof Compilationand Link-Time QualifiersLO4Usingthe qualifier/DEBUGinthelink operation instructsKOthelinkertoreplacetheuser program'sstartingaddressKOwiththe debugger'sstartingaddress.)The executableimageQO=formedasaresultcausesthedebuggertobemappedintotheLOuser program'saddressspace.*Whenitis executed,controlJOfirstgoestothedebuggerinsteadoftheuserprogram.X .LOThedebuggerisa shareableimage.'Whena shareableimageQOislinkedintoan executableimage,itis unnecessarytocopyKO5thephysicalcontentofthe shareableimage.*Whenapro-OOgramthatusesa shareableimageisrun,thecopyfromtheNO shareableimagefileisalsorun.*Inreality,debuggermod-NO>ulesaremappedintomemory;theyarenot physicallythere.O(Refertothe - V,Z AX/VMSLinker ReferenceManual. b) JOThetypeofdatayoucanaccess symbolicallydependsonFOthesettingsforthe /TRACEBACKand/DEBUG qualifiersGO5forthe compilation.+Ifthe /NOTRACEBACK qualifierwasJOgiven,nosymbolicaccessis possible.+Ifthe /TRACEBACKMOand/NODEBUG qualifiersaregiven,onlythenamesofglob-OO>als, routines,modules,andprogramsectionsare availabletoFOthe debugger.)Ifthe /TRACEBACKand/DEBUG qualifiersCOaregiven,youcanexamineBIND,GLOBAL, EXTERNAL,?OHOWN,LOCAL, STACKLOCAL,andREGISTERdatanamesOOinadditiontotheothernames.) Moreover,youcanusefieldMOnamesin structure accesses, referenceliteralnamesinex-NOR pressions,andlistingsource line-numberstosetbreaksand'OexamineBLISSsourcecode.FORecallthatthe /TRACEBACK qualifierisa compilation;Odefault,whilethe/DEBUG qualifierisnot.  ,O3.3.11CDebuggerCommandSummaryKO4Thissection summarizescommandsthatyoucanusetode-FObugBLISS programs.'Thesummarypresentsthecommands"Oin alphabeticalorder.yOPOAsinBLISS notation,braces( {} )encloseoptionalcommandPO elements;theyarenotpartofthesyntax.)Theoptionalrep-O5etitionsymbols``5...Q5''and``,5...##5''alsohavethesame6OmeaningasinBLISSsyntax definitions.qGOSeeSETMODEfor entry/displaymode keywords;seeSET*OTYPEfordatatype keywords.KOWiththe exceptionofASCII characterinput,thedebuggerCO automaticallyconverts lowercaseinputto uppercase.GO``Address-expression''inthecommandsyntax representa-OOtionscanbethepathname(seeSETSCOPE)ofasymbolinKO5yourprogram,anumericvalue,asymbolthatyoudefinedJOduringthis debuggingsession,adebuggerspecialcharac-MOter,oran expressionthatcombinesanyofthese elements.LO>``Address-expression''alsoincludes BLISS-stylefieldrefer-,Oencesand structure references.$! HOThedebuggersupportscommandline continuation.)Acom-KOmandlinecancontainupto approximately500 characters,JO5 including nonprinting characters.)Youindicate continuationUOwiththehyphen( - )asthelast characterbeforethecarriageMOreturn.)Thedebugger indicatesa continuedlinebydisplay-QO>ingan underline characterasthefirst characterontheline*OratherthantheDBG>prompt.! bKOCTRL/Xreferstothe simultaneoustypingoftheCTRLkeyUOandthe respective characterkey,thatis,C,Y,orZ(referto O5the 5 V!5 AX/VMSDCL Dictionary)5for informationonthecom-OOpletelistofCTRL functions).'CTRL/XechoesattheterminalOas^X. 6OAllcommandsprecededbyanasterisk( *!')are availableonly OwithVMSVersion3.IOWiththe exceptionofCTRL functions,you terminateall9OcommandlinesbypressingtheRETURNkey. O @filespecNO(Indebugmode,denotesanindirectcommandfilethatcausesDOthedebuggertobegintakingdebuggercommandsfromJOthe indicatedfile..Anindirectcommandfilecanbein-IO2vokedwhereveranyotherdebuggercommandcanbegiven.IOAnindirectcommandfilecancontainanyvaliddebuggerDOcommand, includinganotherindirectcommand.*AnEXITKO<commandwithinanindirectcommandfilecancelsonelevelIOof indirection;anEXITcommandgivenatterminalinput5Olevel terminatesthe debuggingprocess.@ 0OCALLname {(argument,...)}SO(CallsaroutinebyitssymbolicnameorbyitsvirtualaddressQO(anaddress expressionisinvalid)withoptionalargumentlist.BOAnargumentlistmustbeenclosedby parentheses.! OCANCELALLKO(Cancelall breakpoints, tracepoints, watchpoints,anduser-SOset entry/displaymodes.)Typeissettoitsdefaultvalue(longWO integer),andscopeissettoitsdefaultvalueofzero.(Theini-IO2tial entry/displaymodesare restored.+ThiscommanddoesJOnotchangethecurrentcontentsofthe debugger'ssymbolJOtable(thatis,thosesymbolsacquiredfromprogrammod-LO<ulesatdebuggerinitializationorthroughuseoftheSETHOMODULEcommand,oranysymbolsthatyoudefinedduringOOthis debugging session).'Thecurrentlanguageisnotchanged.+OCANCELBREAKaddress-expressionO(CANCEL BREAK/ALLMOCancels breakpointsetat specifiedaddress,orcancelsallO breakpoints."OCANCEL EXCEPTIONBREAKMO(Cancelstherequestthatyourprogramstopatan exception3O condition(suchasata breakpoint).OCANCELMODELO(Restoresinitial entry/displaymodes.(Thiscommanddoesnot9Ochangethescopeorthecurrent language.U*OCANCELMODULEmodule-name-listO(CANCEL MODULE/ALLEOPurgessymbolic information associatedwiththenamedMOmodulesfromthesymboltable.*ThetypicaluseistomakeIO2space availableforsymbols associatedwithanothermod-EOuleormodules(seeSETMODULE).GlobalsymbolsandKOanysymbolsdefinedduringthis debuggingsessionarenotO< affected.fA<OCANCELSCOPE%O(Setsthescopetozero.3! U  O*(oCANCELSOURCE{/module=modnam}MO(Cancelsthecurrentsource directorysearchlist establishedGObypreviousSETSOURCE commands.(Whenthe qualifier(IO/module=modname)isused,thecommandcancelstheeffectHO2ofanypreviouscommandinwhichthesamemodulenameMOwas specified,butdoesnotaffectcommandsinwhichotherLOmodulenamesare specifiedorcommandswherethe qualifierO<isnotused. U+OCANCELTRACEaddress-expressionO(CANCEL TRACE/CALLOCANCEL TRACE/BRANCHOCANCEL TRACE/ALLQO2Cancelsa tracepointsetatthe specifiedaddress,cancelsallMOopcodetracingat call-type instructions,cancelsallopcodePOtracingat branch-type instructions,orcancelsall tracepointsO<andopcodetracing.+OCANCELWATCHaddress-expressionO(CANCEL WATCH/ALLPOCancelsa watchpointsetatthe specifiedaddress,orcancelsOall watchpoints. OCTRL/COO(Hassameeffect,andechoesat terminal,asCTRL/Y(seebe-OOlow)ifyourprogramdoesnotincludean exception conditionOhandlerforCTRL/C. ! OCTRL/YKO( Interruptsthedebuggeror executingprogramand transfersROcontroltoDCL,assignaledbythesystemprompt( $ ).(TypeNODEBUGafterthesystemprompttoreturncontroltothede-IO2bugger.'TypeCONTINUEafterthesystemprompttoreturnIOcontroltothe interruptedprogram.)TypinganyDCLcom-GOmandotherthanDEBUGorCONTINUEwillprobablyforceIO<the prematureexitofyourprogram.*YoucanuseCTRL/YLOto interruptaloopingprogram.*To determinethepointatHOwhichyou interruptedyourprogram,typethe following:trDBG>" rEXAMINE/INSTRUCTION%.PCOCTRL/ZHO(SameresultasEXIT;thatis, terminatesthe debugging4Osessionand transferscontroltoDCL.8ODEFINEsymbol-name=value{,symbol-name=valueO(,...}JOEquatesthenamesonthe name=valuelistwith associatedKOvaluesforuseduringthe debuggingsession.*ThedebuggerOO2searchesthesesymbolsfirstwhenitrequireseitheradefi-OOnitionforasymbolicentryorasymbolicnametoreportaO location.! hFODEPOSIT{/modifier...}address-expression=data{,dataO(,...}WOEntersthedata specifiedinthedatalistinthesequenceoflo-NOcationsthatbeginswiththe specifiedaddress.*ThemodifierLO2canbeanymodeortypekeyword.'(ModeandtypekeywordsOcanbemixed.)! Odisplayofeverylineinthe specifiedrange.O/NEXTRO( Specifiesasearchanddisplayofonlythefirst occurrenceofLOthestringinthe specifiedrange.'(Thisisthe default.)FKO /IDENTIFIERRO( Specifiesasearchforan occurrenceofastringintherangeQO specified.,Thestringis displayedonlyifitis delimitedbyQOa characterthatisnotpartofan identifierinthecurrentO2 language.O/STRINGQO( Specifiesasearchanddisplayofan occurrenceofthespeci-2Ofiedstring.'(Thisisthe default.)! mOOTherange parameterlimitsthesearchtoa specifiedprogramOregionasfollows:  wOmodname(Searchthe specifiedmodule+0fromlinenumberzerotothe~endofthemodule.Omodname\line-num(Searchthe specifiedmodule,Efromthe specifiedlinenumber(totheendofthemodule.#O modname\line-num:line-num( Searchthe specifiedmodule(Zfromthefirstlinenumbergiventothelast.O!line-num)!Searchthemodule designated*nbythecurrentscopesetting,fromthe specifiedlinenumber( totheendofthemodule.Oline-num:line-num)Searchthemodule designated*bythecurrentscopesetting) beginningatthefirstline-lnumberandendingatthelast.O )Searchthesamemodulefrom*3whichasourcelinewasre-)cently displayed(byaTYPE"orEXAMINE/SOURCEcom-+mand), beginningatthefirst*iline followingthelinedis-*playedand continuingtothe endofthemodule.OOThestring parameter specifiesthestringinthesourcecode1Oforwhichthesearchis initiated.0?OSETBREAKaddress-expression{DO(commandlist)}NO( Establishesa breakpointat specifiedaddress(the breakpointIOstopsyourprogrambeforethe instruction beginningwith0O``address-expression''is executed).5!  FOThedebuggerexecutescommandsinDOsequencecommandMOformatwheneveryourprogramstopsbecauseofthe specifiedLO5 breakpoint.' Parenthesesarerequiredascommandlistdelim-JOiters.)Multiplecommandsmustbe separatedby semicolons.IOAnycompletedebuggercommandcanbeusedinthiscon-OO>text, includingGO,STEP,orCALL.IfGO,STEP,orCALLisJO specified,itmustbethelastcommandinthe sequence. zQOYoucanspecifythe/AFTER qualifiertodefera breakpointasOfollows:JtaSET&BREAK/AFTER:decimal-integer%address-express%{DO&-%-%-} KOThe breakpointisignoreduntilthenthpassthroughtheQO specified location,asinan iteration,whereniswithintheMO5range1through32767.( Thereafter,the breakpointtakesef-POfecteachtimethedebugger encountersit.(YoucanspecifyaFO temporary(or one-time) breakpointwiththe following:0tkSET& BREAK/AFTER:0%address-expressionLOThefirsttimethe breakpointis encountered,thedebugger>Ostopsyourprogramandcancelsthe breakpoint. ! OSET EXCEPTIONBREAKKO(StopstheprogramandreportsthecurrentprogramcounterSOcontentsifan exception conditionoccursthatwasnot initiated#Obyadebuggercommand. &OSETLANGUAGE language-nameNO(Letsthedebugger interpretinputanddisplayoutputintheMOsyntaxdefinedforthe specified language.)Thedebuggerre-OOjectscommandsthatareinvalidinthe specifiedsyntax.(ThePO2debugger initially recognizesthelanguageofthefirstmoduleAOinyourprogramthatcontainssymbol information.0 OSETLOG file-nameJO( Specifiesanameotherthanthedefaultname (DEBUG.LOG)OOforthedebuggerlogfile.*ThecommandcanalsobeusedtoPOgeneratemultiplelogfilesduringasingle debuggingsession.! U O*oSETMARGINrm O4*o(SETMARGINlm:rm O*oSETMARGINlm: O*oSETMARGIN:rmPO2 Specifiestheleftmostand rightmostsourceline characterpo-ROsitionsatwhichtobeginandendalineofsourcecode.)TheROdefaultvaluefortheleftmarginis1,andthedefaultvalue+O<fortherightmarginis255. O*"oSETMAX_SOURCE_FILESnGO( Specifiesthemaximumnumberofsourcefilesthatthe8Odebuggercankeepopenatanyonetime.>OSETMODEmode-keyword{,mode-keyword,...}QO(Allowsorinhibitstheentryanddisplayofdatain specifiedOformats.vLLOThe followinglist describesthefunctionofeachkeyword:|RODECIMAL6KInterpret/displaydataindecimalradix.GO] HEXADECIMALInterpret/displaydatain hexadecimalradix.O NOSYMBOLIC4KInhibitdisplayofsymbolic addresses.OPOCTAL4KPInterpret/displaydatainoctalradix.OSYMBOLIC'KDisplaysymbolic addresses.}S=OThe debugger's initial modes are SYMBOLIC andO HEXADECIMAL. bIOYoucanalsoenterthemodekeywordswiththecommandsDODEPOSIT, EVALUATE,andEXAMINEtooverridethecur-GO5rent associatedmode(radixandsymbolic/nosymbolic).,AJOslashmustprecedeeachmodekeywordenteredaftertheseOcommandverbs:+tkcommand-verb/keyword/keyword%...E'OSETMODULEmodule-name-listO(SET MODULE/ALLGOEnters nonglobalsymbolsandprogramsectionnamesas-JOsociatedwiththeprogram-modulelistintothe debugger'sKO2symboltable,orenters informationfromallmodulesintoJOthesymboltable.*Thedebuggercannot interpret nonglobalLOsymbolsunlesstheir associatedmodulenamesappearintheBO<statusreportproducedbytheSHOWMODULEcommand'Owitha``yes'' indication.4OSETOUTPUTkeyword{,keyword,...}RO(Turnstheloggingfunctiononoroff,displaysorinhibitstheIOdisplayofdebuggercommandsexecutedfromindirectcom-MOmandfilesor breakpointactions,andpermitsor suppressesNO2debuggeroutput,excepterror messages,tothescreen.(Valid%Okeywordsareasfollows: X OLOG>bCopyallcommandinput (verbatim)anddebuggerEb0output, includingerror messages,tothecurrentlogBb~file;copyverifiedlinesifVERIFYis specified.ONOLOG=bInhibitthecreationofadebuggerlogfile.MOqTERMINALPrintalldebuggeroutputonthescreen, including@bcommandinput,debugger responses,commentlines,-b andwarninganderror messages.@bPrintonlyerror messages;suppressalldebugger.boutput, includingverifiedlines.OMVERIFYEbMEchocommandlinesontheterminalastheyareex-Dbecutedfroma breakpointactionorindirectcommandbfile.JObNOVERIFYDonotechocommandlinesfromindirectcommand bfileonthescreen.cFOTheinitialkeywordsettingsareNOLOG, NOVERIFY,andOO TERMINAL.Ifdefaultsettingsareused,nologfileispro-LO5duced,theprintingofanycommandtakenfromanindirectJOcommandfileand breakpointactionis inhibited,andall8ODEBUGoutputisprintedonthe terminal.@O SpecifyingNOLOGand NOTERMINALcausesawarningLOmessagetobeprinted;outputisprintedonthe terminal.]LOThe followingsymbolsmayappearinthelogfileandtheOscreen:vf O!*z Indicatesadebuggerresponse O]!!%z] IndicatesacommentlinezMOTologalldebuggercommandI/Ointhelogfile,usetheO followingcommand:taSET&OUTPUT%LOG! ;OSETSCOPEmodule-name{\routine-name...}SO( Establishesanorderedlistofpathnamesforusewiththede-JObugger'ssymbolsearchrules.*Apathname completelyandKO unambiguously identifiesasymbol.(ForBLISS,apathname&O2isoneofthe following:t symbol-name5tmodule-name{\routine-name%...}\symbol-nameV,JOThedebugger evaluatesan expressioninwhichasymbolicQOentryappearsonlyifa definitionwaslocatedfortheentry.QO5Ifitfailstolocateamatchforapathname,thedebugger@Oreportsthesearchfailureandthesymbolname.}QOSpecialpathnamesare availableforuseinthelistofpath,OnamesofaSETSCOPEcommand:9 9 OOPathNameMeaning O Ob0Dbb Indicatesthepathnameofthelexicalentity.%ForDbexample,routineorblockthatcontainsthecurrentbprogramcounter.Ow1,2,3,6w ...IbwPathname1 indicatesthecallerofthelexicalentityFb containingthecurrentPC;pathname2 indicatesthe2bcallerofpathname1,andsoon. O\AbThepathname\ precedingasymbolicnameindi-Bbcatesaglobalsymbolofthatname.!Forexample:cEXAM%\GLOBAL1cThiscausesasearchforaglobal>bsymbolwhosenameisGLOBAL; nonglobalsymbols,bofthesamenameareignored. O0U O*,oSETSEARCHparameter{,parameter}DO( Establishessearch parameterswheneveraSEARCHcom-JO ( (mand qualifierisnot specified.*The parameters determineTOthesearchfor occurrencesofastringasfollows:(findalloc-GO2 currences(ALL);findonlythenext occurrence(NEXT);IOdisplayall occurrencesfound (STRING);displayonlytheFO occurrences unboundedbyacurrentlanguage identifierO< (IDENTIFIER).M K# O*DoSETSOURCE{/module=modname}dirname{,dirname...}TODirectsthesearchof specified directoriesforthesourcefiles.MOThecommandisusedtolocatesourcefilesthathavebeen3O2removedfrom compile-time directories.6OSETSTEPkeyword {,keyword,...}KO( Establishesdefault conditionsfortheSTEPcommand.)Valid%Okeywordsareasfollows:9FO INSTRUCTION(Steps incrementinVAXMACRO instructions.O]INTO5b]Allowssteppingthroughcalledroutine.OLINE7bSteps incrementbylistinglinenumbers.OPOVERBbPStepsovercalledroutine(makecall transparent). O*NoSOURCEDisplaysthelineofsourcecodethat correspondsto-bthe instructionsbeing executed. O*SoNOSOURCExInhibitsthedisplayofthelineofsourcecodecorre-:bspondingtothe instructionbeing executed.6OXSYSTEMAllowssteppinginsystemspace.KONOSYSTEMInhibitssteppinginsystemspace(make executionb  transparent).dEOThe initialized conditionsforBLISSare INSTRUCTION,O NOSYSTEM,andOVER.(OSETTRACEaddress-expressionO(SET TRACE/CALLOSET TRACE/BRANCHSOSetsa tracepointatthe specifiedaddress,or specifiestracingPO2ofall call-typeor branch-type instructions.)Ata tracepoint,JOthedebuggerreportsthecurrentprogramcountercontentsBOandthen continuesprogram executionautomatically. OSETTYPESO( Specifiesadatatypetobe associatedtodatawhenthedebug-8Ogercannotinferatypefromitsinput.vLLOThe followinglist describesthefunctionofeachkeyword: 0OASCII:nGbInterpret/displaydataasastringofnASCIIcharac-+b0ters,wherenisaninteger.OBYTE3bInterpret/displaydatainbyteunits.CO$ INSTRUCTION(Interpret/displayVAXMACRO instructions.OLONG7bInterpret/displaydatainlongwordunits.OWORD3bInterpret/displaydatainwordunits. gEOThe debugger'sinitialtypesettingisLONGINTEGER.IOYoucanalsoenterthetypekeywordswiththecommandsDO5DEPOSITandEXAMINEtooverridethecurrentassoci-QOatedtype.'AslashmustprecedeeachtypeenteredaftertheseOcommandverbs.+tkcommand-verb/keyword/keyword%... (OSETWATCHaddress-expressionSO(Reportsifthecontentsofthe specified locationsare modified.KOThe locationswatchedcanbe individual addresses(includ-SOingthenumberofbytes specifiedbythelengthtypeineffectKO2whenthe watchpointwasset)orthenumberofbytesas-KOsociatedwiththesymbol'sdatatype(forexample,double$O precision:'eightbytes).! NNOWhenthecontentsofawatchedlocationchanges,thedebug-OOgerstopstheprogram(asata breakpoint)andreportsbothRO5thepreviouscontentsandthecurrentcontentsofthe location.! OSHOWBREAKLO(Reportsthe locationsofcurrent breakpointsandanyrele-KOvant information associatedwiththem,suchasDOcommand-O sequencesand ``after''options.! OSHOWCALLS{n}TO(Reportscurrentcalllevelandthe hierarchyofcalllevelsthatSOprecededit(thatis,tracesyour program'scall history).(IfnPO(adecimalinteger)is expressed,thedebuggerreportsncallRO2levelsbackfromthecurrentlevel(nhastherange0throughTO32767).'Ifnisomitted,all precedingcalllevelsare reported.OSHOWLOGPO(Displaysthenameandstatusofthelogfile(seeSETLOG.)-OThedisplayappearsasfollows:(t[not]%logging%to% filename} KS O*oSHOWMARGINPO(Displaysthecurrentsourcelinemarginsettingsthatarebe-POingusedforthedisplayofsourcecode.(ThemarginsettingsHOare establishedbytheSETMARGINcommand.(ThedefaultJO2marginsettingsareleftmargin1andrightmargin255. O* oSHOWMAX_SOURCE_FILESFO(Displaysthemaximumnumberofsourcefilesthatthe3Odebuggercankeepopenatonetime.A\OSHOWMODEHO(Reportsthecurrent entry/displaymodes(seeSETMODE).! OSHOWMODULEJO(Listsprogrammodulesbyname, indicates(byyesorno)OOwhethertheir associatedsymboldataexistsinthe debugger'sOOsymboltableand indicatesthe approximatespacerequiredforQO2theentryofeachmodule'ssymboldata.'ListsalsotheamountJOofspace currentlyunused.)Thedebuggerhasno knowledgeLOofanyprogrammodulenotreportedinthisstatusreport.p! wFOSHOWOUTPUTIO(Displaysthecurrentoutput attributesandthenameandKOstatusofthecurrentlogfile.*(SeeSETOUTPUTandSETJOLOG.)Thiscommand generatesthe followingstatusreport:Rt^output:% [no]verify,% [no]terminal,&and%[not]%logging&to& 'filename' O*oSHOWSEARCHJO(Displaysthecurrentsearch parameters establishedbytheFOSETSEARCHcommandorthedefaultvaluesofALLandOSTRING.tAJOSHOWSCOPE5O(ReportsthecurrentcontentsofSCOPE. O*oSHOWSOURCEOO(Displaysthecurrentsource directorysearchlists established>ObytheSETSOURCEorSETSOURCE/module=modnameOcommand. AaOSHOWSTEPMO(Reportscurrentdefault conditionsforSTEP(seeSETSTEP).OSHOWTRACEMO(Reportsthe locationsofcurrent tracepointsorthatopcode"Otracingisineffect.mACOSHOWTYPE/O(Reportsthecurrenttypesetting. OSHOWWATCHMO(Reportsthe locationsofcurrent watchpointsandthenumber5Oofbytes monitoredbyeach watchpoint. KY+OSTEP{/keyword}{decimal-integer}MO(Beginsprogram executionandthenstopsafter executingtheUO specifiednumberof instructionsorlistinglines.'(IfyoudonotUOspecifyacount,singlesteppingisthe default.)(Thecountisa7O2decimalintegerbetween0through32767.J  KOThe followingkeywordscaneitherbeusedaftertheSTEPJOcommandverb(STEP/keyword)orbesetwiththeSETSTEPKO5commandto establishthedefault conditionsforSTEP.The@OSHOWSTEPcommanddisplaysthecurrent defaults.g==OThekeywordshavethe followingrelationships:OSYSTEM/NOSYSTEM13Count/donotcountstepsinsystem30space.O INTO/OVER03Count/donotcountstepswithina3calledroutine.Oq INSTRUCTION!3qStepby instructions.OLINE+3Stepbylistinglinenumbers. Oo*oeSOURCE/NOSOURCE53e Display/donotdisplaylinesofsource3code.bCOThe initializeddefaultsforBLISSare INSTRUCTION,O NOSYSTEM,andOVER.  O*9oTYPE{#{modname\}line-number{:line-number}->O(%{,{modname\}line-number}:line-number}...}}MODisplaysthesourcelanguage statements correspondingtothe#Olinenumbers specified.R(QOIneffect,youcanreadallthesourcelanguage statementsinMOtheprogramby specifyingastartinglinenumberof1andOO5anendinglinenumberthatisequaltoorgreaterthanthe;Olargestlinenumberintheprogramlisting. QOIfamodulenameandeitherasinglelinenumberorarangePOofnumbers (separatedbyacolon)arenot specified,thede-QO5faultscopesettingisusedto determinewhichmoduletouse.NOThedefaultscopeiseitherthemodule designatedbyaSETHOSCOPEcommandorthemodule containingthecurrentPC.  7O5.1BLibraryandRequireFile DifferencesPOUBLISSlibraryfilesareusedlikerequiredfiles:* declarationsGOthatarecommontomorethanonemodulearecentral-ROizedinasinglefile,whichis automatically incorporatedintoIO^othermodulesduring compilationbymeansofREQUIREor OLIBRARY declarations.! kPOLibraryfilesaremore efficientfordoingthisthanrequiredNOfilesfortworeasons.)First,withfilesinvokedbyREQUIRENO5 declarations,thecostof processingthesourceoccurseveryQOtimethefileisusedina compilation.)However,withlibraryQOfiles,themajor compilationcostoccursoncewhenthelibraryMO>is compiled,andamuchsmallercostoccurseachtimetheVOlibraryfileisusedina compilation.(Alibraryfilecloselyap-LO proximatestheinternalsymboltablerepresentationusedbyOOHthe compiler;hence,thecostsoflexical processing(includ-QOing scanning,lexical conditionals,lexical functions,andmacroLO expansions)and declarationparsingandcheckingoccuronly,ORduringthelibrary compilation.! WHOSecond,withfilesinvokedbyREQUIRE declarations,allNO declarations containedinthefileare incorporatedintotheNO5compilersymboltable.*Withlibraryfiles,thecompilerdoesOOnot incorporate declarationsintothenormalsymboltableun-OOtiltheyareactuallyneeded.) Declarationsofnamesthatare;O>notuseddonotfillupthesymboltable. WPOThe differenceincostdependsonmanyfactors, includingtheTOsizeofthelibrary,thesizeofthemodulebeing compiled,andOO5the percentageandkindof declarationsusedfromalibrary.KO ExperimentalresultsindicatethatcompilertimeandspaceNO requirementscan typicallybeimprovedbyafactorof4byusinglibraryfilesinsteadofsourcefiles. MOLibraryfilesand declarationsandREQUIREfilesanddecla-BOrationsaresimilar;however,the differencesare: - ` HFilesinvokedbyREQUIRE declarationsaresource(text)G(files,whilefilesinvokedbyLIBRARY declarationsareMspecialfiles, previouslycreatedbythecompilerthroughalibrary compilation. `Y AYFilesinvokedbyREQUIRE declarationscancontainJanysourcetextthatisvalidwhenthatsourcetextisB  substitutedfortheREQUIRE declaration..Filesin-DcvokedbyLIBRARY declarationsmustbecompiledfromKsourcesthatconsistofasequenceofonlythe following declarations:! _YBIND .1Y5BINDROUTINE 1YBUILTIN q1Y COMPILETIMEY>EXTERNALYEXTERNALLITERALYEXTERNALROUTINEYHFIELDY KEYWORDMACROYLIBRARYYRLINKAGEYLITERALYMACROY[REQUIREY STRUCTUREY SWITCHESYe UNDECLARE ` HSWITCHES declarations containedinfilesinvokedbytheE=REQUIRE declarationcanaffectthemodulebeingcom-Ppiled;those containedinfilesusedtoproducelibraryfilesNaffectonlythelibrary compilation.&SwitchsettingsarenotOF incorporatedintothe compilationthatusesthelibraryfile.*./*/*D/A 8K5(Theonlyswitchesthatareusefulinalibrarycompila-AtionareLIST, LANGUAGE,andERRS.The remainingLswitchescanbegiven,butare effectivelyignoredbecauseL?noneofthemhasanyeffectonthe declarationsthatare.validinalibrary compilation.) ` GFilesinvokedbyREQUIRE declarationscanhaveeffectsHothatdependonprevious declarationsorswitchsettingsJinthemodulebeing compiled.*Thiscanoccurinalex-= ical conditional(%IF-%THEN-%ELSE-%FI)ormacroGy expansionthatdependseitheronthelexical functions= %SWITCHES, %DECLARED,or %VARIANT,oronval-G*uesof predeclared literals,suchas%BPVAL(refertoSection 6.3.1.1).3FilesinvokedbyLIBRARY declarationsFdonothaveeffectsthatdependonpreviousdeclara-H4tionsorswitch settings,becauseSWITCHES declarations,CREQUIRE declarations,lexical conditionals,ormacroNcalls (containedinsourcesusedtoproducealibraryfile)<=are processedduringthelibrary compilation. ` E AppropriatelywrittensourcefilescanbeinvokedbyBREQUIRE declarationsinBLISS compilersotherthanEn BLISS-32.,Libraryfilescanbeinvokedonlyincom-I pilationsbythesamecompilerthatcreatedthelibraryfile.*F?#! UOInmostcases,thesourcefilesusedtocreatealibrarycanbeNOinvokedbyaREQUIRE declarationorthelibrarycanbein-LO5vokedbyaLIBRARY declaration, achieving identicaleffectsMOinthemodulebeing compiled.(However,the differencespre-UOsentedabovecanleadtoproblemsthatare difficultto identify.QO> Therefore,youshoulduseone consistentformforeachsetofO declarations.+(_ w5.O5.2BFrequentBLISSCodingErrorsLOUCertaincodingerrorsoccur frequently, especiallywhennewLOBLISSuserscompileanddebuganewmodule.'The followingNOchecklistmaybeusefulwhenyoucannotseemtofindthe!O^sourceofaproblem. `O5.2.1BMissingDotsOO4Themostfrequenterroristoforgetadot.,ExceptfortheMOleftsideofan assignment expression,the appearanceofaNOdatasegmentnamewithouta precedingfetchoperatoristhe>O= exception,andusuallyamistake.&Forexample:IF%A&THEN%...!Y>OThisshouldalmost certainlybethe following:IF%.A%THEN&...a71O5.2.2BValuedand NonvaluedRoutinesLO4TheBLISScompilerdoesnotdiagnoseuselessvalueexpres-KOsionsincontextsthatdonotuseavalue.&Forexample:$ROUTINE&R(A):&NOVALUE%= YBEGIN ... RETURN%5; 1... yEND;MOInthisroutine,theapparentreturnvalue5is discarded,>ObecausetheroutinehastheNOVALUE attribute.1OHowever,noticethe followingcase:ROUTINE&S(B)%= PBEGIN ... RETURN; (... pEND;!HOHerean informationalmessageisissued indicatingthatMOavalue expressionismissinginacontextthatimpliesaKO5value.+(ThecompilerassumesavalueofzeroformissingO expressions.)f! <4O5.2.3B SemicolonsandValuesofBlocksSO4Itiscommontothinkofthe semicolonasa terminatorforanTO expression,butthisisnotalwaystrueandcanleadtoerrors.OForexample:iIF%.ATHEN X=.Y;AELSE X=-5; |MOHerethefirst semicolon terminatestheinitialIF-THENand/Othe subsequentELSEisinerror.) NTOAmoresubtleerroristoplacea semicolonafterthelastex-SOpressionofablockwhenthat expressionissupposedtobethe>O5valueoftheblock.'(Thisisverysimilarto?5Section5.2.2.)*??Z 0AO5.2.4BComplex ExpressionsUsingAND,OR,andNOTLO4Whenyouarewritingcomplextests involvingtheAND,OR,POandNOT operators,itiseasytoconfusetherelativeprece-NOdenceofthe operators.'Use parenthesestomakeyourintentTO=explicittothe compiler,tootherreaders,andto yourself.'ForNOexample,the following constructionis difficulttoreadand,Omaynotreflectthe intention:7sIF%.X%EQL%0%AND%.Y%OR%NOT&.J&THEN...!v9OThe followingclearlyreflectstheintent:=tIF%((.X%EQL%0)%AND&.Y)%OR%(NOT&.J)%THEN... z})O5.2.5BComputedRoutineCallsMO4When computingtheaddressofaroutinetobecalled,en-OOclosethe expressionthatcomputestheaddressin parentheses7Ofollowedbythe parameters.'Forexample:iBEGINEXTERNAL%ROUTINE R;ALOCAL L;L&=%R;(.L)(0) aENDzQOThiscodecallstheroutineataddressRwitha parameterof8Ozero.'However,noticethe followingcall:a.L(0)b8NOThis expressioncallstheroutineataddressL(mostlikelyPOanaddressonthestack)andusesthereturnedvalueastheQO5operandofthefetch.)BecausethereisnocodeataddressL,IOanillegal instruction exceptionislikelyat execution.QOAn alternativeistouseageneralroutinecall.(AssumingtheNOdesiredlinkageisthedefaultcalling convention,youcould2O5writethecomputedcallasfollows: BLISS(.L,0)! .O5.2.6BSignedandUnsignedFieldsLO4BecarefulwhenusingsignedandunsignedfieldsthatareMOsmallerthana fullword.+ Consistentuseofthesignexten-POsionrulesandsignedversusunsigned operationsis important.O=Forexample:BEGIN$ FIELD%LOW9&=% [0,0,9,0]; ROWN&/X&:%BLOCK[1]% FIELD(LOW9);THEN&... *... rENDNHOHerethe expression.X[LOW9]EQL-5isalwaysfalsebe-NOcausethe (unsigned)valuefetchedfromXis necessarilyin!O5therange0to511._ V5 O5.2.7BComplexMacrosOO4TheBLISSmacrofacilityhasmany capabilities,butalsohasLOsomeverysubtle properties.(Mostproblemsarisewhenfea-MOturesareusedthaton compilationproduce unwarrantedside-O=effects,suchasthe following:V, ` HMacro expansionsthatproduce declarationsofanykind,2( particularlyothermacro declarations ` FUseof compile-timenamestocontrolmacro expansionsusing%ASSIGN ` 3Useof%QUOTE, %UNQUOTE,and%EXPANDNLOBecarefulwhenusingthese features;indeed,youmaynot)Oreallyneedthem..(RefertoNSection5.6forexamplesof"O5advancedmacrousage.)*N?O5.2.8BMissingCodePO4Manycodingerrorstendtoresultincodethatcanbeopti-MOmized.*IfyoudiscoverthatsomeofyourprogramseemstoKObemissingfromthecompiledcode,youmaypossiblyhaveLO=madeacodingerror.*Checkthecompiledcode carefullytoPOensurethatthecodeismissingfromthesource,ratherthan$Oremovedby optimization.2OForexample,considerthe following:BEGIN POWNX:%BYTE; ...)(IF%.X%EQL%-5%THEN%X&=%0; p... ENDb 8TOInthisexample,thevalueofthetest expression,.XEQL-5,is#Oalwaysfalse(refertoYSection5.2.6.)'eAsaresult,thecompilerNO5producesnocodeforthetest expressionorthe alternative2O(X=0),whichcanneverbe executed.*Y?KO Consequently,theentireIF expression disappearsfromtheLOcompiledcode.)Theproblemisnot erroneouscompileropti-LO5mizationbutamissingSIGNED attributeinthe declarationOofX.1OOAsimilarerroroccursifthefactis overlookedthatTRUE_SO/FALSEisbasedonthevalueofthelowbitofan expression.O5Forexample:IF%.X%and%2THEN IY=0ELSE Y=1 TOThiscodewillalwaysassignthevalue1toY,becausethelowAObitof.XAND2mustalwaysbezeroorfalse.\ S2)O5.2.9BUsingtheBuilt-InPC O4The%4 VAX ArchitectureHandbook(4assertsthatthePCcannotBObeusedinREGISTERorREGISTERindirectaddress-GOingmodes.+TheBLISS-32compiler generatesaninternalJO=compilererrorifthe followingkindsof expressionsareO encountered:BUILTIN&PC; cOWN TX;JX&=%.PC;!&produces&a%MOVL%PC,X&which&is& unpredictableM:X&=%..PC;p!&produces&a%MOVL%(PC),X%which%is% unpredictablee R;ROIfitis necessaryforyoutoobtainan approximatevaluefor=OthePC,the techniquetouseisasfollows:aBUILTIN&PC;KEXTERNAL% ZERO:WEAK;p!%default&to&zero%if%no% corresponding.!%GLOBAL%BIND%ZERO&=%0%appearsT9X%=&.PC%+&ZERO;s!I.OThiswillproducethe following:MOVAB% ZERO(PC),X a1OThis instructionisdefinedinthe% VAX ArchitectureHandbook .! *.O5.2.10CIndexedLoopCodingErrorOO4Acommoncodingerroroccursintheuseofunsignedindexed6Oloop expressionsofthe followingform:)DECRU%I&FROM%HIGH%TO%0&DOn! DROThisresultsinaninfiniteloopbecausethe programmerisin-LO advertently attemptingto decrementthroughzero.'TherulesRO5ofunsigned arithmeticstatethatzeroisthesmallestinteger;TOthus,.Iisneverlessthanzeroandtheloopcannot terminate.AOOTheproperinterpretationofthese expressionsisasfollows:tBEGINPLOCAL%I;I&=%HIGH;FIF%.I%GTRU&0%DO%(%I&=%.I%-%1)%UNTIL%.I%LSSU&0;t(END;! OOThus,when.Iiszeroandis decrementedto-1,itbecomesPOthelargestunsignednumber.'The expression.ILSSU0isal-PO5waysfalsebecause-1LSSU0isalwaysfalse.( Therefore,theOOunsignedindexedloop expressionmustbecodedaseitheroneOofthe following:/tkDECRU%I%FROM&HIGH%+%1&TO&1%DO Oor)tDECRU%I%FROM&HIGH%TO%0%DOqBEGIN ...( #IF&.I&EQL%0&THEN%EXITLOOPkEND; MOThe semanticsoftheDECRA expressionarethesame,except6OGTRUandLSSUwouldbeGTRAandLSSA. e*O 6.2Transportability! GuidelinesJOThischapterprovides guidelinesforwriting transportableKOprogramsand demonstrateswhythewritingof transportableWOBcodeiseasierifitis consideredatthe beginningofaproject.MOAlso describedarewaysinwhichaprogramcanbecomeun-JOtransportable,and techniqueswherebysuch occurrencescanOLbeavoided.> LO Followingan introductiontotheconceptsoftransportabil-EOity,the guidelinesare presentedinthree sections:VSection6.2GO5 describes high-level approachestowriting transportableOsoftwareinBLISS.Section6.3) describesvariousBLISSfea-NOturesthatcanbeusedinsolvingtransportability problems.O>Section6.4<>analyzesvarioustransportabilityproblemsand)Oprovides suggested solutions.*V|?*P}?*O~?)KOThedialects referencedinthischapterarethe languages8Odefinedbythe followingBLISS compilers:` BLISS-16Version4.3 (BLISS-32Version4.3 BLISS-36Version4.0NAOBLISS-36andBLISS-16aregenericnamesforlan-IOguagesthathaveBLISS compilersthatgeneratecodefor8O5DECsystem-10/20sandPDP-11s, respectively. g=O C.!Module!TemplateJOThisappendixcontainsalistingofthefile MODULE.BLI,LOwhichisthestandardtemplateforBLISSmodulesandrou-ROBtines.(Amodulehasfourparts:(apreface,a declarativepart,7Oan executablepart,andaclosingpart. N#OThemodule'spreface(SectionC.1)'bappearsfirst.'ItprovidesHO documentation explainingthemodule's function,use,andO5history.*F?W -Osupportpackage,onlogicaldevice SYS$LIBRARY.b6 P.f JtcL E GHOn,P A9UX<ooS0-W[$nVz22 fiV f| 20;Y~`U! $Nj]~FVv PZ iz|,4| #<r$,&B("R)v+T%/|1X2@35D6L7&V8~:4;O<8a=&>U@A2.BbCDiEiF~.G"IJUNJQRTUXW*BZn]H_`acffWhHvjmDnWp(t@ux| }Vrx t^rx`;lj$hTM0tp!.+mVA<Dl \.V`TdXT)5UIInn`pr~qJ x>z}Gr> t<Zi  fb> bnp& T`+n <2j&0q; G(3S7[T}I^[2j ^v<*]W"3b