alphabetical list of all turing elements · typespec - type specification unchecked - compiler...
TRANSCRIPT
![Page 1: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1.jpg)
AlphabeticalListofAllTuringElements
abs-absolutevaluefunctionaddr-addressofavariableaddressint-typeall-allmembersofasetand-operatoranyclass-theancestorofallclassesarctan-arctangentfunction(radians)arctand-arctangentfunction(degrees)array-typeassert-statementassignability-ofexpressiontovariableassignment-statementbegin-statementbind-declarationbits-extractionbody-declarationboolean-true-falsetypebreak-debuggerpausestatementbuttonchoose-switchmousemodesbuttonmoved-hasamouseeventoccurredbuttonwait-getamouseeventprocedurecase-selectionstatementcatenation(+)-joiningtogetherstringsceil-real-to-integerfunctionchar(n)-typechar-typecheat-typecheatingchecked-compilerdirectivechr-integer-to-characterfunctionclass-declarationclock-millisecsusedprocedureclose-filestatement
![Page 2: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/2.jpg)
cls-clearscreengraphicsprocedurecollection-declarationcolor-textcolorgraphicsprocedurecolorback-backgroundcolorprocedurecolour-textcolorgraphicsprocedurecolourback-backgroundcolorprocedurecomment-remarkstatementcomparisonOperatorConcurrencyConcurrency.emptyConcurrency.getpriorityConcurrency.setpriorityConcurrency.simutimecondition-declarationConfigConfig.DisplayConfig.LangConfig.Machineconst-constantdeclarationconstantReference-useofaconstantcos-cosinefunction(radians)cosd-cosinefunction(degrees)date-proceduredeclaration-createavariabledeferred-subprogramdeclarationdelay-procedureDirDir.ChangeDir.CloseDir.CreateDir.CurrentDir.DeleteDir.GetDir.GetLongDir.Opendiv-integertruncatingdivisionoperatorDrawDraw.ArcDraw.Box
![Page 3: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/3.jpg)
Draw.ClsDraw.DotDraw.FillDraw.FillArcDraw.FillBoxDraw.FillMapleLeafDraw.FillOvalDraw.FillPolygonDraw.FillStarDraw.LineDraw.MapleLeafDraw.OvalDraw.PolygonDraw.StarDraw.Textdrawarc-graphicsproceduredrawbox-graphicsproceduredrawdot-graphicsproceduredrawfill-graphicsproceduredrawfillarc-graphicsproceduredrawfillbox-graphicsproceduredrawfillmapleleaf-graphicsproceduredrawfilloval-graphicsproceduredrawfillpolygon-graphicsproceduredrawfillstar-graphicsproceduredrawline-graphicsproceduredrawmapleleaf-graphicsproceduredrawoval-graphicsproceduredrawpic-graphicsproceduredrawpolygon-graphicsproceduredrawstar-graphicsprocedureempty-conditionfunctionenum-enumeratedtypeenumeratedValue-enumeratedvalueeof-end-of-filefunctionequivalence-oftypeserealstr-real-to-stringfunctionErrorError.Last
![Page 4: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/4.jpg)
Error.LastMsgError.LastStrError.MsgError.StrError.TripErrorNumExceptionsexit-statementexp-exponentiationfunctionexplicitCharConstant-characterliteralexplicitConstant-literalexplicitIntegerConstant-integerliteralexplicitRealConstant-realliteralexplicitStringConstant-stringliteralexplicitTrueFalseConstant-booleanliteralexpn-expressionexport-listexternal-declarationfalse-booleanvalue(nottrue)fetcharg-fetchargumentfunctionFileFile.CopyFile.DeleteFile.DiskFreeFile.ExistsFile.RenameFile.Statusflexible-arrayinitializationfloor-real-to-integerfunctionFontFont.DrawFont.FreeFont.GetNameFont.GetSizeFont.GetStyleFont.NameFont.NewFont.SizesFont.StartName
![Page 5: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/5.jpg)
Font.StartSizeFont.Widthfor-statementfork-statementforward-subprogramdeclarationfrealstr-real-to-stringfunctionfree-statementfunction-declarationfunctionCallget-filestatementgetch-getcharacterproceduregetchar-getcharacterfunctiongetenv-getenvironmentfunctiongetpid-getprocessidfunctiongetpriority-functionGUIGUI.AddLineGUI.AddTextGUI.AlertGUI.Alert2GUI.Alert3GUI.AlertFullGUI.ChooseGUI.ChooseFullGUI.ClearTextGUI.CloseWindowGUI.CreateButtonGUI.CreateButtonFullGUI.CreateCanvasGUI.CreateCanvasFullGUI.CreateCheckBoxGUI.CreateCheckBoxFullGUI.CreateFrameGUI.CreateHorizontalScrollBarGUI.CreateHorizontalScrollBarFullGUI.CreateHorizontalSliderGUI.CreateLabelGUI.CreateLabelFullGUI.CreateLabelledFrame
![Page 6: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/6.jpg)
GUI.CreateLineGUI.CreateMenuGUI.CreateMenuItemGUI.CreateMenuItemFullGUI.CreatePictureGUI.CreatePictureButtonGUI.CreatePictureButtonFullGUI.CreatePictureRadioButtonGUI.CreatePictureRadioButtonFullGUI.CreateRadioButtonGUI.CreateRadioButtonFullGUI.CreateTextBoxGUI.CreateTextBoxFullGUI.CreateTextFieldGUI.CreateTextFieldFullGUI.CreateVerticalScrollBarGUI.CreateVerticalScrollBarFullGUI.CreateVerticalSliderGUI.DisableGUI.DisposeGUI.Draw...GUI.EnableGUI.FontDrawGUI.GetCheckBoxGUI.GetEventTimeGUI.GetEventWidgetIDGUI.GetEventWindowGUI.GetHeightGUI.GetMenuBarHeightGUI.GetScrollBarWidthGUI.GetSliderValueGUI.GetTextGUI.GetVersionGUI.GetWidthGUI.GetXGUI.GetYGUI.HideGUI.HideMenuBarGUI.OpenFile
![Page 7: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/7.jpg)
GUI.OpenFileFullGUI.Pic...GUI.ProcessEventGUI.QuitGUI.RefreshGUI.SaveFileGUI.SaveFileFullGUI.SelectRadioGUI.SetActiveGUI.SetBackgroundColorGUI.SetBackgroundColourGUI.SetCheckBoxGUI.SetDefaultGUI.SetDisplayWhenCreatedGUI.SetKeyEventHandlerGUI.SetLabelGUI.SetMouseEventHandlerGUI.SetNullEventHandlerGUI.SetPositionGUI.SetPositionAndSizeGUI.SetScrollAmountGUI.SetSelectionGUI.SetSizeGUI.SetSliderMinMaxGUI.SetSliderReverseGUI.SetSliderSizeGUI.SetSliderValueGUI.SetTextGUI.SetXORGUI.ShowGUI.ShowMenuBarhandler-exceptionhandlerhasch-hascharacterfunctionid-(identifier)nameofaniteminaprogram#if-usedforconditionalcompilationif-statementimplementby-clauseimplement-clauseimport-list
![Page 8: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/8.jpg)
in-memberofasetinclude-sourcefilesindex-findpatterninstringfunctionindexTypeindirection-operator(@)infix-operatorinherit-inheritanceclauseinit-arrayinitializationInputInput.getchInput.getcharInput.haschInput.KeyDown-getkeyboardstateInput.Pause-pauseforkeystrokeint-integertypeintn-n-byteintegertypeintreal-integer-to-realfunctionintstr-integer-to-stringfunctioninvariant-assertionJoystickJoystick.GetInfoKeyboardlength-ofastringfunctionLimitsln-naturallogarithmfunctionlocate-procedurelocatexy-graphicsprocedureloop-statementlower-boundMathmax-maximumfunctionmaxcol-maximumcolumnfunctionmaxcolor-graphicsfunctionmaxcolour-graphicsfunctionmaxint-maximumintegerfunctionmaxnat-maximumnaturalnumberfunctionmaxrow-maximumrowfunctionmaxx-graphicsfunctionmaxy-graphicsfunction
![Page 9: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/9.jpg)
min-minimumfunctionminint-minimumintegerfunctionminnat-minimumnaturalnumberfunctionmod-modulooperatormodule-declarationmonitor-declarationMouseMouse.ButtonChooseMouse.ButtonMovedMouse.ButtonWaitMouse.WheremousewhereMusicMusic.PlayMusic.PlayFileMusic.PlayFileStopMusic.SoundMusic.SoundOffnamed-typenargs-numberofargumentsnat-naturalnumbertypenatn-n-bytenaturalnumbertypenatreal-naturalnumbertorealfunctionnatstr-natural-number-to-stringfunctionNetNet.BytesAvailableNet.CharAvailableNet.CloseConnectionNet.HostAddressFromNameNet.HostNameFromAddressNet.LineAvailableNet.LocalAddressNet.LocalNameNet.OpenConnectionNet.OpenURLConnectionNet.TokenAvailableNet.WaitForConnectionnew-statementnil-pointertoacollection
![Page 10: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/10.jpg)
not-true/false(boolean)operatorobjectclass-ofapointeropaque-typeopen-filestatementor-operatorord-character-to-integerfunctionparallelget-parallelportfunctionparallelput-parallelportprocedureparamDeclaration-parameterdeclarationpause-statementPCPC.ParallelGetPC.ParallelPutpervasive-declarationmodifierPicPic.BlendPic.BlurPic.DrawPic.DrawFramesPic.DrawFramesBackPic.DrawSpecialPic.DrawSpecialBackPic.FileNewPic.FileNewFramesPic.FlipPic.FramesPic.FreePic.HeightPic.MirrorPic.NewPic.RotatePic.SavePic.ScalePic.ScreenLoadPic.ScreenSavePic.SetTransparentColorPic.SetTransparentColourPic.Widthplay-procedure
![Page 11: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/11.jpg)
playdone-functionpointer-typepost-assertionpre-assertionprecedence-ofoperatorspred-predecessorfunctionprefix-operatorprocedure-declarationprocedureCall-statementprocess-declarationprogram-a(main)programput-statementquit-failstatementRandRand.IntRand.NextRand.RealRand.ResetRand.SeedRand.Setrand-randomrealnumberprocedurerandint-randomintegerprocedurerandnext-procedurerandomize-procedurerandseed-procedureread-filestatementreal-therealnumbertyperealn-n-byterealnumbertyperealstr-real-to-stringfunctionrecord-typeregister-usemachineregisterrem-remainderoperatorrepeat-makecopiesofstring:functionresult-statementreturn-statementRGBRGB.AddColorRGB.AddColourRGB.GetColor
![Page 12: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/12.jpg)
RGB.GetColourRGB.maxcolorRGB.maxcolourRGB.SetColorRGB.SetColourround-real-to-integerfunctionscalar-typeseek-(file)statementself-pointertocurrentobjectseparator-betweentokensinaprogramset-typesetConstructorsetpriority-proceduresetscreen-graphicsprocedureshl-shiftleftoperatorshr-shiftrightoperatorsign-functionsignal-wakeupaprocessstatementsimutime-simulatedtimefunctionsin-sinefunction(radians)sind-sinefunction(degrees)sizeof-sizeofatypesizepic-graphicsfunctionskip-usedingetstatementskip-usedinputstatementsound-statementSpriteSprite.AnimateSprite.ChangePicSprite.FreeSprite.HideSprite.NewSprite.SetFrameRateSprite.SetHeightSprite.SetPositionSprite.Showsqrt-squarerootfunctionstandardTypestatement
![Page 13: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/13.jpg)
statementsAndDeclarationsStrStreamStream.eofStream.FlushStream.FlushAllstring-typestring-comparisonstrint-string-to-integer:functionstrintok-string-to-integer:functionstrnat-stringtonaturalnumberfunctionstrnatok-stringtonaturalnumberfunctionstrreal-string-to-realfunctionstrrealok-string-to-realfunctionsubprogramHeadersubprogramTypesubrangeTypesubstring-ofanotherstringsucc-successorfunctionSysSys.ExecSys.FetchArgSys.GetComputerNameSys.GetEnvSys.GetPidSys.GetUserNameSys.Nargssysclock-millisecsusedproceduresystem-statementtag-statementtakepic-graphicsproceduretell-filestatementTextText.ClsText.ColorText.ColorBackText.ColourText.ColourBackText.Locate
![Page 14: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/14.jpg)
Text.LocateXYText.maxcolText.maxrowText.WhatColText.WhatColorText.WhatColorBackText.WhatColourText.WhatColourBackText.WhatRowTimeTime.DateTime.DateSecTime.DelayTime.ElapsedTime.ElapsedCPUTime.PartsSecTime.SecTime.SecDateTime.SecPartstime-timeofdayasastringproceduretoken-ininputtrue-booleanvalue(notfalse)type-declarationTypeConvtypeSpec-typespecificationunchecked-compilerdirectiveunion-typeunit-filecontainingmodule,monitor,orclassunqualified-exportupper-boundvar-declarationvariableReference-useofavariableViewView.ClipAddView.ClipOffView.ClipSetView.maxcolorView.maxcolourView.maxx
![Page 15: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/15.jpg)
View.maxyView.SetView.Update-flicker-freeanimationView.WhatDotColorView.WhatDotColourwait-blockaprocessstatementwallclock-secondssince1/1/1970procedurewhatcol-cursorpositionfunctionwhatcolor-textcolorgraphicsfunctionwhatcolorback-colorofbackgroundfunctionwhatcolour-textcolorgraphicsfunctionwhatcolourback-colorofbackgroundfunctionwhatdotcolor-graphicsfunctionwhatdotcolour-graphicsfunctionwhatrow-cursorpositionfunctionWindowWindow.CloseWindow.GetActiveWindow.GetPositionWindow.GetSelectWindow.HideWindow.OpenWindow.SelectWindow.SetWindow.SetActiveWindow.SetPositionWindow.ShowWindow.Updatewrite-filestatementxor-exclusive"or"operator
![Page 16: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/16.jpg)
abs absolutevaluefunction
Syntax abs(expn)
DescriptionTheabsfunctionisusedtofindtheabsolutevalueofanumber(theexpn).Forexample,abs(-23)is23.
Example
Thisprogramoutputs9.83.
varx:real:=-9.83
putabs(x)%Outputs9.83
Execute
Details
Theabsfunctionacceptsnumbersthatareeitherint'sorreal's.Thetypeoftheresultisthesametypeastheacceptednumber.Theabsfunctionisoftenusedtoseeifonenumberxiswithinagivendistancedofanothernumbery;forexample:
ifabs(x-y)<=dthen…
Seealso predefinedunitMath.
![Page 17: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/17.jpg)
addr addressofavariable
Syntax addr(reference)
Description
Theaddrattributeisusedtofindtheintegeraddressofavariableornonscalarconstant.Thisisimplementation-dependent.Thisaddressmaybeusedinanindirectionoperation@.
Example
Setatobetheaddressofx.
varx:real
vara:addressint:=addr(x)
Details
Thevalueoftheaddressproducedbyaddrisoftypeaddressint,anintegertypewhoserangeisthatoftheunderlyingmemoryaddresses.
Theconceptofanaddressisimplementation-dependent.Forexample,anoptimizingcompilercoulddeterminethatavariabledoesnotrequirespacebecausetheprogramcouldbecomputedwithoutthevariablewithnochangeinoutput.However,inmostimplementations,typeshaveapredictablesizeandvariablesofthattypeoccupythatnumberofbytesinmemory.
Seealso
theindirectionoperator@,cheat,explicitIntegerConstant(howtowritehexadecimalconstants),andpointertype(inparticularuncheckedpointertype).Seealsosizeof,whichreturnsthesizeofavariable.
![Page 18: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/18.jpg)
addressint type
Syntax addressint
Description
Theaddressint(addressinteger)typeisanintegertypewhoserangeofvalueisthesameasthatoftheunderlyingcomputer.Thisrangeis,byitsnature,implementation-dependent.On32-bitarchitectures,itiscommonlythesamerangeasnat4(4-bytenaturalnumber).
Example
Recordrcontainsthreefields,oneofwhichhastypechar(28).Variableaisanintegerwhoserangeofvaluesisthesameastheaddressesoftheunderlyingcomputer.ThisassignsBtotheseventhcharacterofarecordoftyperwhichisassumedtobelocatedatabsoluteaddress
typer:
record
i:int
c28:char(28)
c11:char(11)
endrecord
vara:addressint%Aninteger
…%aisassignedanintegervalue
r@(a).c28(7):='B'%Useindirectionoperator
Details
Althoughaddressintiscalledanintegertype,itiscommonlyequivalenttoanaturaltypesuchasnat4(for32-bitmachines).
Becarefulnottoconfuseaddressintwithpointertypes.InlowlevellanguagessuchasassemblerandC,addressesandpointersarethesame.InTuring,however,apointerisahighlevelconceptthatismoreabstractthanamachineaddress.ATuringpointerisareferencetoanobject,andtherepresentationofthisreferencedependsupontheimplementation.IncurrentTuringimplementations,pointers(whicharebydefaultchecked)arerepresentedasatimestamp(auniquenumber)togetherwithanaddress.Thetimestampisusedtomakesurethatthepointeractuallylocatesanobject.Therearealsouncheckedpointers.Anuncheckedpointer'sinternalrepresentationisamachineaddress.Youcanusetypecheats(adangerousfeature)totranslatebetweenaddressintanduncheckedpointers.Thisismeaningfulincurrent
![Page 19: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/19.jpg)
implementations.
Seealso
theindirectionoperator@,cheat,explicitIntegerConstant(howtowritehexadecimalconstants),andpointertype(inparticularuncheckedpointertype).Seealsoaddr,whichreturnstheaddressofavariable.
![Page 20: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/20.jpg)
all allmembersofaset
Syntax setTypeName(all)
DescriptionGivenasettypenamedS,thesetofallofthepossibleelementsofSiswrittenS(all).
ExampletypesmallSet:setof0..2
varx:smallSet:=smallSet(all)
%Setxcontainselements0,1and2
Seealso settypefordetailsaboutsets.
![Page 21: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/21.jpg)
and operator
Syntax AandB
Description
Theand(boolean)operatoryieldsaresultoftrueif,andonlyif,bothoperandsaretrue.Theandoperatorisashortcircuitoperator.Forexample,ifAisfalseinAandBthenBisnotevaluated.
Examplevarsuccess:boolean:=false
varcontinuing:=true%Thetypeisboolean
…
continuing:=continuingandsuccess
Details
Thecontinuingvariableissettotrueif,andonlyif,bothcontinuingandsuccessaretrue.SinceTuringusesshortcircuitoperators,oncecontinuingisfalse,successwillnotbelookedat.
Theandoperatorcanalsobeappliedtonaturalnumbers.Theresultisthenaturalnumberthatisthebit-wiseandoftheoperands.Seenat(naturalnumber).
Example
Thismasksouttheeverythingbutthelowertwobytesofnumber.
varnumber:nat:=16#ABCD
varmask:nat:=16#FF
putnumberandmask%Outputs205(CD16)
Seealso
boolean(whichdiscussestrue/falsevalues),explicitTrueFalseConstant(whichdiscussesthevaluestrueandfalse),precedenceandexpn(expression).
![Page 22: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/22.jpg)
anyclass theancestorofallclasses
Syntax anyclass
Description
Thereisapredefinedclasscalledanyclass,whichistherootoftheexpansiontree.AllclassesthatdonothaveinheritlistsareconsideredtobeexpansionsofThemainpurposeofanyclassistoallowpointersthatcanlocateobjectsofanyclass.
Example
Hereisthedeclarationofapointerpthatcanlocateanobjectofanyclass.
varp:pointertoanyclass%Shortform:varp:^anyclass
varq:pointertostack%Shortform:varq:^stack
newq%Createastackobject
p:=q%Legalbecausep'sclass
%isanancestorofq'sclass
Assumingstackisaclass,thiscreatesastackobjectandplacesitslocationinThecompilerwillnotallowacalltostack'sexportedsubprogramsusingin:
p->push(14)%ILLEGAL!anyclasshasnooperations
Anassignmentfromptoqislegal,asin:
q:=p%Checksthatplocatesastackobject(ordescendant)
Thisimpliesaruntimechecktomakesurethatplocatesanobjectthatisadescendantofastack).
Hereisawaytocallasubprogramexportedfromstackusingp:
stack(p).push(14)%Checksthatplocatesastackobject
Thischeckstoseethatplocatesastackobject(oradescendant)beforecallingthestackoperationpush.
Details
Itislegaltocreateobjectsoftheclasscalledanyclass,butthisisnotofmuchuse,becausethereisnothingyoucandowiththeseobjects(theyhavenooperations).Itislegaltoassigntheseobjectstootherobjectsofthesameclass(anyclassthisaccomplishesnothing.
![Page 23: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/23.jpg)
Seealso
objectclass,whichtakesaclasspointerandproducestheclassoftheobjectlocatedbythepointer.Thisisusedfortestingtodeterminetheclassoftheobjectlocatedbyapointer.
Seealsoclass.Seealsoexportlist,importlist,inheritlist,implementimplementbylist.
![Page 24: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/24.jpg)
arccos arccosinefunction(radians)
Syntax arccos(r:real):real
DescriptionThearccosfunctionisusedtofindthearccosineofavalue.Theresultisgiveninradians.Forexample,arccos(0.5)isp/3.
Example
Thisprogramprintsoutthearccosineof-1through1inradians.
fori:-4..4
constarg:=i/4
put"Arccosineof",arg,"is",
arccos(arg),"radians"
endfor
Execute
Seealso
thearcsinandarctanfunctionsforcalculatingarcsineandarctangent.
thearccosdfunctionwhichfindsthearccosineofavaluewiththeresultgivenindegrees.(2pradiansarethesameas360degrees.)
SeealsopredefinedunitMath.
![Page 25: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/25.jpg)
arccosd arccosinefunction(degrees)
Syntax arccosd(r:real):real
DescriptionThearccosdfunctionisusedtofindthearccosineofananglegivenindegrees.Forexample,arccosd(0.5)is60.
Example
Thisprogramprintsoutthearccosineofvaluesfrom-1to1indegrees.
fori:-4..4
constarg:=i/4
put"Arccosineof",arg,"is",
arccosd(arg),"degrees"
endfor
Execute
Seealso
thearcsindandarctandfunctionsforcalculatingarcsineandarctangent
thearccosfunctionwhichfindsthearccosineofavaluewiththeresultgiveninradians.(2pradiansarethesameas360degrees.)
SeealsopredefinedunitMath.
![Page 26: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/26.jpg)
arcsin arcsinefunction(radians)
Syntax arcsin(r:real):real
DescriptionThearcsinfunctionisusedtofindthearcsineofavalue.Theresultisgiveninradians.Forexample,arcsin(0.5)isp/6.
Example
Thisprogramprintsoutthearcsineof-1through1inradians.
fori:-4..4
constarg:=i/4
put"Arcsineof",arg,"is",
arcsin(arg),"radians"
endfor
Execute
Seealso
thearccosandarctanfunctionsforcalculatingarccosineandarctangent.
thearcsindfunctionwhichfindsthearcsineofavaluewiththeresultgivenindegrees.(2pradiansarethesameas360degrees.)
SeealsopredefinedunitMath.
![Page 27: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/27.jpg)
arcsind arcsinefunction(degrees)
Syntax arcsind(r:real):real
DescriptionThearcsindfunctionisusedtofindthearcsineofananglegivenindegrees.Forexample,arcsind(0.5)is30.
Example
Thisprogramprintsoutthearcsineofvaluesfrom-1to1indegrees.
fori:-4..4
constarg:=i/4
put"Arcsineof",arg,"is",
arcsind(arg),"degrees"
endfor
Execute
Seealso
thearccosdandarctandfunctionsforcalculatingarccosineandarctangent
thearcsinfunctionwhichfindsthearcsineofavaluewiththeresultgiveninradians.(2pradiansarethesameas360degrees.)
SeealsopredefinedunitMath.
![Page 28: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/28.jpg)
arctan arctangentfunction(radians)
Syntax arctan(r:real):real
DescriptionThearctanfunctionisusedtofindthearctangentofavalue.Theresultisgiveninradians.Forexample,arctan(1)isp/4.
Example
Thisprogramprintsoutthearctangentof0through3inradians.
fori:0..12
constarg:=i/4
put"Arctangentof",arg,"is",
arctan(arg),"radians"
endfor
Execute
Seealso
thearcsinandarccosfunctionsforcalculatingarcsineandarccosine
thearctandfunctionwhichfindsthearctangentofavaluewiththeresultgivenindegrees.(2pradiansarethesameas360degrees.)
SeealsopredefinedunitMath.
![Page 29: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/29.jpg)
arctand arctangentfunction(degrees)
Syntax arctand(r:real):real
DescriptionThearctandfunctionisusedtofindthearctangentofananglegivenindegrees.Forexample,arctand(0)is0.
Example
Thisprogramprintsoutthearctangentofvaluesfrom0to3indegrees.
fori:0..12
constarg:=i/4
put"Arctangentof",arg,"is",
arctand(arg),"degrees"
endfor
Execute
Seealso
thearcsindandarccosdfunctionsforcalculatingarcsineandarccosine
thearctanfunctionwhichfindsthearctangentofavaluewiththeresultgiveninradians.(2pradiansarethesameas360degrees.)
SeealsopredefinedunitMath.
![Page 30: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/30.jpg)
array type
Syntax arrayindexType{,indexType}oftypeSpec
Description
Anarrayconsistsofanumberofelements.ThetypeSpecgivesthetypeoftheseelements.Thereisoneelementforeachiteminthe(combinationsof)range(s)oftheindexType(s).Inthefollowingexample,thearraycalledmarksconsistsof100elements,eachofwhichisaninteger.
Example
varmarks:array1..100ofint
…
varsum:int:=0
fori:1..100%Adduptheelementsofmarks
sum:=sum+marks(i)
endfor
Execute
Details
Intheaboveexample,marks(i)isthei-thelementofthemarksarray.Wecallorsubscriptofmarks.InTuring,asubscriptissurroundedbyparentheses,notbysquarebracketsasisthecaseinthePascalorC-likelanguages.
Example
Thepricesarrayshowshowanarraycanhavemorethanonedimension.Thisarrayhasonedimensionfortheyear(1988,1989or1990)andanotherforthemonth(1..12).Thereare36elementsofthearray,oneforeachmonthofeachyear.
varprice:array1988..1990,1..12ofint
…
varsum:int:=0
foryear:1988..1990%Foreachyear
formonth:1..12%Foreachmonth
sum:=sum+price(year,month)
endfor
endfor
![Page 31: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/31.jpg)
Execute
Details
EachindexTypemustcontainatleastoneitem.Therange1..0,forexample,wouldnotbeallowed.Eachindextypemustbeasubrangeoftheintegers,characters(thetype),orofanenumeratedtype,an(entire)enumeratedtype,thechartype,oranamedtypewhichisoneofthese.
Arrayscanalsobedeclaredintheform
vara:array1..*oftypeSpec:=init(…)
Theupperboundofawillbecomputedfromthecountoftheinitializingvalues.Bothvarandconstarrayscanbedeclaredthisway.Anarrayvariable/constantdeclaredwith"*"asanupperboundmusthaveaninitializinglist.Onlyonedimensionalarraysmaybedeclaredinthisform.
Arrayscanbeassignedasawhole(toarraysofanequivalenttype),buttheycannotbecompared.
Anarraycanbeinitializedinitsdeclarationusinginit.Fordetails,seedeclarations.
Example
Inthisexample,thesizeofthearrayisnotknownuntilruntime.
varhowMany:int
gethowMany
varheight:array1..howManyofreal
…readinalltheelementsofthisarray…
functiontotal(a:array1..*ofreal):real
varsum:real:=0
fori:1..upper(a)
sum:=sum+a(i)
endfor
resultsum
endtotal
put"Sumoftheheightsis",total(height)
![Page 32: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/32.jpg)
Execute
Details
Theendsoftherangeofasubscriptarecalledtheboundsofthearray.Ifthesevaluesarenotknownuntilruntime,thearrayissaidtobedynamic.Intheaboveexample,heightisadynamicarray.Dynamicarrayscanbedeclaredasvariables,asinthecaseforheight.However,dynamicarrayscannotappearinsideothertypessuchasrecords,andcannotbenamedtypes.Dynamicarrayscannotbeassignedandcannotbeinitializedusinginit.
Intheaboveexample,upper(a)returnsthesizeofa.Seealsoupper
Inthedeclarationofanarrayparameter,theupperboundcanbegivenasanasterisk(asisdoneintheaboveexample.Thismeansthattheupperboundistakenfromthatofthecorrespondingactualparameter(fromheightinthisexample).
Youcanhavearraysofothertypes,forexamplearraysofrecord.Ifrecords,thenR(i).fisthewaytoaccesstheffieldofthei-thelementofarray
Details
Arrayscanalsobemaderesizeable.Thisisdoneusingtheflexibledeclarationsyntaxis:
varname:flexiblearrayindexType{,indexType
Theindicesmayhavecompile-timeorrun-timeupperbounds(thelowerboundmustbecompile-time).Theupperboundscanbechangedbyusing:
newname,newUpper1{,newUpper2}
Theexistingarrayentrieswillretaintheirvalues,exceptthatanyindexmadesmallerwillhavethecorrespondingarrayentrieslost.Anyindexmadelargerwillhavethenewarrayentriesuninitialized(ifapplicable).
Additionally,theupperbound(bothinthedeclarationandthenewstatement)canbemadeonelessthanthelowerbound.Thiseffectivelymakesanarraythatcontains0
![Page 33: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/33.jpg)
elements.Itcanlaterbeincreasedinsizewithanothernew.
Inthecurrentimplementation(2002),withamulti-dimensionalarraywithanon-zeronumberoftotalelements,itisarun-timeerrortochangeanybutthefirstdimension(unlessoneofthenewupperboundsisonelessthanthecorrespondinglowerbound,giving0elementsinthearray)asthealgorithmtorearrangetheelementmemorylocationshasnotyetbeenimplemented.
Currently,onlyvariablescanbedeclaredinthisform.Thereisnoflexiblearrayparametertype,althoughaflexiblearraycanbepassedtoanarrayparameterwith“astheupperbound.
Example
Inthisexample,thearrayisresizedtofitthenumberofelementsinthefile.
functiongetLines(fileName:string):int
varf,numLines:int
varline:string
open:f,fileName,get
numLines:=0
loop
exitwheneof(f)
get:f,line:*
numLines+=1
endloop
close:f
resultnumLines
endgetLines
procedurereadFile(varlines:array1..*ofstring
varf:int
varline:string
open:f,fileName,get
fori:1..upper(lines)
get:f,lines(i):*
endfor
close:f
endreadFile
varlines:flexiblearray1..0ofstring
newlines,getLines("text.dat")
readFile(lines,"text.dat")
fori:1..upper(lines)
putlines(i)
endfor
![Page 34: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/34.jpg)
Execute
Seealsoinittoinitializearrays,flexibletodeclareresizablearraysandindexTypeindexofanarray.
![Page 35: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/35.jpg)
assert statement
Syntax asserttrueFalseExpn
Description
Anassertstatementisusedtomakesurethatacertainrequirementismet.ThisrequirementisgivenbythetrueFalseExpn.ThetrueFalseExpnisevaluated.Ifitistrue,alliswellandexecutioncontinues.Ifitisfalse,executionisterminatedwithanappropriatemessage.
ExampleMakesurethatnispositive.
assertn>0
Example
ThisprogramassumesthatthetextFileexistsandcanbeopened,inotherwords,thattheopenwillsetthefileNumbertoapositivestreamnumber.Ifthisisnottrue,theprogrammerwantstheprogramhaltedimmediately.
varfileNumber:int
open:fileNumber,"textFile",read
assertfileNumber>0
Details
InsomeTuringsystems,checkingcanbeturnedoff.Ifcheckingisturnedoff,assertstatementsmaybeignoredandasaresultnevercausetermination.
![Page 36: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/36.jpg)
assignability ofexpressiontovariable
Description
Avalue,suchas24,isassignabletoavariable,suchasi,ifcertainrulesarefollowed.Theserules,givenindetailbelow,arecalledtheassignabilityrules.Theymustbefollowedinassignmentstatementsaswellaswhenpassingvaluestonon-varparameters.
Example
vari:int
i:=24%24isassignabletoi
varwidth:0..319
width:=3*i%3*iisassignabletowidth
vara:array1..25ofstring
a(i):="Ralph"%"Ralph"isassignabletoa(i)
varname:string(20)
name:=a(i)%a(i)isassignabletoname
…
varb:array1..25ofstring
b:=a%Arrayaisassignabletob
typepersonType:
record
age:int
name:string(20)
endrecord
varr,s:personType
…
s:=r%Recordrisassignabletos
Theexpressionontherightof:=mustbeassignabletothevariableontheleft.Anexpressionpassedtoanon-varparametermustbeassignabletothecorrespondingparameter.
Anexpressionisdefinedtobeassignabletoavariableifthetworoottypesareequivalentorifanintegervalueisbeingassignedtoarealvariable(inwhichcasetheintegervalueisautomaticallyconvertedtoreal).Twotypesareconsideredtobeequivalentiftheyareessentiallythesametype(seeequivalenceforthedetaileddefinitionofthisterm).
![Page 37: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/37.jpg)
Details
Inmostcasesaroottypeissimplythetypeitself.Theexceptionsaresubrangesandstrings.Theroottypeofasubrange,suchas0..319,isthetypeofitsbounds(inttypeinthisexample).Theroottypeofastring,suchasthetypestring(9),isthemostgeneralstringtype,namelystring.
Whenasubrangevariable,suchaswidth,isusedasanexpression,forexampleontherightsideofanassignmentstatement,itstypeisconsideredtobetheroottype(integerinthiscase)ratherthanthesubrange.Whenanexpressionisassignedtoasubrangevariablesuchaswidth,thevalue(3*iinthisexample)mustlieinthesubrange.Analogously,anystringvariableusedinanexpressionisconsideredtobeofthemostgeneraltypeofstring.Whenastringvalueisassignedtoastringvariable,itslengthmustnotexceedthevariable'smaximumlength.
Turing'sassignabilityruleappliestocharactersandstringsinthisway.Acharvaluecanbeassigned(orpassedtoannonvarparameter)withautomaticconversiontoachar(1)variableandviceversa.Stringvaluesoflength1canbeassignedtocharvariables.Character,thatischar,valuescanbeassignedtostringvariables,yieldingastringoflength1.Stringvaluesoflengthnareassignablewithautomaticconversiontochar(n)variables.Valuesoftypechar(n)canbeassignedwithautomaticconversiontostringvariables.
Turing'sassignabilityruleappliestopointerstoclassesinthisway.ApointerthatlocatesanobjectcreatedasclassE,canbeassignedtoapointertoclassBonlyifBisanancestorof(orthesameas)E.Forexample,apointertoanobjectthatisastackWithDepthcanbeassignedtoapointertostack,wherestackWithDepthisachildofstack,butnotviceversa.Thepointernilcanbeassignedtoanypointervariable,butthevaluenil(C)canonlybeassignedtoapointertoanancestorofC.
Objectsofclassescanbeassignedtoeachotheronlyifbothwerecreatedasthesameclass.
![Page 38: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/38.jpg)
assignment statement
Syntax
AnassignmentStatementis:
variableReference:=expn
DescriptionAnassignmentstatementcalculatesthevalueoftheexpression(expnassignsthatvaluetothevariable(variableReference).
Example
vari:int
i:=24%Variableibecomes24
vara:array1..25ofstring
a(i):="Ralph"%Thei-thelementofabecomes
…
varb:array1..25ofstring
b:=a%Arraybbecomes(isassigned)arraya
Details
Theexpressionontherightof:=mustbeassignabletothevariableontheleft.Forexample,intheabove,anyintegervalue,suchas24,isassignabletoi,butarealvaluesuchas3.14wouldnotbenotassignabletoi.Entirearrays,recordsandunionscanbeassigned.Forexample,intheabove,arrayaisassignedtoarrayb.Seeassignabilityfortheexactrulesofallowedassignments.
Youcannotassignanewvaluetoaconstant(const).
Thereareshortformsthatallowyoutowriteassignmentstatementsmorecompactly.Forexample,
i:=i+1
canbeshortenedto
i+=1
InTuring,thereareshortformsforcombining+,=and*withassignment.Forexample,i*=2doublesi.
Therearealsoshortformstoallowanybinaryoperatortobecombined
![Page 39: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/39.jpg)
withassignment.Forexample,ishl=2shiftsiby2totheleft.
![Page 40: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/40.jpg)
begin statement
Syntax
AbeginStatementis:
begin statementsAndDeclarations end
Description
Abeginstatementlimitsthescopeofdeclarationsmadewithinittotheconfinesofthebegin/endblock.InTuring,beginisrarelyused,becausedeclarationscanappearwhereverstatementscanappear,andbecauseeverystructuredstatementsuchasifendswithanexplicitend.
Examplebegin
varbigArray:array1..2000ofreal
…bigArraywillexistonlyinsidethisbeginstatement…
end
Details
InPascalprograms,beginstatementsarequitecommonbecausetheyarerequiredforgroupingtwoormorestatements,forexample,togroupthestatementsthatfollowthen.ThisisnotnecessaryinTuringaswhereeveryoucanwriteasinglestatement,youcanalsowriteseveralstatements.
![Page 41: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/41.jpg)
bind declaration
Syntax
AbindDeclarationis:
bind[var]idtovariableReference {,[var]idtovariableReference}
Description
Thebinddeclarationcreatesanewname(ornames)foravariablereference(orreferences).Youareallowedtochangethenameditemonlyifyouspecifyvar.Youcanalsobindtonamednonscalarconstants.
WhilevariableReferenceisbounditdoesnotdisappearinthescope.
Example
Renamethen-thelementofarrayAsoitiscalleditemandthenchangethiselementto15.
bindvaritemtoA(n)
item:=15
Details
Thescopeoftheidentifier(itemabove)beginswiththebinddeclarationandlaststotheendofthesurroundingprogramorstatement(ortotheendofthesurroundingpartofacaseorifstatement).Duringthisscope,achangetoasubscript(nabove)thatoccursinthevariablereferencedoesnotchangetheelementtowhichtheidentifierrefers.
Youarenotallowedtousebindattheoutermostlevelofthemainprogram(exceptnestedinsidestatementssuchasif)orattheoutermostlevelinamodule.
Youcanalsooptionallyusetheregisterkeywordtorequestthatthebindbedoneusingamachineregister.ThesyntaxforbindDeclarationisactually:
bind[var][register]idtovariableReference {,[var][register]idtovariableReference}
![Page 42: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/42.jpg)
Inthecurrent(2002)implementation,programsareruninterpretivelyusingpseudo-codeandtheregisterkeywordisignored.
![Page 43: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/43.jpg)
bits extraction
Syntax bits(expn,subrange)
Description
Thebitsoperatorisusedtoextractasequenceofbitsfromanatural(non-negative)numberexpression.Thebitsarenumberedfromrighttoleftas0,1,2…
Example
Setbits2and1(thirdandsecondfromtheright)inthevariabledtobe01.Wefirstsetbtobethebitstring1100.
typeT12:1..2%Usetospecifybitrange
vard:nat2:=2#1100%Twobytenaturalnumber
%Atthispointbits(d,T12)=2#10
bits(d,T12):=2#01
%Atthispointd=2#1010
Example
Setbit7invariablentobe1.Asaresult,nwillequal2#10000000.
varn:nat1:=0%Aonebytevariablesettozero
bits(n,7):=1%nnowcontainsthepattern10000000
Details
Theformofsubrangemustbeoneof:
(a) typeSpec %Subrangetype (b) compileTimeIntegerExpression
Inform(a)thesubrangetypespecifiesarangefromLtoM(forleastmostsignificant).ThisisalittleconfusingbecausethesubrangeiswrittenMwithLontheleftandMontheright,butinanumber,theleastsignificantbitisontherightandthemostsignificantisontheleft.Thesubrangetypecanbeeitherthenameofatype,forexampleT12,oranexplicitsubrange,forexample3..7.Thevaluesintheexplicitsubrangemustbecompiletimevalues.
Form(b)representstherangen..nwherenisthenon-negativevalueoftheexpression.Inotherwords,bothLandMequaln.Theexpressioncanbeanynon-negativeintegervalueornaturalnumbervalue.
![Page 44: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/44.jpg)
Iftheexpressionexpnisavariablereference,thebitsoperationcanbeassignedto,butcannotbepassedto,avarparameter.Forexample,intheabove,bits(d,T12)hasthevalue2#01assignedtoit.Forthisassignmenttobeallowed,theexpressionexpnmustbeanaturalnumbertype(natnat2ornat4).
Seealso
explicitIntegerConstant(fordescriptionofconstantssuchas16#FFFF)andthefollowingfunctionsthatconvertonetypetoanotherinamachine-independentmanner:ord,chr,intstr,strint,natstr,andstrnat.Seealsoandshl(shiftrightandleft).
![Page 45: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/45.jpg)
body declaration
Syntax
AbodyDeclarationisoneof:
(a) bodyprocedureprocedureId statementsAndDeclarations endprocedureId (b) bodyfunctionfunctionId statementsAndDeclarations endfunctionId (c) bodyprocedureid[(paramDeclaration {,paramDeclaration})] statementsAndDeclarations endid (d) bodyfunctionid[([paramDeclaration{, paramDeclaration}])]:typeSpec statementsAndDeclarations endid
Description
Abodydeclarationisusedtoresolveeitheraforwardsubprogramoradeferredsubprogram.
Youdeclareaprocedureorfunctionforwardwhenyouwanttodefineitsheaderbutnotitsbody.Thisisthecasewhenoneprocedureorfunctioncallsanother,whichinturncallsthefirst.Thissituationiscalledmutualrecursion.Theuseofforwardisnecessaryinthiscasebecauseeveryitemmustbedeclaredbeforeitcanbeused.Theforwarddeclarationmustbefollowedbyabodydeclarationforthesameprocedureorfunction.Fordetails,seeforwarddeclarations.
Whenaprocedureorfunctioninaclassisdeclaredtobedeferred(orsimplyexportedfromtheclass),itcanberesolved
![Page 46: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/46.jpg)
oroverriddenafterwardbygivingitsbodyfurtherdowninthatclassorindescendantclasses.Theoverridingproceduremustusethekeywordbody.Seeclassor"implementby"forexamples.
Details
Youcanspecifytheparameterandreturnvaluesofthesubprograminthebodydeclaration.However,thenamesandtypesoftheparametersandreturnvaluesmustmatchtheinitialdeclarationexactly,orawarningresultsandtheparameterlistandreturnvaluesfromthebodydeclarationareignored.
Example
TheexamplegivenhereispartofacompleteTuringprogramthatincludesanexplanationofforwarddeclarations.
vartoken:string
forwardprocedureexpn(vareValue:real)
importforwardterm,vartoken
…otherdeclarationsappearhere…
bodyprocedureexpn
varnextValue:real
term(eValue)%Evaluatet
loop%Evaluate{+t}
exitwhentokennot="+"
gettoken
term(nextValue)
eValue:=eValue+nextValue
endloop
endexpn
Execute
ThesyntaxofabodyDeclarationpresentedabovehasbeensimplifiedbyomittingtheoptionalresultidentifier,importlist,preandpostconditionandinitclause.Seeprocedureandfunctiondeclarationsfordescriptionsoftheseomissions.
The"function"or"procedure"tokeninthedeclarationisnow
![Page 47: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/47.jpg)
Details optional.Inotherwordsthefollowingcodefragmentislegal
forwardprocedurep
…
bodyp
…
endp
Seealso class,forwardandimplementby
![Page 48: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/48.jpg)
boolean true-falsetype
Syntax boolean
Description
Thebooleantypeisusedforvaluesthatareeithertrueorfalse.Thesetrue-falsevaluescanbecombinedbyvariousoperatorssuchasorandand.
Example
varsuccess:boolean:=false
varcontinuing:=true%Thetypeisboolean
…
success:=mark>=60
continuing:=successandcontinuing
ifcontinuingthen…
Details
ThistypeisnamedaftertheBritishmathematician,GeorgeBoole,whoformulatedlawsoflogic.
Theoperatorsfortrueandfalseareand,or,xor,=>,andnot.Fortwotrue/falsevaluesAandB,theseoperatorsaredefinedasfollows:
AandBistruewhenbotharetrue AorBistruewheneitherorbotharetrue AxorBistruewheneitherbutnotbotharetrue
A=>B(AimpliesB)istruewhenbotharetrueorwhenAisfalse
notAistruewhenAisfalse
Theandoperatorhashigherprecedencethanor,soAorBandCmeansAor(BandC).
Theoperatorsor,andand=>areshortcircuitoperators.Forexample,ifAistrueinAorB,Bisnotevaluated.
Details Thebooleantypecanbeusedasanindextoanarray.
Declarationofanarraywithbooleanindex.
![Page 49: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/49.jpg)
Examplevara:arraybooleanofint
a(false):=10
a(true):=20
Details
Theputandgetsemanticsallowput'sandget'sofbooleanvalues.truevalueswillbeoutputas"true"andfalsevalueswillbeoutputas"false".Theonlylegalinputvaluesare"true"and"false",whicharecasesensitive.
SeealsoexplicitTrueFalseConstant(whichdiscussesthevaluestrueandfalse),precedenceandexpn(expression).
![Page 50: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/50.jpg)
break debuggerpausestatement
Syntax break
Description
Onsystemswithadebugger,theenvironment"pauses"whenexecutionreachesthebreakstatement.While"pausing"isenvironmentspecific,ingeneral,theprogramstopsexecutionuntiltheuserpressesthe"Resume"or"Continue"button.Whilepaused,theprogramvariablescanbeinspected,stacktracesdone,etc.
Examplefori:1..100
puti
break
endfor
![Page 51: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/51.jpg)
buttonchoose switchmousemodes
Syntax buttonchoose(choice:string)
Description
Thebuttonchooseprocedureisusedtochangethemodeofthemouse.InTuring,themousecaneitherbein"single-buttonmode"orin"multi-buttonmode".In"single-buttonmode"themouseistreatedasaonebuttonmouse.Abuttonisconsideredpressedwhenanybuttonispressedandreleasedonlywhenallbuttonshavebeenreleased.
InTuring,themousestartsin"single-buttonmode".
Theparameterchoicecanbeoneof"singlebutton","onebutton"(whichswitchthemouseinto"single-buttonmode")or"multibutton"(whichswitchesthemouseinto"multi-buttonmode").
Example
Aprogramthatdisplaysthestatusofthemouseatthetopleftcornerofthescreen.
buttonchoose("multibutton")
varx,y,button,left,middle,right:int
mousewhere(x,y,button)
left:=buttonmod10%left=0or1
middle:=(button-left)mod100%middle=0or10
right:=button-middle-left%right=0or100
ifleft=1then
put"leftbuttondown"
endif
ifmiddle=10then
put"middlebuttondown"
endif
ifright=100then
put"rightbuttondown"
endif
![Page 52: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/52.jpg)
Execute
Seealso
buttonmovedandbuttonwaittogetmouseeventssavedinaqueue.Seealsomousewheretogetthecurrentstatusofmousebutton(s).
SeealsopredefinedunitMouse.
![Page 53: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/53.jpg)
buttonmoved hasamouseeventoccurred
Syntax buttonmoved(motion:string):boolean
Description
Thebuttonmovedfunctionindicateswhetherthereisamouseeventoftheappropriatetypeonthemousequeue.Eventsareeither"up","down","updown"or"downup"events(althoughthe"downup"and"updown"arethesameevent).
Theparametermotionmustbeoneof"up","down","updown"or"downup".Ifaneventofthetyperequestedisinthequeue,buttonmovedreturnstrue.Iftheeventisnotinthequeue,thenbuttonmovedreturnsfalse.
In"single-buttonmode"(wherethemouseistreatedlikeaone-buttonmouse),a"down"eventoccurswheneverallthebuttonsareupandabuttonispressed.An"up"eventtakesplacewhenthelastbuttonisreleasedsothatnobuttonsremainpressed.
In"multi-buttonmode",a"down"eventoccurswheneveranybuttonispressed,andan"up"eventoccurswheneveranybuttonisreleased.
Example
Thisprogramdrawsrandomcirclesonthescreenuntiltheuserclicksthemousebutton,whereuponisstartsdrawingrandomboxes.Clickingthemousebuttonswitchesbetweenthetwo.
varcircles:boolean:=true
loop
varx,y,radius,clr:int
ifbuttonmoved("down")then
varbuttonnumber,buttonupdown:int
buttonwait("down",x,y,buttonnumber,
circles:=notcircles
endif
randint(x,0,maxx)
randint(y,0,maxy)
randint(radius,0,100)
randint(clr,0,maxcolor)
ifcirclesthen
drawfilloval(x,y,radius,radius,clr)
![Page 54: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/54.jpg)
else
drawfillbox(x,y,x+radius,y+radius
endif
endloop
Execute
Example
Thisisanexampledemonstratinghowtocheckforbothcharacterandmouseinputatthesametime.
varch:string(1)
varx,y,btnnum,btnupdown:int
loop
ifhaschthen
getch(ch)
locate(1,1)
put"Thecharacterenteredisa:",ch
endif
ifbuttonmoved("down")then
buttonwait("down",x,y,btnnum,btnupdown
locate(1,1)
put"Thebuttonwasclickedatposition:",
endif
endloop
Execute
Details
buttonmovedcanbethoughtofasthemouseequivalentofhaschinthattheybothcheckforsomethinginaqueueandbothreturnimmediately.
![Page 55: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/55.jpg)
Seealso
buttonwaittogetmouseeventssavedinthequeue.Seealsobuttonchoosetoswitchbetween"single-buttonmode"and"multi-buttonmode".
SeealsopredefinedunitMouse.
![Page 56: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/56.jpg)
buttonwait getamouseeventprocedure
Syntaxbuttonwait(motion:string, varx,y,buttonnumber,buttonupdown:int)
Description
Thebuttonwaitproceduregetsinformationaboutamouseeventandremovesitfromthequeue.
Theparametermotionmustbeoneof"up","down","updown"or"downup".Ifaneventofthetyperequestedisinthequeue,buttonwaitreturnsinstantly.Ifthereisn'tsuchanevent,buttonwaitwaitsuntilthereisoneandthenreturns(muchlikegetchhandleskeystrokes).
In"single-buttonmode"(wherethemouseistreatedlikeaone-buttonmouse),a"down"eventoccurswheneverallthebuttonsareupandabuttonispressed.An"up"eventtakesplacewhenthelastbuttonisreleasedsothatnobuttonsremainpressed.
In"multi-buttonmode",a"down"eventoccurswheneveranybuttonispressed,andan"up"eventoccurswheneveranybuttonisreleased.
Theparametersxandyaresettothepositionofthemousecursorwhenthebuttonwaspressed.Theparameterbuttonnumberissetto1whenin"single-buttonmode".In"multi-buttonmode",itissetto1iftheleftbuttonwaspressed,2ifthemiddlebuttonwaspressed,and3iftherightbuttonwaspressed.Theparameterbuttonupdownissetto1,ifabuttonwaspressedand0ifabuttonwasreleased.
Example
Thisprogramdrawslines.Itstartsalinewheretheuserpressesdownandcontinuestoupdatethelinewhilethemousebuttonishelddown.Whenthebuttonisreleased,thelineispermanentlydrawandtheusercandrawanotherline.
varx,y,buttonnumber,buttonupdown,buttons:
varnx,ny:int
loop
buttonwait("down",x,y,buttonnumber,buttonupdown
nx:=x
![Page 57: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/57.jpg)
ny:=y
loop
drawline(x,y,nx,ny,0)%Erasepreviousline
exitwhenbuttonmoved("up")
mousewhere(nx,ny,buttons)
drawline(x,y,nx,ny,1)%Drawlinetoposition
endloop
buttonwait("up",nx,ny,buttonnumber,buttonupdown
drawline(x,y,nx,ny,2)%Drawlinetofinalposition
endloop
Execute
Example
Inthepreviousexample,whenthemousemoves,thelineiserasedbydrawingitinwhite.Thiserasesanythingthatthelinewasdrawnontopof,includingpreviouslines.Amorecompleteexampleinvolvingtheclickinganddraggingoffilledrectanglesusingthemouseisavailable.Inthisexample,thebackgroundisfullyrestoredwhentherectangleismovedbyusing"xor".
Example
Thisisanexampledemonstratinghowtocheckforbothcharacterandmouseinputatthesametime.
varch:string(1)
varx,y,btnnum,btnupdown:int
loop
ifhaschthen
getch(ch)
locate(1,1)
![Page 58: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/58.jpg)
put"Thecharacterenteredisa:",ch
endif
ifbuttonmoved("down")then
buttonwait("down",x,y,btnnum,btnupdown
locate(1,1)
put"Thebuttonwasclickedatposition:",
endif
endloop
Execute
Details
buttonwaitcanbethoughtofasthemouseequivalentofgetchinthattheybothreadsomethinginaqueueandbothwaituntiltheygetthethingthey'relookingfor.
Seealso
buttonwaittoseeifanappropriateeventisinthequeue.Seealsobuttonchoosetoswitchbetween"single-buttonmode"and"multi-buttonmode".
SeealsopredefinedunitMouse.
![Page 59: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/59.jpg)
case selectionstatement
Syntax
AcaseStatementis:
caseexpnof
{labelcompileTimeExpn{,compileTimeExpn}:
statementsAndDeclarations} [label: statementsAndDeclarations] endcase
Description
Acasestatementisusedtochooseamongasetofstatements(anddeclarations).Onesetischosenandexecutedandthenexecutioncontinuesjustbeyondendcase.
Theexpression(expn)followingthekeywordcaseisevaluatedandusedtoselectoneofthealternatives(setsofdeclarationsandstatements)forexecution.Theselectedalternativeistheonehavingalabelvalueequalingthecaseexpression.Ifnoneareequalandthereisafinallabelwithnoexpression,thatalternativeisselected.
Example
Outputamessagebasedonvalueofmark.
casemarkof
label9,10:put"Excellent"
label7,8:put"Good"
label6:put"Fair"
label:put"Poor"
endcase
![Page 60: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/60.jpg)
Execute
Example
Outputamessagebasedonvalueofname.
casenameof
label"horse","cow":put"Farmanimal"
label"tiger","lion":put"Jungleanimal"
label"cat","dog":put"Pet"
label:put"Unknownanimal"
endcase
Execute
Details
Thecaseexpressionisrequiredtomatchoneofthelabels.Ifitdoesnot,theremustbeafinallabelwithnoexpression.Labelexpressionsmusthavevaluesknownatcompiletime.Alllabelvaluesmustbedistinct.Thecaseexpressionandthelabelvaluesmusthavethesameequivalenttype,whichmustbeaninteger,char,boolean,anenumtypeorstrings.
Notethatthereisnowaytoexpressarangeofvalues(forexamplefrom5to10)inalabel.Eachindividualvaluemustbeexpressedinthelabel.
![Page 61: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/61.jpg)
catenation(+) joiningtogetherstrings
Syntax
Acatenationis:
stringExpn+stringExpn
DescriptionTwostrings(stringExpns),charorchar(n)valuescanbejoinedtogether(catenated)usingthe+operator.
Example
varlastName,wholeName:string
lastName:="Austere"
wholeName:="Nancy"+""+lastName
%ThethreestringsNancy,ablankandAustere
%catenatedtogethertomakethestring
%"NancyAustere".Thisstringbecomesthe
%valueofwholeName
Details
Thelengthofastringcatenationislimitedto255characters.
Catenationissometimescalledconcatenation.
Catenationcanalsobeappliedtocharandchar(n)values.Seecharandchar(n).Ifeitheroperand,sortins+t,isastringoradynamicchar(n)(lengthnotknownatcompiletime),theresulttypeisstring.Otherwise(whenbothsandtarecharornon-dynamicchar(n))theresulttypeischar(n).
Theresultofcatenationisconsideredtobeacompiletimevalueifbothoperandsarecompiletimevalues.
Ifbothoperandshavethetypecharorchar(n)neitherofwhichisadynamicchar(n),theresultisoftypechar(n),whichisalsoofanondynamictype.Thisallowsthecreationofverylongchar(n)valuesthatcaneffectivelyspanlineboundariesusingcatenationtojoinlines.Ifeitheroperandisadynamictypeorastringtype,thecatenationproducesastring,whoselengthislimitedto255characters.
substrings(forseparatingastringsintoparts),repeat(formaking
![Page 62: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/62.jpg)
Seealso
repeatedcatenations),stringtype,length,andindex(todeterminewhereonestringislocatedinsideanother).
Seealsostring,char,char(n),explicitStringConstant,explicitCharConstant,substringandlength.
![Page 63: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/63.jpg)
ceil real-to-integerfunction
Syntax ceil(r:real):int
Description Returnsthesmallestintegergreaterthanorequaltor.
Details
Theceil(ceiling)functionisusedtoconvertarealnumbertoaninteger.Theresultisthesmallestintegerthatisgreaterthanorequaltor.Inotherwords,theceilfunctionroundsuptothenearestinteger.Forexample,ceil(3)is3,ceil(2.25)is3andceil(-8.43)is-8.
Seealso Seealsothefloorandroundfunctions.
![Page 64: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/64.jpg)
char(n) type
Syntax char(numberOfCharacters)
DescriptionEachvariablewhosetypeisachar(n)containsexactlyncharacters.
Example
Canadianpostalcodescontainsixcharacters,forexample,M4V1Y9.Thisisrepresentedinachar(6)variable:
varpostalCode:char(6):='M4V1Y9'
Explicitconstantsforthechar(n)typeusesinglequotesasin'M4V1Y9',asopposedtoexplicitstringconstantswhichusedoublequotes,asin"Nancy".Asinglecharactersinglequotedcharacter,suchas'A',isconsideredtohavethetypecharinsteadofchar(n),butsincethesetwotypescanbeassignedtoeachotherandcomparedtoeachother,thisfacthaslittleconsequence.
Thetypechar(n)isgenerallymoredifficulttousethanthestringtype,whichisfavoredformostsimpleprograms.Thetypechar(n)hastheadvantagethatitisefficientintermsofbothspaceandtime.Inparticular,itisrepresentedasnbytesinthecomputer'smemory.Bycontrast,thestringtypemustuseextraspace(atrailingzerobyteincurrentimplementations)torepresentthecurrentlengthandallocatesspaceforthemaximumvalueitcanhold.
TheformofnumberOfCharactersisoneof:
(a)expn %Integervalue (b)* %Onlyinsubprogramparameters
Thefirstformdeterminesn.Iftheexpressionisaruntimevalue,thetypeisconsideredtobedynamicchar(n).Thevalueofnmustbeatleast1.Thesecondformisusedonlyforsubprogramparametersandusesthelengthoftheactualparameter.Thistoo,isconsideredtobeadynamicchar(n)type.Dynamicchar(n)
![Page 65: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/65.jpg)
Details
typescanonlybepassedtochar(*)parameters.Dynamicchar(n)typeshavethesamerestrictionsasdynamicarrays.Thisimpliestheycannotbeassignedasawholeandcannotappearinrecordanduniontypes.
Animplementationmayimposealimit,recommendedtobeatleast32767,onthelengthn.
Valuesofthechar(n)typecanbeassignedandtheycanbecomparedforbothequalityandforordering,butonlyiftheyhavethesamelengthandtheyarenotdynamic(i.e.thelengthmustbeknownatcompiletime).
Valuesofthechar(n)typecanbereadandwrittenbygetandputstatements.
Thechar(n)typeisanonscalar,whichimpliesthatitsparametersarealwayspassedbyreference(bymeansofanimplicitpointer).
Asistrueforthechartype,all256possiblevaluesofan8-bitbyteareallowedforeachcharacterinchar(n)type.Thereisnopatternlefttobeusedforthe"initializedvalue",sothereisnouninitializedcheckingforchar(n).
Ingeneral,youcanfreelyintermixthevaluesofthetypeschar,char(n)andstring.Thismeansthatcatenation(+),comparisons,lengthandsubstringscanbeappliedtoanyofthesetypes.Seecatenationandsubstring.Iftwonondynamicchar(n)values(orcharvalues)arecatenated,theresultisachar(n)value.Ifeitheraredynamic,itisastringvalue.Thisimpliesthatverylongchar(n)valuescanbecreatedbycatenatingthemtogether,forexampletoinitializeachar(n)variable.
Acharvaluecanbeassigned(orpassedtoannonvarparameter)withautomaticconversiontoachar(1)variableandviceversa.Stringvaluesoflength1canbeassignedtocharvariables.Character(char)valuescanbeassignedtostringvariables,yieldingastringoflength1.Stringvaluesoflengthnareassignablewithautomaticconversiontochar(n)variables.Valuesoftypechar(n)canbeassignedwithautomaticconversionto
![Page 66: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/66.jpg)
stringvariables.
Whencomparingtwochar(n)values,asins>t,ifbotharenon-dynamicandofthesamelength,theyarecomparedwithoutconvertingtostrings.Ifeitheraredynamic,theyareconvertedtostringsandthencompared.
Seealsothechartypewhichismuchlikechar(1).Seealsothestringtype.
![Page 67: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/67.jpg)
char type
Syntax char
DescriptionEachvariablewhosetypeisacharcontainsasinglecharacter,suchastheletterA,thedigit3orthespecialcharacter&.
Example
Countcharactersuntilaperiodisfound.Charactercisreadusingastatementandiscomparedtotheexplicitcharacterconstant'.'.
varc:char
varcounter:=0
loop
exitwheneof
getc%Readasinglecharacter
exitwhenc='.'%Singlequotesforcharconstant
counter:=counter+1
endloop
putcounter,"charactersbeforetheperiod"
Execute
Example
Countcapitalletters.Thisexampleillustratestheuseofthechartypeasthesubscripttypeforthefrequencyarray,theuseofcharactervariablecasasubscript,andtheuseofdasaforcounterthatrangesacrossthelettersAtoZ.
varfrequency:array'A'..'Z'ofnat
ford:'A'..'Z'
frequency(d):=0
endfor
loop%Tabulateuseofcapitalletters
exitwheneof
varc:char
getc%Readonecharacter
ifc>='A'andc<='Z'then
![Page 68: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/68.jpg)
frequency(c):=frequency(c)+1
endif
endloop
ford:'A'..'Z'%Printfrequencyofcapitalletters
putd,"",frequency(d)
endfor
Execute
Details
Thetypestring(orchar(n))isusedinsteadofcharwhenmorethanonecharacterneedstobestored,suchasthestringofcharactersHenryUnlesstheprogramneedstobequiteefficient,itisusuallyeasiertousethestringtype.Seealsothechar(n)type,whichalwaysstoresexactlyncharacters.
Thechartypediffersfromthestring(1)typeinthefollowingway:charalwaysrepresentsexactlyonecharacter,whilestring(1)canrepresenteitherthenullstringorastringcontainingonecharacter.Thechartypeissimilartothechar(1)typeinthatbothcontainatmostonecharacter.
Thechartypeisanindextypeandcanbeused,forexample,assubscripts,forrangesandcaselabels.Forexample,thisdeclaration
varcharCounts:arraycharofint
createsanarraywhosesubscriptsarecharacters.
Thechartypeisascalartype,whichimpliesthatitsparametersarepassedbyvalue,insteadofbyreference(whichisthecaseforcharandstring).
Valuesofthechartypecanbeassignedandtheycanbecomparedforbothequalityandordering.Explicitcharconstantsarewrittenasacharactersurroundedbysinglequotes,forexample,'A'.Fordetails,
![Page 69: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/69.jpg)
includinghowtowritecontrolcharacters,seeexplicitCharConstant
Characterscanbereadandwrittenbygetandputstatements.
Thereare256charvalues,correspondingtothedistinctpatternsinan8-bitbyte.Thisallowsthepatternseos(internalvalue0)anduninitchar(internalvalue128)tobecharvalues(thesepatternsarenotallowedinthestringtype;seethestringtype).All256patternsareused,sothereisnopatternlefttobethe"uninitializedvalue".Uninitializedcheckingisnotdoneforthechartype.
Theordandchrfunctionsconvertbetweenthecharvaluesandtheircorrespondingnumericrepresentationinabyte.Seeordandchr.
Ingeneral,youcanfreelyintermixthevaluesofthetypeschar,char(n)andstring.Thismeansthatcatenation(+),comparisons,lengthandsubstringscanbeappliedtoanyofthesetypes.Seecharfordetailsaboutconversionsbetweenchar,char(n)andstring.
Seealso
stringandchar(n)forrelatedtypes.SeeordandchrfunctionsforconversionfromandtoASCIIvalues.SeeexplicitCharConstantforinformationonspecialcharacterslikecaret(^)andbackslash(\).
![Page 70: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/70.jpg)
cheat typecheating
Dangerous
Syntax
AtypeCheatisoneof:
(a) cheat(targetType,expn[:sizeSpec]) (b) #expn (c) id:cheattypeSpec
Description
Atypecheatinterpretstherepresentation(bits)ofonetypeasanothertype.Typecheatsaredirty(machine-dependent)andsometimesdangerous(arbitrarycorruption)andshouldbeusedonlybyprogrammerswhoknowtheunderlyingcomputerrepresentationofvalues.
Form(b)isashortformtypecheatinwhichthetargettypeisanaturalnumber.
Form(c)isusedasaparameterinasubprogramdeclaration.ItcauseswhateverispassedintotheparametertobeinterpretedastypeSpec
Example
Thecharacter'B'isassignedtovariablei,whosetypeisconsideredtobechar(althoughitisreallyint1).
vari:int1%Onebyteinteger
cheat(char,i):='B'
Thisassignmentisequivalent(onbyteorientedcomputers)toeitherofthefollowing:
i:=cheat(int1,'B')
i:=ord('B')
TheformoftargetTypemustbeoneof:
(a) [id.]typeId (b) int,int1,int2orint4
![Page 71: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/71.jpg)
Details
(c) nat,nat1,nat2ornat4 (d) boolean (e) char[(numberOfCharacters)] (f) string[(maximumLength)] (g) addressint
Inform(a)thebeginningidentifieridmustbethenameofamodule,monitororclassthatexportsthetypeId.EachofnumberOfCharactersandmaximumLengthmustbecompiletimeintegerexpressions.
IftheexpninatypecheatisavariablereferenceandthesizeSpecisomitted,thetypecheatisconsideredtobeavariablewhosetypeistargetType.Thisallows,forexample,thetypecheattobeassignedto,asin:
cheat(char,i):='B'
Iftheexpnisavaluethatisnotavariablereference,orifsizeSpecispresent,thetypecheatisanexpressionvaluewhosetypeistargetType
ThesizeSpecisacompiletimeintegerexpressiongivingthesizeoftheexpn'svalue.Itcanbespecifiedonlyforintegerornaturalnumbervalues(whereitmustbe1,2or4)orrealvalues(whereitmustbe4or8).
Atypecheatiscarriedoutintwosteps.ThefirststepconvertsthevalueifnecessarytothesizegivenbysizeSpec.Thesecondstep,whichinvolvesnogeneratedcode,interpretsthevalueasthetargettype.
Theprefixoperator#isashortformforaclassoftypecheats.Itinterpretsitsargumentasanaturalnumber.Ingeneral,#expnisthesameascheat(natn,expn)wherenisdeterminedasfollows.Iftheexpnisavariableorexpressionofsize1,2or4,nisthesizeoftheitem,otherwisenis4.
Example
Setthesecondcharacterofdsoithasthenumericrepresentation24.Ingeneral,ifcisacharacter,then#c=ord(c).Notethat#ccanhaveanumbervalueassignedtoit,butord(c)cannot.
![Page 72: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/72.jpg)
vard:char(3)
#d(2):=24%Sameasd(2):=chr(24)
Example
Thenotation16#FFFFmeansFFFFinbase16,whichis32767inbase10andis161'sinarowinbase2.Thissamepatternisthetwo'scomplementrepresentationofthevalue-1ina2-byteinteger.
vari:int2
#i:=16#FFFF%Equivalenttoi:=-1
Example
ThefollowingexampleprintsoutastringlocatedataddressintmyAddr
procedurePrintString(str:cheatstring)
putstr
endPrintString
varmyAddr:addressint
...%AssignedavaluetomyAddr
PrintString(myAddr)%myAddrwillbetreatedasastring
Details
Animplementationmayprohibitcertaintypecheats.Memoryalignmentrequirementsmayrendersometypecheatsunfeasible.ItisdangeroustoconsideravaluetohaveatargetTypelargerthanthevalue'stype.Animplementationmayprohibitcertaintypecheatsonregisterscalaritems.
Seealso
explicitIntegerConstant(fordescriptionofconstantssuchas16#FFFF)andthefollowingfunctionsthatconvertonetypetoanotherinamachine-independentmanner:ord,chr,intstr,strint,natstr,andstrnat.
![Page 73: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/73.jpg)
checked compilerdirective
Description
Uncheckedmeansthatcertainruntimetests,whichtakeplacebydefault,canbeeliminated,usuallytomaketheprogrammoreefficientattheriskofunreliability.Thekeywordchecked,usedasastatement,requeststhatthedisablingofchecking,previouslyrequestedbythekeywordunchecked,bere-enabled.Seeuncheckedfordetailsandanexample.
![Page 74: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/74.jpg)
chr integer-to-characterfunction
Syntax chr(i:int):char
Description
Thechrfunctionisusedtoconvertanintegertoacharacter.Thecharacteristhei-thcharacteroftheASCIIsequenceofcharacters(exceptontheIBMmainframe,whichusestheEBCDICsequence.)Forexample,chr(65)is"A".
Theordfunctionistheinverseofchr,soforanycharacterc,:
chr(ord(c))=c.
Execute
Details
Therearetwosetsofcharactersrepresentingvalues128-255:theANSIvalues(thedefaultvaluesforWindows),andtheMS-DOSOEMcharacterset,whichcontainsvariouslinedrawingcharacters.TousetheMS-DOScharacterset,youmustusethesetscreen("msdos")command.
Example
Anotherexampleisavailablethatdisplaystheentirecharactersset,boththeregularANSIcharactersetandtheMS_DOSOEMcharacterset.
![Page 75: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/75.jpg)
Seealso ord,intstrandstrintfunctions.
![Page 76: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/76.jpg)
class declaration
Pointerpisusedtolocateindividualobjectsoftheclass.Thenewstatementcreatesoneoftheseobjects.Thestatement
p->push("Harvey")
isashortformfor:
stackClass(p).push("Harvey")
ThisinsertsthestringHarveyintothestackobjectlocatedbyp.
Syntax
AclassDeclarationis:
[monitor] classid [inheritinheritItem] [implementimplementItem] [implementbyimplementByItem] [import[var]importItem{,[var]importItem [export[howExport]id{,[howExport]id}] statementsAndDeclarations endid
Description
Aclassdeclarationdefinesatemplateforapackageofvariables,constants,types,subprograms,etc.Thenameoftheclass(id)isgivenintwoplaces,justafterjustafterend.Itemsdeclaredinsidetheclasscanbeaccessedoutsideoftheclassonlyiftheyareexported.Itemsfromoutsidetheclassthataretobeusedintheclass,needtobeimported(unlesstheyarepredefinedorpervasive).Instances(objects)ofaclassarecreatedusingthenewstatement.Eachobjectisessentiallyamodulelocatedbyapointer.
Thisclassisatemplateforcreatingobjects,eachofwhichisastackofstrings.(Seethemoduledescriptionforthecorrespondingmodulethatimplementsasinglestackofstrings.)
![Page 77: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/77.jpg)
Example
classstackClass%Templateforcreatingindividualstacks
exportpush,pop
vartop:int:=0
varcontents:array1..100ofstring
procedurepush(s:string)
top:=top+1
contents(top):=s
endpush
procedurepop(vars:string)
s:=contents(top)
top:=top-1
endpop
endstackClass
varp:pointertostackClass%Shortform:var
newstackClass,p%Shortform:newp
p->push("Harvey")
varname:string
p->pop(name)%ThissetsnametobeHarvey
Execute
Thenewstatementisusedtocreateobjectsofaclass.Manyinstancesofaclasscanexistatagiventime,eachlocatedbyapointer.Thefreestatementisusedtodestroyobjectsthatarenolongerofuse.Turingdoesnotsupportgarbagecollection(automaticrecoveryofspacebelongingtoinaccessibleobjects).
Seemodulesforadiscussionofimporting,exportingandrelatedconcepts.Whenanobjectiscreatedbynew,itsinitializationcodeisexecuted.Inthisexample,theobject'stopvariableissetto0.Asistrueinmodules,anexportedsubprogramofanobject'sclasscannotbecalleduntiltheobjectiscompletelyinitialized.
Youarenotallowedtocreatevariablesofaclass,asin:
vars:stack%Notlegal!
![Page 78: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/78.jpg)
Details
Ifthemonitorkeywordispresent(justbeforeclass),theobjectsaremonitors.Thismeansthatonlyoneprocessatatimecanbeactiveintheobject.Seeprocess.
Inheritlistsareusedtospecifyinheritance.Seeinheritlist.Implementandimplement-bylistsprovideaspecialkindofexpansionwhichsupportstheseparationofaninterfacefromitsimplementation.Seeimplementlistandimplement-bycannotcontainbothaninheritandanimplementlist.
Classdeclarationscanbenestedinsidemodulesandmonitorsbutcannotbenestedinsideotherclassesorinsideproceduresorfunctions.Aclassmustnotcontainaasoneofits(outermost)declarations.Areturnstatementcannotbeusedasoneofthe(outermost)statementsinaclass.
Aclasscannotexportvariables(orruntimeconstants)asunqualifiedobjecthasadistinctsetofvariables).
ThesyntaxofaclassDeclarationpresentedabovehasbeensimplifiedbyleavingoutpre,invariantandpostclauses.Thefullsyntaxwhichsupportsprepostisthesameasthatformodules.Theinitializationofclassesisthesameasthatformodules.Seemodule.
Wewillgiveanexampleinwhichasubprograminoneclassoverridesthecorrespondingsubprograminaclassthatisbeinginherited.Theexampleisbasedonaprogramthatimplementsafilesysteminsideanoperatingsystem.Allfileshaveclose,readandwriteoperations.Somefiles,calledDevicefiles,alsohaveanoperationcalledioCtl(input/outputcontrol).Thekindoffiledeterminestheimplementationmethod.Hereistheexpansion(inheritance)hierarchyamongtheclassesoffiles.
TheclasscalledFilegivestheinterfacetoallpossiblekindsoffiles.Theimplementsfilesthataretext(ASCIIcharacters).TheDeviceclassgivestheinterface
![Page 79: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/79.jpg)
Example
toallfilesthathavetheioCtloperationinadditiontoopen,close,readTapeandDiskclassesimplementfilesthatareactuallyphysicaltapesordisks.HereisthedeclarationoftheFileclass:
classFile
exportopen,close,read,write
deferredprocedureopen(…parametersforopen…)
deferredprocedureclose(…parametersforclose…)
deferredprocedureread(…parametersforread…)
deferredprocedurewrite(…parametersforwrite…)
endFile
TheTextFileclassimplementstheFileinterfacebygivingvariablesdeclarationsandprocedurebodiesforASCIIfiles:
classTextFile
inheritFile
varinternalTextFileData:
…internaldatafortextfiles…
bodyprocedureopen
…bodyforopenfortextfiles…
endopen
…bodiesforclose,readandwriteproceduresfortextfiles…
endTextFile
Objectstorepresentindividualtextfilesarecreatedusingthenewstatement:
vartextFilePtr:^TextFile
%Pointerwilllocateatextfileobject
newtextFilePtr%Createatextfileobject
textFilePtr->read(…actualparameters…)%Readtextfile
TheDeviceclassaddstheioCtlproceduretotheFileinterface.
classDevice
inheritFile
exportioCtl
deferredprocedureioCtl(…parametersforioCtl
endDevice
TheDiskclassprovidesdataandprocedurestoimplementafilethatisactuallyadisk(theTapeclassisanalogous):
classDisk
![Page 80: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/80.jpg)
inheritDevice
varinternalDiskFileData:…internaldatafordiskfiles
bodyprocedureopen
…bodyforopen…
endopen
…bodiesforclose,read,writeandioCtlproceduresfordisk…
endDisk
ApointerthatcanlocateanykindofFileobjectisdeclaredthisway:
varfilePtr:^File
Thismaylocate,forexample,aTextFile:
filePtr:=textFilePtr
ThisassignmentisallowedbecausefilePtr'scorrespondingclass(FileoftextFilePtr'scorrespondingclass(TextFile).ItisguaranteedthattheobjectnowlocatedbyfilePtrsupportsaversionofalltheoperationsofaFile(andwrite).
WhenwecallaprocedureintheobjectlocatedbyfilePtr,theactualprocedurecalledwilldependupontheobject:
filePtr->read(…actualparameters…)
Forexample,iffilePtrcurrentlylocatesaDiskfile,thiswillcallthefromtheDiskclass.ThisisanexampleofdynamicbindinginwhichreadtobeusedisselectedatruntimeandthischoiceisbasedontheobjectlocatedbyfilePtr.Thisiscalledpolymorphism,becauseFileobjectscanhavemorethanoneform.
Asanotherexample,considerclassC,whichcontainsheadersandbodiesforfunctionsfandg.Cexportsfunctionsfandg.ThereisalsoaclassD,whichinheritsfromClassDcontainsabodythatoverridesthebodyforg.Dalsocontainsaheaderandbodyforfunctionh.Dexportsfunctionh.
PointerphasbeendeclaredtolocateanobjectofclassC,butatruntimeobjectofclassD.Whenpisusedtocallf,bymeansofp->f,thebodyofappearsinC,isinvoked.Whenpisusedtocallg,bymeansofp->bodyinDisinvoked.Anyattempttouseptocallhisillegalbecause
![Page 81: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/81.jpg)
Example
usedtocallfunctionsthatareexportedfromC.
classC
exportf,g
proceduref
put"C'sf"
endf
procedureg
put"C'sg"
endg
endC
classD
inheritC%Inheritfandg
bodyprocedureg%OverridesginC
put"***D'sg***"
endg
procedureh
put"***D'sh***"
endh
endD
varp:pointertoC%pcanpointtoanydescendantofC
newD,p%plocatesanobjectofclassD
p->f%Outputs"C'sf"
p->g%Outputs"***D'sg***"
p->h%Causeserror"'h'isnotinexportlistof'C'"
Execute
Seealso
module,monitorandunit.Seealsoimportlist,exportlist,implementimplementbylist,andinheritlist.Seealsodeferredsubprogram.Seealsoandobjectclass.
![Page 82: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/82.jpg)
clock millisecsusedprocedure
Syntax clock(varc:int)
Description
Theclockstatementisusedtodeterminetheamountoftimesinceaprogram(process)startedrunning.Variablecisassignedthenumberofmillisecondssincetheprogramstartedrunning.
Example
Thisprogramtellsyouhowmuchtimeithasused.
vartimeRunning:int
clock(timeRunning)
put"Thisprogramhasrun",timeRunning,"milliseconds"
Execute
DetailsOnAppleMacintoshes,thehardwareresolutionofdurationisinunitsof17milliseconds(1/60-thofasecond).
Seealsodelay,time,sysclock,wallclockanddatestatements.
SeealsopredefinedunitTime.
![Page 83: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/83.jpg)
close filestatement
Syntax
AcloseStatementis:
close:fileNumber
Description
InTuring,filesarereadandwrittenusingafileNumber.Inmostcases,thisnumberisgivenavalueusingtheopenstatement,whichtranslatesafilename,suchas"Master",toafilenumber,suchas5.Whentheprogramisfinishedusingthefile,itdisconnectsfromthefileusingtheclosestatement.
Example
Thisprogramillustrateshowtoopen,readandthencloseafile.
varfileName:string:="Master"%Nameoffile
varfileNo:int%Numberoffile
varinputVariable:string(100)
open:fileNo,fileName,read
…
read:fileNo,inputVariable
…
close:fileNo
Details
InaTuringimplementation,therewillgenerallybealimitonthenumberofcurrentlyopenfiles.Thislimitwilltypicallybearound20.Toavoidexceedingthislimit,aprogramthatusesmanyfilesoneafteranothershouldclosefilesthatarenolongerinuse.
Ifaprogramdoesnotcloseafile,thefilewillbeautomaticallyclosedwhentheprogramfinishes.
Thereisanolderandstillacceptableversionofclosethathasthissyntax:
close(fileNumber:int)
Seealso theopen,get,put,read,write,seekandtellstatements.
![Page 84: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/84.jpg)
cls clearscreengraphicsprocedure
Syntax cls
DescriptionThecls(clearscreen)procedureisusedtoblanktheoutputwindow.Thecursorissettothetopleft(torow1,column1).
Details
Theentireoutputwindowissettothecurrenttextbackgroundcolor(assetbycolorbackorText.ColorBack).
Theoutputwindowmustbein"graphics"mode.Seesetscreenfordetails.
Seealso SeealsopredefinedunitText.
![Page 85: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/85.jpg)
collection declaration
Syntax
AcollectionDeclarationisoneof:
(a) varid{,id}:collectionoftypeSpec (b) varid{,id}:collectionofforwardtypeId
Description
Acollectiondeclarationcreatesanewcollection(orcollections).Acollectioncanbethoughtofasanarraywhoseelementsaredynamicallycreated(bynew)anddeleted(byfree).Elementsofacollectionarereferredtobythecollection'snamesubscriptedbyapointer.Seealsonew,freeandpointer.
Example
Createacollectionthatwillrepresentabinarytree.
vartree:collectionof
record
name:string(10)
left,right:pointertotree
endrecord
varroot:pointertotree
newtree,root
tree(root).name:="Adam"
Thestatement"newC,p"createsanewelementincollectionCandsetsptopointati.Ifthereisnomorememoryspacefortheelement,though,pissettonil(C),whichisthenullpointerforcollectionC.Thestatement"freeC,p"deletestheelementofCpointedtobypandsetsptonil(C).Ineachcase,pispassedasavarparameterandmustbeavariableofthepointertypeofC.
Thekeywordforward(formbabove)isusedtospecifythatthetypeIdofthecollectionelementswillbegivenlaterinthecollection'sscope.Thelaterdeclarationmustappearatthesamelevel(inthesamelistofdeclarationsandstatements)astheoriginaldeclaration.Thisallowscycliccollections,forexample,whenacollectioncontainspointerstoanothercollection,whichinturncontainspointerstothefirstcollection.Inthiscase,the
![Page 86: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/86.jpg)
Details
typeIdisthenameofthetypethathasnotyetbeendeclared;typeIdcannotbeuseduntilitsdeclarationappears.Acollectionwhoseelementtypeisforwardcanbeusedonlytodeclarepointerstoituntilthetype'sdeclarationisgiven.
Supposepointerqisequaltopointerpandtheelementtheypointtoisdeletedby"freeC,p".Wesayqisadanglingpointerbecauseitseemstolocateanelement,buttheelementnolongerexists.Adanglingpointerisconsideredtobeanuninitializedvalue.Itcannotbeassigned,compared,usedasacollectionsubscript,orpassedtofree.
Collectionscannotbeassigned,compared,passedasparameters,boundto,ornamedbyaconstdeclaration.Collectionsmustnotbedeclaredinprocedures,functions,recordsorunions.
Thesameshortformsforclassescanbealsousedforcollections.Theseincludeomissionofthecollectionnameinnew,freeandniltogetherwiththe^and->notations.Pointerstotypes(seepointer)canalsobeused,whichareoftenmoreconvenienttousethancollections.
ThesyntaxofacollectionDeclarationpresentedabovehasbeensimplifiedbyleavingoutuncheckedcollections.Withthisfeature,acollectionDeclarationisoneof:
(a)varid{,id}:[unchecked]collectionoftypeSpec
(b)varid{,id}:[unchecked]collectionofforwardtypeId
Whenuncheckedisspecified,thecheckingtoverifythatpointersactuallylocateelementsisremoved.Thischeckingisdoneusinga"timestamp"attachedtoeachelementandpointer,andmakingsurethatthesematchwitheachother.Whenuncheckedisspecified,theexecutionisdangerous,butfasterandsmaller,andthepointersbecomesimplymachineaddresses(asinC).
![Page 87: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/87.jpg)
color textcolorgraphicsprocedure
Syntax color(Color:int)
Description
Thecolorprocedureisusedtochangethecurrentlyactivecolor.Thisisthecolorofcharactersthataretobeputonthescreen.Thealternatespellingiscolour.
Example
Thisprogramprintsoutthemessage"Bravo"threetimes,eachinadifferentcolor.
setscreen("graphics")
fori:1..3
color(i)
put"Bravo"
endfor
Execute
Example
Thisprogramprintsoutamessage.Thecolorofeachletterisdifferentfromtheprecedingletter.Forletternumberithecolornumberisimodmaxcolor+1.Thiscyclesrepeatedlythroughalltheavailablecolors.
setscreen("graphics")
constmessage:="HappyNewYear!!"
fori:1..length(message)
color(imodmaxcolor+1)
putmessage(i)..
endfor
![Page 88: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/88.jpg)
Execute
Details
Seemaxcolorforthenumberofcolorsavailableinthevarious"graphics"modes.Thebackgroundcolorthattextappearsuponcanbesetusingthecolorbackprocedure.
Thescreenmustbeina"graphics"modetousethecolorprocedure.Seesetscreenfordetails.
Seealsocolorback,whatcolorandmaxcolor.
SeealsopredefinedunitText.
![Page 89: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/89.jpg)
colorback backgroundcolorprocedure
Syntax colorback(Color:int)
DescriptionThecolorbackprocedureisusedtochangethecoloruponwhichtextappears.Thealternatespellingiscolourback.
Example
Whenthemessage"Greetings"isoutput,thebackgroundsurroundingeachletterwillbeinred.
setscreen("graphics")
colorback(red)
put"Greetings"..
Execute
Details
Whenanewlineisoutput,suchaswhentheputstatementdoesnotcontaina..attheend,therestofthelineisclearedfromcursortotherightedgeoftheoutputwindowinthetextbackgroundcolor.
Example
Thisprogramwillresultintheword"Hello"beingdisplayedinredonagreenbackgroundfollowedbytheword"Again"displayedinredonayellowbackground.Theyellowbackgroundstretchesacrossthewindow.
setscreen("graphics")
color(red)
colorback(green)
put"Hello"..%The".."attheendoflinestopsthenewline
colorback(yellow)
put"Again"%Therestofthelineisclearedinyellow
![Page 90: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/90.jpg)
Execute
Example
Thisprogramdisplaystheletter'X'in16differentcolorson16differentbackgrounds.Notethattheletterisnotvisiblewhenthetextcolorandthebacgroundcolorarethesame
setscreen("graphics")
forrow:0..15
colorback(row)
forcolumn:0..15
color(column)
locate(row,column)
put"X"..
endfor
endfor
Execute
Details
Seemaxcolorforthenumberofbackgroundcolorsavailable.Thecolorinwhichtextappearscanbesetusingthecolorprocedure.
Thescreenmustbeina"graphics"modetousethecolorprocedure.Seesetscreenfordetails.
Seealsocolorandwhatcolorback.
SeealsopredefinedunitText.
![Page 91: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/91.jpg)
comment remarkstatement
Description
Acommentisaremarktothereaderoftheprogram,whichthecomputerignores.ThemostcommonformofcommentinTuringstartswithapercentsign(%)andcontinuestotheendofthecurrentline;thisiscalledanend-of-linecomment.Thereisalsothebracketedcomment,whichbeginswiththe/*andendswith*/andwhichcancontinueacrosslineboundaries.
Example
%Thisisanend-of-linecomment
varx:real%Hereisanotherend-of-linecomment
consts:="Hello"
/*Hereisabracketedcommentthat
lastsfortwolines*/
constpi:=3.14159
DetailsIntheBASIClanguage,commentsarecalledremarksandstartwiththekeywordREM.InPascal,commentsarebracketedby(*and*).
![Page 92: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/92.jpg)
comparisonOperator
Syntax
AcomparisonOperatorisoneof:
(a) < %Lessthan (b) > %Greaterthan (c) = %Equal (d) <= %Lessthanorequal;subset (e) >= %Greaterthanorequal;superset (f) not= %Notequal
Description
Acomparisonoperatorisplacedbetweentwovaluestodeterminetheirequalityorordering.Forexample,7>2istrueandsois"Adam"<"Cathy".Thecomparisonoperatorscanbeappliedtonumbersaswellastoenumeratedtypes.Theycanalsobeappliedtostringstodeterminetheorderingbetweenstrings(seethestringtypefordetails).Arrays,records,unionsandcollectionscannotbecompared.Booleanvalues(trueandfalse)canbecomparedonlyforequality(=andnot=);thesameistrueofpointervalues.Setvaluescanbecomparedusing<=and>=,whicharethesubsetandsupersetoperators.Thenot=operatorcanbewrittenas~=.
Comparisonsamongclassesisalsosupported(seeclass).IfCandDareclasses,C<=DmeansDisadescendantof(inheritsfrom)C.Seeclass.
Seealso
Seealsoinfixoperatorsandprecedenceofoperators.Seealsotheint,real,string,set,booleanandenumtypes.Seealsostringcomparison.
![Page 93: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/93.jpg)
Concurrency
Description
Thisunitcontainsthepredefinedproceduresthatdealwithconcurrency.Itcontainsonepredefinedfunction,althoughconceptuallyitcontainsthreeothersubprograms.
AllroutinesintheConcurrencymoduleareexportedunqualified.(Thismeansyoucancalltheentrypointsdirectly.)
EntryPoints
empty* Returnstrueifnoprocessesarewaitingontheconditionqueue.
getpriority* Returnsthepriorityofthecurrentprocess.setpriority* Setsthepriorityofthecurrentprocess.
simutime Returnsthenumberofsimulatedtimeunitsthathavepassed.
*Partofthelanguage,conceptuallypartoftheConcurrencyunit.
![Page 94: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/94.jpg)
Concurrency.empty PartofConcurrencymodule
Syntax empty(variableReference):boolean
Description
Theemptyfunctionisusedinaconcurrentprogram.ItreturnstrueifthevariableReference,whichmustbeaconditionvariable,hasnoprocesseswaitingforit.Processesjointhequeueofaconditionvariablebyexecutingthewaitstatement,andareawakenedbythesignalstatement.
Status
PartofthelanguageandonlyconceptuallypartoftheConcurrencyunit.
Thismeansthatyoucanonlycallthefunctionbycallingempty,notbycallingConcurrency.empty.
Seealso condition,wait,signal,forkandmonitor.
![Page 95: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/95.jpg)
Concurrency.getpriority PartofConcurrencymodule
Syntax getpriority:nat
Description
Thegetpriorityfunctionreturnsthepriorityofanexecutingprocessinaconcurrentprogram.Asmallervaluemeansafasterspeed.
Status
PartofthelanguageandonlyconceptuallypartoftheConcurrencyunit.
Thismeansthatyoucanonlycallthefunctionbycallinggetpriority,notbycallingConcurrency.getpriority.
Seealso setpriority,forkandmonitor.
![Page 96: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/96.jpg)
Concurrency.setpriority PartofConcurrencymodule
Syntax setpriority(p:nat)
Description
Thesetpriorityprocedureisusedtosetthepriorityofaprocessinaconcurrentprogram.Thisprioritycannotbecountedontoguaranteecriticalaccesstosharedvariables.Asmallervalueofpmeansincreasedspeed.Theargumenttosetprioritymaybelimitedtotherange0to2**15-1.
Status
PartofthelanguageandonlyconceptuallypartoftheConcurrencyunit.
Thismeansthatyoucanonlycallthefunctionbycallingsetpriority,notbycallingConcurrency.setpriority.
Seealso getpriority,forkandmonitor.
![Page 97: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/97.jpg)
Concurrency.simutime PartofConcurrencymodule
Syntax simutime:int
DescriptionThesimutimefunctionreturnsthenumberofsimulatedtimeunitsthathavepassedsinceprogramexecutionbegan.
Details
Simulatedtimeonlypasseswhenallprocessareeitherpausedorwaiting.ThissimulatesthefactthatCPUtimeiseffectivelyinfinitelyfasterthan"pause"time.
Example
Thisprintsoutthesimulatedtimepassingbetweentwoprocesses.Thiswillprintout3,5,6,9,10,12,15,15,18,20,21,...
processp(t:int)
loop
pauset
putsimutime
endloop
endp
forkp(3)
forkp(5)
Execute
Status
Exportedunqualified.
ThismeansthatyoucancallthefunctionbycallingsimutimeorbycallingConcurrency.simutime.
![Page 98: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/98.jpg)
condition declaration
Syntax
AconditionDeclarationis:
varid{,id}:[arrayindexType{,indexType}of]
[conditionOption]condition
Description
Aconditionisessentiallyaqueueofsleepingprocesses.Itisusedinaconcurrentprogramtoallowprocessestoblockthemselves(bythewaitstatement)andlatertobeawakened(bythesignalstatement).Aconditionvariable,whichcanoccuronlyinsideamonitor(aspecialkindofmodulethathandlesconcurrency)ormonitorclass,isusedbythewaitandsignalstatementsforputtingprocessestosleepandlaterwakingthemup.
Example
Theprocessesusethismonitortogainexclusiveaccesstoaresource.Aprocesswantingtousetheresourcecallstherequestentrypointandisblockeduntiltheresourceisfree.Whentheprocessisfinishedwiththeresource,itcallsthereleaseentrypoint.Thismonitorisessentiallyabinarysemaphoreinwhichthesemaphore'sPoperationistherequestandtheVistherelease.
monitorresource
exportrequest,release
varavailable:boolean:=true
varnowAvailable:condition
procedurerequest
ifnotavailablethen
waitnowAvailable%Gotosleep
endif
assertavailable
available:=false%Allocateresource
endrequest
procedurerelease
assertnotavailable%Resourceisallocated
available:=true%Freetheresource
signalnowAvailable%Wakeuponeprocess
![Page 99: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/99.jpg)
%Ifanyaresleeping
endrelease
endresource
processworker
loop
…
resource.request%Blockuntilavailable
…useresource…
resource.release
endloop
endworker
forkworker%Activateoneworker
forkworker%Activateanotherworker
Execute
AconditionOptionisoneof:
(a) priority (b) deferred (c) timeout
Thepriorityoptionrequiresthatthecorrespondingwaitstatementsincludepriorities.Options(b)and(c)declaredeferredconditions.Asignaltoadeferredconditioncausesthesignaledprocesstobecomereadytoenterthemonitorwhenthemonitorbecomesinactive.Thesignalingprocesscontinuesrunninginthemonitor.Asignaltoanimmediate(nondeferred)conditioncausesthesignaledprocesstobeginrunninginthemonitorimmediately.Thesignalingprocesswaitstore-enterthemonitorwhenthemonitorbecomesinactive.Allconditionsinadevicemonitormustbedeferred(ortimeout).
Atimeoutoptionmeansthesignalingisdeferredandthatan
![Page 100: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/100.jpg)
Details extraparametertothewaitstatementmustgiveatimeoutinterval.Ifaprocesswaitslongerthanitsinterval,itisautomaticallysignaled.Bewarethattheemptyfunctioncanbenon-repeatablewhenappliedtotimeoutconditions.Forexample,empty(c)maynotbeequaltoempty(c)inasingleexpression.Inthecurrent(1999)versionofTuring,thetimefortimeoutsismeasuredinsimulationtimeratherthanrealtime.Seethepausestatement.
Conditionscannotbenamedastypes,cannotbecontainedinrecords,unionsorcollectionsandcannotbedeclaredinstatements(suchasbeginorloop)orinsubprograms.Theycanonlybedeclaredinmonitorsandmonitorclasses.
Thereisnoguaranteedorderofprogressamongawakeneddeferredprocesses,processessignalingimmediateconditions,andprocessesattemptingtoenteranactivemonitor.
NotethatconditionOptionmustprecedethekeywordcondition.
Seealsowaitandsignal.Seealsomonitorandfork.Seealsoempty.Seealsopause.
![Page 101: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/101.jpg)
Config
Description
Thisunitcontainsthepredefinedsubprogramsthatdealwithgettingconfigurationinformationaboutthemachineandenvironmentonwhichtheprogramisbeingrun.Itexistsinordertoallowuserstoobtaininformationaboutthesystemthatmayonlybeavailableatruntime.
AllroutinesintheConfigmoduleareexportedqualified(andthusmustbeprefacedwith"Config.").
EntryPoints
Display Returnsinformationaboutthedisplaycurrentlyattached.
Lang Returnsinformationaboutthelanguageenvironmentthattheprogramiscurrentlyrunningwithin.
Machine Returnsinformationaboutthehardwareonwhichtheprogramisrunning.
![Page 102: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/102.jpg)
Config.Display PartofConfigmodule
Syntax Config.Display(displayCode:int):int
Description
Config.Displayreturnsinformationaboutthedisplay(ordisplays)attachedtothecomputer.TheparameterdisplayCodedetermineswhatsortofinformationispassedback.displayCodehasanumberofpossiblevalues,allsummarizedbyasetofpredefinedconstants.
Atthetimeofthiswriting,thefollowingconstantsweredefined:
cdScreenHeight returntheheightofthescreeninpixels.cdScreenWidth returnthewidthofthescreeninpixels.
cdMaxNumColors returnthemaximumnumberofcolorssupportedbythedisplay.
cdMaxNumColours returnthemaximumnumberofcolorssupportedbythedisplay.
Execute
Example
Thisprogramprintsthescreenwidthandheight.
constwidth:int:=Config.Display(cdScreenWidth
constheight:int:=Config.Display(cdScreenHeight
put"Thescreenwidthis",width,"thescreenheightis",
Details
OntheMacintosh,it'spossibletohavemultipledisplaysattachedtoasinglecomputer.Togetinformationabouttheextradisplays,youcancallConfig.Displaywithanyofthefirstfourconstantsaboveplusone,two,three,etc.Thiswillreturntheheight,widthormaximumnumberofcolorsforthesecond,thirdandbeyonddisplays.
![Page 103: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/103.jpg)
Example
ThisprogramprintsthescreenwidthandheightoftheseconddisplayonaMacintosh.
constwidth:int:=Config.Display(cdScreenWidth
constheight:int:=Config.Display(cdScreenHeight
put"Theseconddisplaysizeis",width,"x",
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingConfig.DisplaycallingDisplay.
![Page 104: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/104.jpg)
Config.Lang PartofConfigmodule
Syntax Config.Lang(langCode:int):int
Description
Config.Langreturnsinformationaboutthelanguageandthelimitationsoftheimplementationthattheprogramiscurrentlyrunning.TheparameterlangCodedetermineswhatsortofinformationispassedback.langCodehasanumberofpossiblevalues,allsummarizedbyasetofpredefinedconstants.
Atthetimeofthiswriting,thefollowingconstantsweredefined:
clRelease returnthecurrentreleasenumberoftheenvironment(e.g.4.02=400).
clLanguageVersion returnthecurrentversionnumberofthelanguage(e.g.1.81=181).
clMaxNumStreams returnthemaximumnumberofI/Ostreams(usedbytheopenandclosestatements)thatcanbeopenedatonce.
clMaxNumDirStreams returnthemaximumnumberofdirectorystreamsthatcanbeopenedatonce.
clMaxNumRunTimeArgs returnthemaximumnumberofrun-timearguments.
Example
Thisprogramprintsthecurrentenvironmentversion.
constversion:int:=Config.Lang(clLanguageVersion
put"Thelanguageversionnumberis",version
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingConfig.LangnotbycallingLang.
![Page 105: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/105.jpg)
Config.Machine PartofConfigmodule
Syntax Config.Machine(machineCode:int):int
Description
Config.Machinereturnsinformationaboutthemachinethattheprogramiscurrentlyrunningon.TheparametermachineCodedetermineswhatsortofinformationispassedback.machineCodehasanumberofpossiblevalues,allsummarizedbyasetofpredefinedconstants.
Atthetimeofthiswriting,thefollowingconstantsweredefined:
cmProcessor returnanencodingoftheprocessornumber.cmFPU return1ifthereisanFPUinstalled,0ifnot.
cmOS returnthecurrentversionnumberoftheoperatingsystem(e.g.6.07=607).
Example
ThisprogramprintswhetherthemachinehasanFPUornot.
ifConfig.Machine(cmFPU)=1then
put"ThemachinehasanFPUinstalled"
else
put"ThemachinedoesnothaveanFPUinstalled"
endif
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingConfig.Machine,notbycallingMachine.
![Page 106: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/106.jpg)
const constantdeclaration
Syntax
AconstantDeclarationis:
constid[:typeSpec]:=initializingValue
DescriptionAconstdeclarationcreatesanameidforavalue.
Example
constc:=3
consts:="Hello"%Thetypeofsisstring
constx:=sin(y)**2
consta:array1..3ofint:=init(1,2,3)
constb:array1..3ofint:=a
constc:array1..2,1..2ofint:=init(1,2,3,4)
%Soc(1,1)=1,c(1,2)=2,c(2,1)=3,c(2,2)=4
Details
Theinitializingvaluecanbeanarbitraryvalueorelsealistofitemsseparatedbycommasinsideinit(…).ThesyntaxofinitializingValueis:
a. expn b. init(initializingValue,initializingValue)
Eachinit(…)correspondstoanarray,recordorunionvaluethatisbeinginitialized.Thesemustbenestedforinitializationofnestedtypes.InthePascallanguage,constantsmusthavevaluesknownatcompiletime;Turinghasnosuchrestriction.
WhenthetypeSpecisomitted,thevariable'stypeistakentobethe(root)typeoftheinitializingexpression,forexample,intorstring.ThetypeSpeccannotbeomittedfordynamicarraysorwhentheinitializingvalueisoftheforminit(…).Thevaluesinsideinit(…)mustbeknownatcompiletime.
Thekeywordpervasivecanbeinsertedjustafterconst.Whenthisisdone,theconstantisvisibleinsideallsubconstructsoftheconstant'sscope.Withoutpervasiveisnotvisibleinsidemodules,monitorsorclassesunlessexplicitlyimported.Pervasiveconstantsneednotbeimported.Youcanabbreviatepervasiveasanasterisk(
Youcanalsooptionallyusetheregisterkeywordtorequestthattheconstantbeplacedinamachineregister.ThesyntaxforconstantDeclarationisactually:
![Page 107: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/107.jpg)
const[pervasive][register]id[:typeSpec]:=
Inthecurrent(2002)implementation,programsareruninterpretivelyusingpseudo-code,whichhasnomachineregisters,andtheregisterkeywordisignored.Seealsoforrestrictionsontheuseofregisterconstants.
![Page 108: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/108.jpg)
constantReference useofaconstant
Syntax
AconstantReferenceis:
constantId{componentSelector}
Description
InaTuringprogram,aconstantisdeclaredandgivenaname(constantId)andthenused.Eachuseiscalledaconstantreference.
Iftheconstantisanarray,recordorunion,itsparts(components)canbeselectedusingsubscriptsandfieldnames(usingcomponentSelectors).TheformofacomponentSelectorisoneof:
(a) (expn{,expn}) (b) .fieldId
Form(a)isusedforsubscripting(indexing)arrays.Thenumberofarraysubscriptsmustbethesameasinthearray'sdeclaration.Form(b)isusedforselectingafieldofarecordorunion.Componentselectorsareusedinthesamemannerasvariablereferences.SeevariableReferencefordetails.SeealsoconstdeclarationandexplicitConstant.
Example
varradius:real
constpi:=3.14159%Constantdeclaration
…
put"Areais:",pi*radius**2
%piisaconstantreference
![Page 109: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/109.jpg)
cos cosinefunction(radians)
Syntax cos(r:real):real
DescriptionThecosfunctionisusedtofindthecosineofananglegiveninradians.Forexample,cos(0)is1.
Example
Thisprogramprintsoutthecosineofp/6,2p/6,3p/6,upto12p/6radians.
constpi:=3.14159
fori:1..12
constangle:=i*pi/6
put"Cosof",angle,"is",cos(angle)
endfor
Execute
Seealso
thesinandtanfunctionsforcalculatingsineandtangent.
thecosdfunctionwhichfindsthecosineofananglegivenindegrees.(2pradiansarethesameas360degrees.)
SeealsopredefinedunitMath.
![Page 110: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/110.jpg)
cosd cosinefunction(degrees)
Syntax cosd(r:real):real
DescriptionThecosdfunctionisusedtofindthecosineofananglegivenindegrees.Forexample,cosd(0)is1.
Example
Thisprogramprintsoutthecosineof30,60,90,upto360degrees.
fori:1..12
constangle:=i*30
put"Cosof",angle,"is",cosd(angle)
endfor
Execute
Seealso
thesindandtandfunctionsforcalculatingsineandtangent.
thecosfunctionwhichfindsthecosineofananglegiveninradians.(2pradiansarethesameas360degrees.)
SeealsopredefinedunitMath.
![Page 111: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/111.jpg)
date procedure
Syntax date(vard:string)
Description
Thedatestatementisusedtodeterminethecurrentdate.Variabledisassignedastringintheformat"ddmmmyy",wheremmmisthefirst3charactersofthemonth,e.g.,"Apr".Forexample,ifthedateisChristmas2002,dwillbesetto"25Dec02".
Example
Thisprogramgreetsyouandtellsyouthedate.
vartoday:string
date(today)
put"Greetings!!Thedatetodayis",today
Execute
Details
BewarnedthatTuringgetsthedatefromtheoperatingsystem.Ifthedateisisnotcorrectlysetintheoperatingsystem,thenthedateprocedurewillgiveincorrectresults.
Seealsodelay,clock,sysclock,wallclockandtimestatements.
SeealsopredefinedunitTime.
![Page 112: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/112.jpg)
declaration createavariable
Syntax
Adeclarationisoneof:
(a) variableDeclaration (b) constantDeclaration (c) typeDeclaration (d) bindDeclaration (e) procedureDeclaration (f) functionDeclaration (g) moduleDeclaration (h) classDeclaration (i) processDeclaration (j) monitorDeclaration (k) conditionDeclaration
Description
Adeclarationcreatesanewname(ornames)foravariable,constant,type,procedure,function,module,class,process,monitor,orcondition.Thesenamesarecalledidentifiers,whereidistheabbreviationforidentifier.
Example
varwidth:int%Variabledeclaration
constpi:=3.14159%Constantdeclaration
typerange:0..150%Typedeclaration
proceduregreet%Proceduredeclaration
put"Helloworld"
endgreet
Ordinarily,eachnewnamemustbedistinctfromnamesthatarealreadyvisible;thatis,redeclarationisnotallowed.Therearecertainexceptionstothisrule,forexample,namesofparametersandfieldsofrecordscanbethesameasexistingvisiblevariables.Variablesdeclaredinsideasubprogram(aprocedureandfunction)areallowedtobethesameasvariablesglobalto
![Page 113: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/113.jpg)
Details
(outsideof)thesubprogram.
Theeffectofadeclaration(itsscope)laststotheendoftheconstructinwhichthedeclarationoccurs;thiswillbetheendoftheprogram,theendofthesurroundingprocedure,functionormodule,theendofaloop,for,caseorbeginstatement,ortheendofthethen,elsif,orelseclauseofanifstatement,ortheendofthecasestatementalternative.
Anamemustbedeclaredbeforeitcanbeused;thisiscalledtheDBU(DeclarationBeforeUse)rule.Theexceptionstothisruleusethekeywordforward,asinimportlistsandincollectiondeclarations.
Adeclarationcanappearanyplaceastatementcanappear.ThisdiffersfromthePascallanguage,inwhichdeclarationsareallowedonlyatthebeginningoftheprogramoratthebeginningofaprocedureorfunction.Eachdeclarationcanoptionallybefollowedbyasemicolon(;).
Therearecertainrestrictionsontheplacementofdeclarations.Proceduresandfunctionscannotbedeclaredinsideotherproceduresandfunctionsnorinsidestatements(forexample,notinsideanifstatement).Abinddeclarationcannotappearattheouterlevelofeitherthemainprogramoramodule.Aconditiondeclarationcanappearonlyinsideamonitor.Processescannotbedeclaredinsideprocedures,functions,monitorsorclasses.Classescannotbedeclaredinsideclasses.However,modulesandmonitorscanbedeclaredinsideclassesandviceversa.Monitorscanbedeclaredinsidemodules,notviceversa.
![Page 114: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/114.jpg)
deferred subprogramdeclaration
Syntax
AdeferredDeclarationis:
deferredsubprogramHeader
Description
Aprocedureorfunctionisdeclaredtobedeferredwhenyouwanttobeabletooverridethesubprograminanexpansion.Theprocedureorfunctionmustbeinamodule,monitororclass.
Example
Thedisplayprocedureisdeferredinthisclassofstackstoallowvariouswaysofgraphicallydisplayingthestackonthescreen:
classstack
exportpush,pop
…localdeclarations…
…declarationsofthepushandpopprocedures…
deferredproceduredisplay(howbig:int)
endstack
Anexpansiontothestackclasscangiveabodyfordisplay,asin:
classstackWithSimpleDisplay
bodyproceduredisplay%(howbig:int)
…graphicallydisplaythestackonthescreen…
enddisplay
endstackWithSimpleDisplay
Thefollowingcreatesastackthatcanbedisplayedanddisplaysit:
varp:^stackWithSimpleDisplay
newp
…
p->display(25)%Displaythestackonthescreen
Adeferredprocedureisresolvedbygivingitsbody.Thiscanbedoneinthescope(module,monitororclass)containingthedeferreddeclaration(followingthedeferreddeclaration)orinanyexpansionofthatscope.Onlyoneresolutionperscopeisallowed.Unresolvedsubprogramscanbecalled,buttheyimmediatelyabort.
Allexportedsubprogramsareimplicitlydeferredandcanbe
![Page 115: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/115.jpg)
Details overriddeninexpansions.
Duringinitializationofamodule,monitororobjectofaclass,deferredsubprograms(includingexportedsubprograms)cannotbecalled.Thisrestrictionpreventsaccessinganobjectbeforeitisfullyinitialized.
Adeferreddeclarationmustnotappearinthemainprogram.
Seealsomodule,monitorandclass.Seealsoexportlist,importlist,inheritlist,implementlistandimplementbylist.
![Page 116: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/116.jpg)
delay procedure
Syntax delay(duration:int)
DescriptionThedelaystatementisusedtocausetheprogramtopauseforagiventime.Thetimedurationisinmilliseconds.
Example
Thisprogramprintstheintegers1to10withaseconddelaybetweeneach.
fori:1..10
puti
delay(1000)%Pausefor1second
endfor
Execute
Details
OnAppleMacintoshes,thehardwareresolutionofdurationisinunitsof17milliseconds(1/60thofasecond).Forexample,delay(500)willdelaytheprogrambyabouthalfasecond,butmaybeoffbyasmuchas17milliseconds.
Seealsosound,clock,sysclock,wallclock,timeanddatestatements.
SeealsopredefinedunitTime.
![Page 117: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/117.jpg)
Dir
Description
Thisunitcontainsthepredefinedsubprogramsthatdealwithdirectories.Youcanusethesesubprogramstolistthecontentsofdirectories,createdirectories,changedirectoriesandreturnthecurrentdirectory.
AllroutinesintheDirmoduleareexportedqualified(andthusmustbeprefacedwith"Dir.").
EntryPoints
Open Opensadirectorystreaminordertogetalistingofthedirectorycontents.
Get Getsthenextfilenameinthedirectorylisting.
GetLong Getsthenextfilenameandotherinformationinthedirectorylisting.
Close Closesthedirectorystream.Create Createsanewdirectory.Delete Deletesadirectory(mustbeempty).Change Changesthecurrentexecutiondirectory.Current Returnsthecurrentexecutiondirectory.Exists Returnswhetheradirectoryexists.
Details
PathnamesinTuringcanbeexpressedusingeitherforwardslashesorbackslashes.Forexample,Dir.Change("d:\\turingfiles\\assignment3")orDir.Change("d:/turingfiles/assignment3")arebothlegal.Notethatbackslashesmustbedoubledinstringliterals.The"."directoryrepresentthecurrentdirectory(asinDir.Open(".")),andthe".."directoryrepresentstheparentdirectory.Forexample,ifthecurrentexecutiondirectoryis"d:/turingfiles/assignment3",thenDir.Change("..")changesthecurrentexecutiondirectoryto"d:/turingfiles".
Seealso
Fileunitformoreexplanationofthedifferentwaysofspecifyingapathnameofafileordirectoryunderthedifferentoperatingsystems.
![Page 118: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/118.jpg)
Dir.Change PartofDirmodule
Syntax Dir.Change(directoryPathName:string)
Description
Dir.ChangechangestheexecutiondirectorytothatspecifiedbytheparameterdirectoryPathName.ThisistheequivalentofdoingacdinUNIX.
UnderMicrosoftWindows,specifyingadriveinthedirectoryPathNameparametercausesthedrivetobecomethedefaultdrive(unliketheDOScdcommand).
Details
IftheDir.Changecallfails,thenError.Lastwillreturnanon-zerovalueindicatingthereasonforthefailure.Error.LastMsgwillreturnastringwhichcontainsthetextualversionoftheerror.
Example
Thisprogramchangestothedirectorycalled/usr/westandthenliststhecurrentdirectory.
Dir.Change("/usr/west")
ifError.Last=eNoErrorthen
put"Directorychanged"
else
put"Didnotchangethedirectory."
put"Error:",Error.LastMsg
endif
put"Thecurrentexecutiondirectoryis",Dir.Current
Example
AnexampledemonstratingtheuseofseveraloftheDirsubprogramsisavailable.Inthisexample,adirectoryiscreated,afileiswrittentothedirectory,anattemptismadetodeletethedirectory,thefileisdeleted,andthenthedirectoryisdeleted.
ThisexampledemonstratestheuseofDir.Change,Dir.Current,Dir.Create,andDir.Delete.
![Page 119: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/119.jpg)
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingDir.Change,notbycallingChange.
![Page 120: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/120.jpg)
Dir.Close PartofDirmodule
Syntax Dir.Close(streamNumber:int)
Description
Dir.Closeispartofaseriesoffoursubprogramsthathelpusersgetdirectorylistings.Dir.CloseisusedtocloseadirectorystreamnumberopenedbyDir.Open.Afterthedirectorystreamnumberisclosed,itcannotbeusedwithDir.GetorDir.GetLong.
Details
IftheDir.Closecallfails,thenError.Lastwillreturnanon-zerovalueindicatingthereasonforthefailure.Error.LastMsgwillreturnastringwhichcontainsthetextualversionoftheerror.
Example
Thisprogramprintsalistingofallthefilesinthedirectorydatafiles.
varstreamNumber:int
varfileName:string
streamNumber:=Dir.Open("datafiles")
assertstreamNumber>0
loop
fileName:=Dir.Get(streamNumber)
exitwhenfileName=""
putfileName
endloop
Dir.Close(streamNumber)
Execute
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingDir.Close,notbycallingClose.
![Page 121: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/121.jpg)
Dir.Create PartofDirmodule
Syntax Dir.Create(directoryPathName:string)
Description
Dir.CreateisusedtocreatethedirectoryspecifiedbytheparameterdirectoryPathName.ThisistheequivalentofdoingamkdirinDOSorUNIX.OntheMacintosh,itcreatesafolder.
Details
IftheDir.Createcallfails,thenError.Lastwillreturnanon-zerovalueindicatingthereasonforthefailure.Error.LastMsgwillreturnastringwhichcontainsthetextualversionoftheerror.
Example
Thisprogramcreatesthedirectorycalledinformation.
Dir.Create("information")
ifError.Last=eNoErrorthen
put"Directorycreated"
else
put"Didnotcreatethedirectory."
put"Error:",Error.LastMsg
endif
Example
AnexampledemonstratingtheuseofseveraloftheDirsubprogramsisavailable.Inthisexample,adirectoryiscreated,afileiswrittentothedirectory,anattemptismadetodeletethedirectory,thefileisdeleted,andthenthedirectoryisdeleted.
ThisexampledemonstratestheuseofDir.Change,Dir.Current,Dir.Create,andDir.Delete.
Exportedqualified.
![Page 122: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/122.jpg)
Status ThismeansthatyoucanonlycallthefunctionbycallingDir.Create,notbycallingCreate.
![Page 123: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/123.jpg)
Dir.Current PartofDirmodule
Syntax Dir.Current:string
DescriptionDir.Currentreturnsthefullpathnameofthecurrentexecutiondirectory.ThisistheequivalentofdoingapwdinUNIX.
Details
IftheDir.Currentcallfails,thenError.Lastwillreturnanon-zerovalueindicatingthereasonforthefailure.Error.LastMsgwillreturnastringwhichcontainsthetextualversionoftheerror.
Example
Thisprogramchangestothedirectorycalled/usr/westandthenliststhecurrentdirectory.
Dir.Change("/usr/west")
ifError.Last=eNoErrorthen
put"Directorychanged"
else
put"Didnotchangethedirectory."
put"Error:",Error.LastMsg
endif
put"Thecurrentexecutiondirectoryis",Dir.Current
Example
AnexampledemonstratingtheuseofseveraloftheDirsubprogramsisavailable.Inthisexample,adirectoryiscreated,afileiswrittentothedirectory,anattemptismadetodeletethedirectory,thefileisdeleted,andthenthedirectoryisdeleted.
ThisexampledemonstratestheuseofDir.Change,Dir.Current,Dir.Create,andDir.Delete.
Exportedqualified.
![Page 124: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/124.jpg)
Status ThismeansthatyoucanonlycallthefunctionbycallingDir.Current,notbycallingCurrent.
![Page 125: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/125.jpg)
Dir.Delete PartofDirmodule
Syntax Dir.Delete(directoryPathName:string)
Description
Dir.DeleteisusedtodeletethedirectoryspecifiedbytheparameterdirectoryPathName.ThisistheequivalentofdoingarmdirinDOSorUNIX.OntheMacintosh,itremovesafolder.
Dir.Deletewillfailifitattemptsdeleteadirectorythathasfilesinit.
Details
IftheDir.Deletecallfails,thenError.Lastwillreturnanon-zerovalueindicatingthereasonforthefailure.Error.LastMsgwillreturnastringwhichcontainsthetextualversionoftheerror.
Example
Thisprogramdeletesthedirectorycalledinformation.
Dir.Delete("information")
ifError.Last=eNoErrorthen
put"Directorydelete"
else
put"Didnotdeletethedirectory."
put"Error:",Error.LastMsg
endif
Example
AnexampledemonstratingtheuseofseveraloftheDirsubprogramsisavailable.Inthisexample,adirectoryiscreated,afileiswrittentothedirectory,anattemptismadetodeletethedirectory,thefileisdeleted,andthenthedirectoryisdeleted.
ThisexampledemonstratestheuseofDir.Change,Dir.Current,Dir.Create,andDir.Delete.
![Page 126: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/126.jpg)
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingDir.Delete,notbycallingDelete.
![Page 127: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/127.jpg)
Dir.Exists PartofDirmodule
Syntax Dir.Exists(directoryPathName:string):boolean
Description
Dir.ExistsreturnstrueifadirectorybythenameofdirectoryPathNameexists.ItwillreturnfalseifdirectoryPathNameisafile.
Details
IftheDir.Existsreturnsfalse,youcanexamineError.LastorError.LastMsgformoreinformation(i.e.whetherthepathfailedorthedirectorywassimplynotfound).
Example
Thefollowingprogramdeterminesifthedirectory"d:/usr/west"exists,andoutputsanerrormessageifitdoesnot.
ifDir.Exists("d:/usr/west")then
put"Directoryexists"
else
put"Directorydoesnotexists:",Error.LastMsg
endif
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingDir.Exists,notbycallingExists.
![Page 128: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/128.jpg)
Dir.Get PartofDirmodule
Syntax Dir.Get(streamNumber:int):string
Description
Dir.Getispartofaseriesoffoursubprogramsthathelpusersgetdirectorylistings.Dir.Getisusedtogetthefilenamesinthedirectory.Eachtimethefunctioniscalled,itreturnsthenextfilenameinthedirectory.Thenamesarenotsorted.Whentherearenomorefilenamesinthedirectory,Dir.Getreturnstheemptystring.
Details
IftheDir.Getcallfails,thenError.Lastwillreturnanon-zerovalueindicatingthereasonforthefailure.Error.LastMsgwillreturnastringwhichcontainsthetextualversionoftheerror.
Example
Thisprogramprintsalistingofallthefilesinthedirectorydatafiles.
varstreamNumber:int
varfileName:string
streamNumber:=Dir.Open("datafiles")
assertstreamNumber>0
loop
fileName:=Dir.Get(streamNumber)
exitwhenfileName=""
putfileName
endloop
Dir.Close(streamNumber)
Execute
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingDir.Get,
![Page 129: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/129.jpg)
notbycallingGet.
![Page 130: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/130.jpg)
Dir.GetLong PartofDirmodule
SyntaxDir.GetLong(streamNumber:int,varentryName:string varsize,attribute,fileTime:int)
Description
Dir.GetLongispartofaseriesoffoursubprogramsthathelpusersgetdirectorylistings.Dir.GetLongisusedtogetthenamesandassortedinformationofthefilesinthedirectory.Eachtimethefunctioniscalled,itreturnsthenameandinformationofthenextfileinthedirectory.Thenamesarenotsorted.Whentherearenomorefilenamesinthedirectory,Dir.GetLongreturnstheemptystringintheentryNameparameter.
Thesizeparameteristhesizeofthefileinbytes.Theattributeparameterhasitsindividualbitssetasfollows(theindividualbitscanbeextractedusingthebitsoperator):
Bit0attrDirsetto1ifentryisadirectory.
Bit1attrReadsetto1iftheprogramcanreadthefile.
Bit2attrWritesetto1iftheprogramcanwritethefile.
Bit3attrExecutesetto1iftheprogramcanexecutethefile.
Bit4attrHiddensetto1iftheentryifahiddenfile(PC,Mac).
Bit5attrSystemsetto1iftheentryisasystemfile(PConly).
Bit6attrVolumesetto1iftheentryisavolumename(PConly).
Bit7attrArchivesetto1iftheentryhasarchivebitset(PConly).
Theattr...constantsaredefinedintheDirunit.Theycorrespondtothevaluesofattributeifaspecifiedbitisset.Forexample,attrSystemisthevalueoftheattributeparameterifbit5issetto1.Youcanandororconstantstogetcombinationsofspecificfileattributes.
ThefileTimeisthetimeoflastmodificationofthefile.Itisreturnedasthenumberofsecondssince00:00:00GMT1/1/1970.Toconvertthistoa
![Page 131: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/131.jpg)
string,useTime.SecDate
Details
IftheDir.GetLongcallfails,thenError.Lastwillreturnanon-zerovalueindicatingthereasonforthefailure.Error.LastMsgwillreturnastringwhichcontainsthetextualversionoftheerror.
Example
Thisprogramprintsalistingofallthefilesinthedirectorydatafiles
varstreamNumber:int
varfileName:string
varsize,attribute,fileTime:int
streamNumber:=Dir.Open("datafiles")
assertstreamNumber>0
loop
Dir.GetLong(streamNumber,fileName,size,attribute,fileTime
exitwhenfileName=""
putfileName,"",Time.SecDate(fileTime)
endloop
Dir.Close(streamNumber)
Example
Thisprogramprintsalistingoftheattributesofallthefilesinthecurrentdirectory.
varstreamNumber:int
varfileName:string
varsize,attribute,fileTime:int
streamNumber:=Dir.Open(Dir.Current)
assertstreamNumber>0
loop
Dir.GetLong(streamNumber,fileName,size,attribute,fileTime
exitwhenfileName=""
putfileName,""..
if(attributeandattrDir)not=0then
put"Directory"..
endif
if(attributeandattrRead)not=0then
put"Readable"..
endif
if(attributeandattrWrite)not=0then
put"Writeable"..
endif
if(attributeandattrExecute)not=0then
put"Executable"..
endif
put""
endloop
![Page 132: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/132.jpg)
Dir.Close(streamNumber)
Execute
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingDir.GetLongbycallingGetLong.
![Page 133: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/133.jpg)
Dir.Open PartofDirmodule
Syntax Dir.Open(directoryPathName:string):int
Description
Dir.Openispartofaseriesoffoursubprogramsthathelpusersgetdirectorylistings.Dir.Openreturnsadirectorystreamnumberifthedirectorycouldbeopened.ThisstreamnumbercanbeusedtogetfilenamesandinformationusingtheDir.GetandDir.GetLongsubprograms.Aftergettingthelisting,theusershouldcallDir.Close.
Details
IftheDir.Opencallfails,thenError.Lastwillreturnanon-zerovalueindicatingthereasonforthefailure.Error.LastMsgwillreturnastringwhichcontainsthetextualversionoftheerror.
Example
Thisprogramprintsalistingofallthefilesinthecurrentdirectory.
varstreamNumber:int
varfileName:string
streamNumber:=Dir.Open(Dir.Current)
assertstreamNumber>0
loop
fileName:=Dir.Get(streamNumber)
exitwhenfileName=""
putfileName
endloop
Dir.Close(streamNumber)
Execute
Status
Exportedqualified.
Thismeansthatyoucanonlycallthefunctionbycalling
![Page 134: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/134.jpg)
Dir.Open,notbycallingOpen.
![Page 135: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/135.jpg)
div integertruncatingdivisionoperator
Syntax div
Description
Thedivoperatordividesonenumberbyanotherandproducestheintegerresult,truncatedinthedirectionofzero.Forexample,7div2produces3and-7div2produces-3.
Example
Inthisexample,eggCountisthetotalnumberofeggs.Thefirstputstatementdetermineshowmanydozeneggsthereare.Thesecondputstatementdetermineshowmanyextraeggstherearebeyondthelastdozen.
vareggCount:int
geteggCount
put"Youhave",eggCountdiv12,"dozeneggs"
put"Youhave",eggCountmod12,"leftover"
Execute
Seealso infixoperators,precedenceofoperatorsandthemodoperator.
![Page 136: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/136.jpg)
Draw
Description
Thisunitcontainsthepredefinedsubprogramsthatdealwithdrawingpixelgraphicstothescreen.
AllroutinesintheDrawunitareexportedqualified(andthusmustbeprefacedwith"Draw.").
EntryPoints
Cls Clearsthescreentocolor0.Dot Drawsadot.Line Drawsaline.DashedLine Drawsadashedordottedline.ThickLine Drawsathickline.Box Drawsabox.FillBox Drawsafilledbox.Oval Drawsanoval.FillOval Drawsafilledoval.Arc Drawsanarc.FillArc Drawsafilledarcorawedge.Polygon Drawsapolygon.FillPolygon Drawsafilledpolygon.MapleLeaf Drawsamapleleaf.FillMapleLeaf Drawsafilledmapleleaf.Star Drawsastar.FillStar Drawsafilledstar.Fill Doesafloodfill.Text Drawstextasgraphics
![Page 137: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/137.jpg)
Draw.Arc PartofDrawmodule
SyntaxDraw.Arc(x,y,xRadius,yRadius:int, initialAngle,finalAngle,Color:int)
Description
TheDraw.Arcprocedureisusedtodrawanarcwhosecenterisat(x,y).ThisisjustlikeDraw.Oval,exceptthatyoumustalsogivetwoangles,initialAngleandfinalAngle,whichdeterminewheretostartandstopdrawing.Zerodegreesis"threeo'clock",90degreesis"twelveo'clock",etc.ThehorizontalandverticaldistancesfromthecentertothearcaregivenbyxRadiusandyRadius.
Example
Thisprogramdrawsaquartercirclewhosecenteris(midx,midy)thecenterofthescreen,usingcolornumber1.Themaxxandmaxyfunctionsareusedtodeterminethemaximumxandyvaluesonthescreen.
View.Set("graphics")
constmidx:=maxxdiv2
constmidy:=maxydiv2
Draw.Arc(midx,midy,midx,midy,0,90,1)
Execute
DetailsThescreenmustbeina"graphics"mode.SeetheView.Setprocedurefordetails.Ifthescreenisnotina"graphics"mode,anerrorwilloccur
![Page 138: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/138.jpg)
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingDraw.Arc,notbycallingArc.
SeealsoView.Set,maxx,maxyandthevariousproceduresintheDrawunit.
![Page 139: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/139.jpg)
Draw.Box PartofDrawmodule
Syntax Draw.Box(x1,y1,x2,y2,Color:int)
Description
TheDraw.Boxprocedureisusedtodrawaboxonthescreenwithbottomleftandtoprightcornersof(x1,y1)to(x2,y2)usingthespecifiedColor.
Example
Thisprogramdrawsalargebox,reachingtoeachcornerofthescreenusingcolornumber12.Themaxxandmaxyfunctionsareusedtodeterminethemaximumxandyvaluesonthescreen.Thepoint(0,0)istheleftbottomofthescreenand(maxx,maxy)istherighttop.
View.Set("graphics")
Draw.Box(0,0,maxx,maxy,12)
Execute
Details
Thescreenmustbeina"graphics"mode.SeetheView.Setprocedurefordetails.Ifthescreenisnotina"graphics"mode,anerrorwilloccur.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingDraw.Box,notbycallingBox.
View.Set,maxx,maxyandthevariousproceduresintheDraw
![Page 140: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/140.jpg)
Seealso unit.
![Page 141: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/141.jpg)
Draw.Cls PartofDrawmodule
Syntax Draw.Cls
DescriptionTheDraw.Cls(clearscreen)procedureisusedtoblanktheoutputwindowThecursorissettothetopleft(torow1,column1).
Details
TheDraw.Clsproceduresetsallpixelsintheoutputwindowtocolor0.InthiswayitdiffersfromtheclsandText.Clsprocedureswhichsetthescreentothetextbackgroundcolor.
Thescreenmustbein"graphics"mode.SeeView.Setfordetails.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingDraw.Cls,notbycallingCls.
SeealsoView.Set,maxx,maxyandthevariousproceduresintheDrawunit.
![Page 142: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/142.jpg)
Draw.DashedLine PartofDrawmodule
Syntax Draw.DashedLine(x1,y1,x2,y2,lineStyle,Color:int)
Description
TheDraw.DashedLineprocedureisusedtodrawadottedordashedlineonthescreenfrom(x1,y1)to(x2,y2)usingthespecifiedColor.
Therearefivepossiblelinestyles:drawSolidDrawsasolidline(sameasDraw.Line)drawDashDrawsadashedlinedrawDotDrawsadottedlinedrawDashDotDrawsalinethatalternatesdashesanddotsdrawDashDotDotDrawsalinethatalternatesdashanddot-dot
Example
ThisprogramdrawsalargeX,reachingtoeachcornerofthescreenintwodifferentcolors.Themaxxandmaxyfunctionsareusedtodeterminethemaximumxandyvaluesonthescreen.Thepoint(0,0)istheleftbottomofthescreen,(maxx,maxy)istherighttop,etc.
View.Set("graphics")
%Drawalineineachofthestyles.
Draw.DashedLine(0,50,maxx,50,drawSolid,brightred)
Draw.DashedLine(0,100,maxx,100,drawDash,brightred)
Draw.DashedLine(0,150,maxx,150,drawDot,brightred)
Draw.DashedLine(0,200,maxx,200,drawDashDot,brightred)
Draw.DashedLine(0,250,maxx,250,drawDashDotDot,brightred)
Execute
DetailsThescreenmustbeina"graphics"mode.SeetheView.Setprocedurefordetails.Ifthescreenisnotina"graphics"mode,anerrorwilloccur.
![Page 143: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/143.jpg)
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingDraw.DashedLine,notbycallingDashedLine.
Seealso View.Set,maxx,maxyandthevariousproceduresintheDrawunit.
![Page 144: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/144.jpg)
Draw.Dot PartofDrawmodule
Syntax Draw.Dot(x,y,Color:int)
Description
TheDraw.Dotprocedureisusedtocolorthedot(pixel)atlocation(x,y)usingthespecifiedColor.
Example
Thisprogramrandomlydrawsdotswithrandomcolors.Themaxx,maxyandmaxcolorfunctionsgivethemaximumx,yandcolorvalues.
View.Set("graphics")
varx,y,c:int
loop
x:=Rand.Int(0,maxx)%Randomx
y:=Rand.Int(0,maxy)%Randomy
c:=Rand.Int(0,maxcolor)%Randomcolor
Draw.Dot(x,y,c)
endloop
Execute
DetailsThescreenmustbeina"graphics"mode.Ifthescreenisnotina
![Page 145: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/145.jpg)
"graphics"mode,anerrorwilloccur.SeeView.Setfordetails.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingDraw.Dot,notbycallingDot.
SeealsoView.Set,maxx,maxyandthevariousproceduresintheDrawunit.
![Page 146: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/146.jpg)
Draw.Fill PartofDrawmodule
Syntax Draw.Fill(x,y:int,fillColor,borderColor:int)
Description
TheDraw.Fillprocedureisusedtocolorinafigurethatisonthescreen.Startingat(x,y),thefigureisfilledwithfillColortoasurroundingborderwhosecolorisborderColor.
Example
Thisprogramdrawsanovalwithxandyradiusof10inthecenterofthescreeninbrightgreen.Thentheovalisfilledwithred.Themaxxandmaxyfunctionsareusedtodeterminethemaximumxandyvaluesonthescreen.
View.Set("graphics")
constmidx:=maxxdiv2
constmidy:=maxydiv2
Draw.Oval(midx,midy,10,10,brightgreen)
Draw.Fill(midx,midy,red,brightgreen)
Execute
Details
Thescreenmustbeina"graphics"mode.SeetheView.Setprocedurefordetails.Ifthescreenisnotina"graphics"mode,anerrorwilloccur.
Status
Exportedqualified.
Thismeansthatyoucanonlycallthefunctionbycalling
![Page 147: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/147.jpg)
Draw.Fill,notbycallingFill.
SeealsoView.Set,maxx,maxyandthevariousproceduresintheDrawunit.
![Page 148: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/148.jpg)
Draw.FillArc
SyntaxDraw.FillArc(x,y,xRadius,yRadius:int, initialAngle,finalAngle,Color:int)
Description
TheDraw.FillArcprocedureisusedtodrawafilledarcwhosecenterisat(x,y).Itthenfillsinthepie-shapedwedgeusingthespecifiedColor.Tooutlineafilledarc,useDraw.FillArcwiththeColorparametersettothefillcolorandthenDraw.ArcwiththeColorparametersettothebordercolor.ForinitialAngleandfinalAngle,whichdeterminetheedgesofthewedge,zerodegreesis"threeo'clock"and90degreesis"twelveo'clock",etc.ThehorizontalandverticaldistancesfromthecentertothearcaregivenbyxRadiusandyRadius.
Example
Thisprogramdrawsafilledsemicircle(actually,anapproximationtoasemicircle)whosecenteris(midx,0)thebottomcenterofthescreen,inbrightred.Themaxxandmaxyfunctionsareusedtodeterminethemaximumxandyvaluesonthescreen.
View.Set("graphics")
constmidx:=maxxdiv2
Draw.FillArc(midx,0,maxy,maxy,0,180,brightred
Execute
Thescreenmustbeina"graphics"mode.SeetheView.Set
![Page 149: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/149.jpg)
Details procedurefordetails.Ifthescreenisnotina"graphics"mode,anerrorwilloccur.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingDraw.FillArc,notbycallingFillArc.
SeealsoView.Set,maxx,maxyandthevariousproceduresintheDrawunit.
![Page 150: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/150.jpg)
Draw.FillBox
Syntax Draw.FillBox(x1,y1,x2,y2,Color:int)
Description
TheDraw.FillBoxprocedureisusedtodrawafilledboxonthescreenwithbottomleftandtoprightcornersof(x1,y1)to(x2,y2)filledusingthespecifiedColor.Togetaboxoutlinedinadifferentcolor,useDraw.FillBoxwiththeColorparametersettothefillcolorandthencallDraw.BoxwiththeColorparametersettothebordercolor.
Example
Thisprogramwillfillthebottomhalfofthescreenwithcolor1andthenoutlineitincolor2.Themaxxandmaxyfunctionsareusedtodeterminethemaximumxandyvaluesonthescreen.Thepoint(0,0)istheleftbottomofthescreenand(maxx,maxy)istherighttop.
View.Set("graphics")
Draw.FillBox(0,0,maxx,maxydiv2,1)
Draw.Box(0,0,maxx,maxydiv2,2)
Execute
Details
Thescreenmustbeina"graphics"mode.SeetheView.Setprocedurefordetails.Ifthescreenisnotina"graphics"mode,anerrorwilloccur.
Exportedqualified.
![Page 151: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/151.jpg)
Status ThismeansthatyoucanonlycallthefunctionbycallingDraw.FillBox,notbycallingFillBox.
SeealsoView.Set,maxx,maxyandthevariousproceduresintheDrawunit.
![Page 152: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/152.jpg)
Draw.FillMapleLeaf
Syntax Draw.FillMapleLeaf(x1,y1,x2,y2,Color:int)
Description
TheDraw.FillMapleLeafprocedureisusedtodrawafilledmapleleafonthescreenboundedbyarectanglewithbottomleftandtoprightcornersof(x1,y1)to(x2,y2)andfilledusingthespecifiedColor.Togetamapleleafoutlinedinadifferentcolor,useDraw.FillMapleLeafwiththeColorparametersettothefillcolorandthencallDraw.MapleLeafwiththeColorparametersettothebordercolor.Ify1isgreaterthany2,thenthemapleleafisdrawnupsidedown.
Example
Thisprogramwilldrawtwomapleleavesbesideeachother.Thefirstwillbeoutlinedinblackandfilledinbrightred.Thesecondmapleleafwillbeupsidedownandbothfilledandoutlinedingreen.
View.Set("graphics")
Draw.FillMapleLeaf(0,0,100,100,brightred)
Draw.MapleLeaf(0,0,100,100,black)
Draw.FillMapleLeaf(150,100,250,0,green)
Execute
TheDraw.FillMapleLeafprocedureisusefulfordrawingthe
![Page 153: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/153.jpg)
Details
Canadianflag.
Thescreenshouldbeina"graphics"mode.SeetheView.Setprocedurefordetails.Ifthescreenisnotina"graphics"mode,itwillautomaticallybesetto"graphics"mode.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingDraw.FillMapleLeaf,notbycallingFillMapleLeaf.
SeealsoView.Set,maxx,maxyandthevariousproceduresintheDrawunit.
![Page 154: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/154.jpg)
Draw.FillOval
Syntax Draw.FillOval(x,y,xRadius,yRadius,Color:int)
Description
TheDraw.FillOvalprocedureisusedtodrawafilledovalwhosecenterisat(x,y).ThehorizontalandverticaldistancesfromthecentertotheovalaregivenbyxRadiusandyRadius.Togetanovaloutlinedinadifferentcolor,useDraw.FillOvalwiththeColorparametersettothefillcolorandthencallDraw.OvalwiththeColorparametersettothebordercolor.
Example
Thisprogramdrawsalargefilledovalthatjusttoucheseachedgeofthescreenusingcolornumber1.Themaxxandmaxyfunctionsareusedtodeterminethemaximumxandyvaluesonthescreen.Thecenteroftheovalisat(midx,midy),whichisthemiddleofthescreen.
View.Set("graphics")
constmidx:=maxxdiv2
constmidy:=maxydiv2
Draw.FillOval(midx,midy,midx,midy,1)
Execute
Details
Ideally,acircleisdrawnwhenxRadius=yRadius.
Thescreenmustbeina"graphics"mode.SeetheView.Set
![Page 155: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/155.jpg)
procedurefordetails.Ifthescreenisnotina"graphics"mode,amerrorwilloccur.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingDraw.FillOval,notbycallingFillOval.
SeealsoView.Set,maxx,maxyandthevariousproceduresintheDrawunit.
![Page 156: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/156.jpg)
Draw.FillPolygon
Syntax Draw.FillPolygon(x,y:array1..*ofint,n:int,Color:int)
Description
TheDraw.FillPolygonprocedureisusedtodrawafilledpolygonwithnpoints.Thepolygonisdescribedbythepoints(x(1),y(1))to(x(2),y(2))to(x(3),y(3))andsoonto(x(n),y(n)).ThepolygonwillbedrawnandfilledwithColor.
Togetanpolygonoutlinedinadifferentcolor,useDraw.FillPolygonwiththeColorparametersettothefillcolorandthencallDraw.PolygonwiththeColorparametersettothebordercolor.
Example
Thisprogramwillcreateafilledoctagonanddisplayitinbrightblueandthenoutlineitincyan.
View.Set("graphics")
varx:array1..8ofint:=init(100,100,135,185,
220,220,185,135)
vary:array1..8ofint:=init(100,150,185,185,
150,100,65,65)
Draw.FillPolygon(x,y,8,brightblue)
Draw.Polygon(x,y,8,cyan)
Execute
Details
ThePCallowsamaximumof256points.Aswell,Draw.FillPolygoncanfail(duetolackofmemory).Iffailureoccurs,itwilltrytodrawanoutlineofthepolygon.Ifthatalsofails,itwillnotdrawanything.
Thescreenmustbeina"graphics"mode.SeetheView.Setprocedurefordetails.Ifthescreenisnotina"graphics"mode,an
![Page 157: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/157.jpg)
errorwilloccur.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingDraw.FillPolygon,notbycallingFillPolygon.
SeealsoView.Set,maxx,maxyandthevariousproceduresintheDrawunit.
![Page 158: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/158.jpg)
Draw.FillStar PartofDrawmodule
Syntax Draw.FillStar(x1,y1,x2,y2,Color:int)
Description
TheDraw.FillStarprocedureisusedtodrawafilledfivepointedstaronthescreenboundedbyarectanglewithbottomleftandtoprightcornersof(x1,y1)to(x2,y2)andfilledusingthespecifiedColor.Togetastaroutlinedinadifferentcolor,useDraw.FillStarwiththeColorparametersettothefillcolorandthencallDraw.StarwiththeColorparametersettothebordercolor.Ify1isgreaterthany2,thenthestarisdrawnupsidedown.
Example
Thisprogramwilldrawtwostarsbesideeachother.Thefirstwillbeoutlinedincolor1andfilledincolor2.Thesecondstarwillbeupsidedownandbothfilledandoutlinedincolor3.
View.Set("graphics")
Draw.FillStar(0,0,100,100,brightred)
Draw.Star(0,0,100,100,green)
Draw.FillStar(150,100,250,0,brightblue)
Execute
TheDraw.FillStarprocedureisusefulfordrawingtheAmericanflag.
![Page 159: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/159.jpg)
Details Thescreenmustbeina"graphics"mode.SeetheView.Setprocedurefordetails.Ifthescreenisnotina"graphics"mode,anerrorwilloccur.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingDraw.FillStar,notbycallingFillStar.
SeealsoView.Set,maxx,maxyandthevariousproceduresintheDrawunit.
![Page 160: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/160.jpg)
Draw.Line PartofDrawmodule
Syntax Draw.Line(x1,y1,x2,y2,Color:int)
Description
TheDraw.Lineprocedureisusedtodrawalineonthescreenfrom(x1,y1)to(x2,y2)usingthespecifiedColor.
Example
ThisprogramdrawsalargeX,reachingtoeachcornerofthescreenusingcolornumber1.Themaxxandmaxyfunctionsareusedtodeterminethemaximumxandyvaluesonthescreen.Thepoint(0,0)istheleftbottomofthescreen,(maxx,maxy)istherighttop,etc.
View.Set("graphics")
%Firstdrawalinefromtheleftbottomtorighttop
Draw.Line(0,0,maxx,maxy,1)
%Nowdrawalinefromthelefttoptorightbottom
Draw.Line(0,maxy,maxx,0,1)
Execute
Details
Thescreenmustbeina"graphics"mode.SeetheView.Setprocedurefordetails.Ifthescreenisnotina"graphics"mode,anerrorwilloccur.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingDraw.Line,notbycallingLine.
![Page 161: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/161.jpg)
SeealsoView.Set,maxx,maxyandthevariousproceduresintheDrawunit.
![Page 162: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/162.jpg)
Draw.MapleLeaf PartofDrawmodule
Syntax Draw.MapleLeaf(x1,y1,x2,y2,Color:int)
Description
TheDraw.MapleLeafprocedureisusedtodrawamapleleafonthescreenboundedbyarectangledescribedbythebottomleftandtoprightcornersof(x1,y1)to(x2,y2)usingthespecifiedColor.Ify1isgreaterthany2,thenthemapleleafisdrawnupsidedown.
Example
Thisprogramwilldrawtwomapleleavesbesideeachother.Thefirstwillbeinredandthesecondmapleleafwillbeupsidedownandinyellow.
View.Set("graphics")
Draw.MapleLeaf(0,0,100,100,red)
Draw.MapleLeaf(150,100,250,0,yellow)
Execute
Details
TheDraw.MapleLeafprocedureisusefulfordrawingtheCanadianflag.
Thescreenmustbeina"graphics"mode.SeetheView.Setprocedurefordetails.Ifthescreenisnotina"graphics"mode,anerrorwilloccur.
![Page 163: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/163.jpg)
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingDraw.MapleLeaf,notbycallingMapleLeaf.
SeealsoView.Set,maxx,maxyandthevariousproceduresintheDrawunit.
![Page 164: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/164.jpg)
Draw.Oval PartofDrawmodule
Syntax Draw.Oval(x,y,xRadius,yRadius,Color:int)
Description
TheDraw.Ovalprocedureisusedtodrawanovalwhosecenterisat(x,y).ThehorizontalandverticaldistancesfromthecentertotheovalaregivenbyxRadiusandyRadius.
Example
Thisprogramdrawsalargeovalthatjusttoucheseachedgeofthescreeninmagenta.Themaxxandmaxyfunctionsareusedtodeterminethemaximumxandyvaluesonthescreen.Thecenteroftheovalisat(midx,midy),whichisthemiddleofthescreen.
View.Set("graphics")
constmidx:=maxxdiv2
constmidy:=maxydiv2
Draw.Oval(midx,midy,midx,midy,magenta)
Execute
Details
Ideally,acircleisdrawnwhenxRadius=yRadius.Infact,theaspectratio(theratioofheighttowidthofpixelsdisplayedonthescreen)oftheIBMPCcompatiblesisnot1.0,sothisdoesnotdrawatruecircle.InCGAgraphicsmodethisratiois5to4.
Thescreenmustbeina"graphics"mode.SeetheView.Setprocedurefordetails.Ifthescreenisnotina"graphics"mode,an
![Page 165: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/165.jpg)
errorwilloccur.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingDraw.Oval,notbycallingOval.
SeealsoView.Set,maxx,maxyandthevariousproceduresintheDrawunit.
![Page 166: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/166.jpg)
Draw.Polygon PartofDrawmodule
Syntax Draw.Polygon(x,y:array1..*ofint,n:int,Color:int)
Description
TheDraw.Polygonprocedureisusedtodrawapolygonwithnpoints.AlineisdrawninColorfromthepoint(x(1),y(1))to(x(2),y(2))to(x(3),y(3))andsoon.Afterdrawingthelineto(x(n),y(n)),alinewillbedrawnbackto(x(1),y(1)),closingthepolygon.TheDraw.Polygonprocedureisequivalentto:
fori:1..n-1
Draw.Line(x(i),y(i),x(i+1),y(i+1),
endfor
Draw.Line(x(n),y(n),x(1),y(1),Color)
Example
Thisprogramwillcreateanoctagonanddisplayitincolor1.
View.Set("graphics")
varx:array1..8ofint:=init(100,100,135,185,
220,220,185,135)
vary:array1..8ofint:=init(100,150,185,185,
150,100,65,65)
Draw.Polygon(x,y,8,brightblue)
Execute
Details
TheIBMPClimitsDraw.Polygontoamaximumof256points.
Thescreenmustbeina"graphics"mode.SeetheView.Setprocedurefordetails.Ifthescreenisnotina"graphics"mode,anerrorwilloccur.
Status
Exportedqualified.
Thismeansthatyoucanonlycallthefunctionbycalling
![Page 167: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/167.jpg)
Draw.Polygon,notbycallingPolygon.
SeealsoView.Set,maxx,maxyandthevariousproceduresintheDrawunit.
![Page 168: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/168.jpg)
Draw.Star PartofDrawmodule
Syntax Draw.Star(x1,y1,x2,y2,Color:int)
Description
TheDraw.Starprocedureisusedtodrawastaronthescreenboundedbyarectangledescribedbythebottomleftandtoprightcornersof(x1,y1)to(x2,y2)usingthespecifiedColor.Ify1isgreaterthany2thenthestarisdrawnupsidedown.
Example
Thisprogramwilldrawtwostarsbesideeachother.Thefirststarwillbeincolor1andthesecondstarwillbeupsidedownandincolor2.
View.Set("graphics")
Draw.Star(0,0,100,100,brightred)
Draw.Star(150,100,250,0,brightblue)
Execute
Details
TheDraw.StarprocedureisusefulfordrawingtheAmericanflag.
Thescreenmustbeina"graphics"mode.SeetheView.Setprocedurefordetails.Ifthescreenisnotina"graphics"mode,anerrorwilloccur.
![Page 169: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/169.jpg)
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingDraw.Star,notbycallingStar.
SeealsoView.Set,maxx,maxyandthevariousproceduresintheDrawunit.
![Page 170: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/170.jpg)
Draw.Text PartofDrawmodule
Syntax Draw.Text(txtStr:string,x,y,fontID,Color:int)
Description
Draw.Textisusedtoactuallydrawtextinaspecifiedfont.ThetextStrparametercontainsthestringtobedrawn.Thexandyparamtersarethelocationofthelowerlefthandcornerofthetexttobedisplayed.Theparameteristhenumberofthefontinwhichthetextistobedrawn.Theparameterisusedtospecifythecolorinwhichthetextistoappear.
Notethatthetextthatappearsiscompletelyunrelatedtothetextthatappearsusingput.Draw.Textisagraphicscommandandthusdoesnotuseoraffectthecursorlocation.
ThetextdrawnbytheDraw.Textproceduredoesnoterasethebackground.
Details
IfDraw.TextispassedaninvalidfontID,afatalerroroccurs.IftheDraw.Textcallfailsforother(non-fatal)reasonsthenError.Lastwillreturnanon-zerovalueindicatingthereasonforthefailure.Error.LastMsgastringwhichcontainsthetextualversionoftheerror.
DetailsDraw.TextisidenticaltoFont.Draw.Itisplacedhereforconsistencywithotherpixelgraphicsdrawingroutines.
Example
Theprogramdrawsaphraseinredsurroundedbyaboxinbrightblue.
varfont:int
font:=Font.New("serif:12")
assertfont1>0
varwidth:int:=Font.Width("Thisisinaseriffont",
varheight,ascent,descent,internalLeading:int
Font.Sizes(font,height,ascent,descent,internalLeading
Draw.Text("Thisisinaseriffont",50,30,font
Draw.Box(50,30+descent,50+width,30+height
Font.Free(font)
Execute
![Page 171: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/171.jpg)
DetailsTousethesamefontasisusedbytheputstatement,usedefFontIDfontnumber.Thisfontdoesnothavetobecreatedorfreedbytheuser,andallowsaprogramtoquicklyplacetextinanylocationonthescreen.
Example
Theprogramdrawstwostringsinthedefaultfont(defFontID).
Draw.Text("DrawingHere",100,120,defFontID,
Draw.Text("andHere",180,90,defFontID,brightgreen
Execute
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingDraw.TextcallingText.
SeeAlso Fontmoduleformoreinformationaboutselectingthefonttobedisplayed.
![Page 172: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/172.jpg)
Draw.ThickLine PartofDrawmodule
Syntax Draw.ThickLine(x1,y1,x2,y2,lineWidth,Color:int)
Description
TheDraw.ThickLineprocedureisusedtodrawalineonthescreenfrom(to(x2,y2)usingthespecifiedColor.
Example
ThisprogramdrawsalargeX,reachingtoeachcornerofthescreenintwodifferentcolors.Themaxxandmaxyfunctionsareusedtodeterminethemaximumxandyvaluesonthescreen.Thepoint(0,0)istheleftbottomofthescreen,(maxx,maxy)istherighttop,etc.
View.Set("graphics")
%Firstdrawalineof5pixelwidthfromtheleftbottomtorighttop
Draw.ThickLine(0,0,maxx,maxy,5,brightred)
%Nowdrawalineof5pixelwidthfromthelefttoptorightbottom
Draw.ThickLine(0,maxy,maxx,0,5,brightgreen)
Execute
DetailsThescreenmustbeina"graphics"mode.SeetheView.Setprocedurefordetails.Ifthescreenisnotina"graphics"mode,anerrorwilloccur.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingDraw.ThickLinecallingThickLine.
Seealso View.Set,maxx,maxyandthevariousproceduresintheDrawunit.
![Page 173: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/173.jpg)
drawarc graphicsprocedure
Syntaxdrawarc(x,y,xRadius,yRadius:int, initialAngle,finalAngle,Color:int)
Description
Thedrawarcprocedureisusedtodrawanarcwhosecenterisat(x,y).Thisisjustlikedrawoval,exceptthatyoumustalsogivetwoangles,initialAngleandfinalAngle,whichdeterminewheretostartandstopdrawing.Zerodegreesis"threeo'clock",90degreesis"twelveo'clock",etc.ThehorizontalandverticaldistancesfromthecentertothearcaregivenbyxRadiusandyRadius.
Example
Thisprogramdrawsasemicircle(actually,anapproximationtoasemicircle)whosecenteris(midx,0)thebottomcenterofthescreen,usingcolornumber1.Themaxxandmaxyfunctionsareusedtodeterminethemaximumxandyvaluesonthescreen.
setscreen("graphics")
constmidx:=maxxdiv2
drawarc(midx,0,maxy,maxy,0,180,1)
Execute
Details
ThemeaningoftheColornumberdependsonthecurrentpalette.Seethepalettestatement.
Thescreenshouldbeina"graphics"mode.Seethesetscreenprocedurefordetails.Ifthescreenisnotina"graphics"mode,it
![Page 174: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/174.jpg)
willautomaticallybesetto"graphics"mode.
Seealso setscreen,maxx,maxyandthevariousdraw…procedures.
![Page 175: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/175.jpg)
drawbox graphicsprocedure
Syntax drawbox(x1,y1,x2,y2,Color:int)
Description
Thedrawboxprocedureisusedtodrawaboxonthescreenwithbottomleftandtoprightcornersof(x1,y1)to(x2,y2)usingthespecifiedColor.
Example
Thisprogramdrawsalargebox,reachingtoeachcornerofthescreenusingcolornumber1.Themaxxandmaxyfunctionsareusedtodeterminethemaximumxandyvaluesonthescreen.Thepoint(0,0)istheleftbottomofthescreenand(maxx,maxy)istherighttop.
setscreen("graphics")
drawbox(0,0,maxx,maxy,1)
Execute
Details
ThemeaningoftheColornumberdependsonthecurrentpalette.Seethepalettestatement.
Thescreenshouldbeina"graphics"mode.Seethesetscreenprocedurefordetails.Ifthescreenisnotina"graphics"mode,itwillautomaticallybesetto"graphics"mode.
Seealso setscreen,maxx,maxyandthevariousdraw…procedures.
![Page 176: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/176.jpg)
drawdot graphicsprocedure
Syntax drawdot(x,y,Color:int)
Description
Thedrawdotprocedureisusedtocolorthedot(pixel)atlocation(x,y)usingthespecifiedColor.
Example
Thisprogramrandomlydrawsdotswithrandomcolors.Themaxx,maxyandmaxcolorfunctionsgivethemaximumx,yandcolorvalues.
setscreen("graphics")
varx,y,c:int
loop
randint(x,0,maxx)%Randomx
randint(y,0,maxy)%Randomy
randint(c,0,maxcolor)%Randomcolor
drawdot(x,y,c)
endloop
Execute
Thescreenshouldbeina"graphics"mode.Ifthescreenisnotin
![Page 177: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/177.jpg)
Details a"graphics"mode,itwillautomaticallybesetto"graphics"mode.Seesetscreenfordetails.
Example
Thisprogramdrawsalineofdotsthatbounceoffthe“sides”ofthescreen.Italsodemonstratesthatyoucanuserealcoordinatestostoreposition(x,y),aslongasyouconvertthecoordinatestointvaluesusingroundinthedrawdotcall.
varx,y:real
vardx,dy:real
varclr:int:=1
x:=Rand.Int(1,maxx-1)
y:=Rand.Int(1,maxy-1)
dx:=Rand.Real-0.5
dy:=Rand.Real-0.5
loop
drawdot(round(x),round(y),clr)
clr:=(clr+1)modmaxcolor
x:=x+dx
y:=y+dy
ifx<=0orx>=maxxthen
dx:=-dx
endif
ify<=0ory>=maxythen
dy:=-dy
endif
endloop
Execute
Seealso setscreen,maxx,maxyandthevariousdraw…procedures.
![Page 178: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/178.jpg)
drawfill graphicsprocedure
Syntax drawfill(x,y:int,fillColor,borderColor:int)
Description
Thedrawfillprocedureisusedtocolorinafigurethatisonthescreen.Startingat(x,y),thefigureisfilledwithfillColortoasurroundingborderwhosecolorisborderColor.
Example
Thisprogramdrawsanovalwithxandyradiusof10inthecenterofthescreenusingcolor1.Thentheovalisfilledwithcolor2.Themaxxandmaxyfunctionsareusedtodeterminethemaximumxandyvaluesonthescreen.
setscreen("graphics")
constmidx:=maxxdiv2
constmidy:=maxydiv2
drawoval(midx,midy,10,10,1)
drawfill(midx,midy,2,1)
Execute
Details
ThemeaningoftheColornumberdependsonthecurrentpalette;seethepalettestatement.
Thescreenshouldbeina"graphics"mode.Seethesetscreenprocedurefordetails.Ifthescreenisnotina"graphics"mode,itwillautomaticallybesetto"graphics"mode.
![Page 179: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/179.jpg)
Warning:InTuringforIBMPCcompatibles,drawfillfailstocompletelyfillinsomecomplicatedfiguresthatcontain"islands"withinthemsurroundedbytheborderColor.
Seealso setscreen,maxx,maxyandthevariousdraw…procedures.
![Page 180: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/180.jpg)
drawfillarc graphicsprocedure
Syntaxdrawfillarc(x,y,xRadius,yRadius:int, initialAngle,finalAngle,Color:int)
Description
Thedrawfillarcprocedureisusedtodrawafilledarcwhosecenterisat(x,y).Itthenfillsinthepie-shapedwedgeusingthespecifiedColor.Tooutlineafilledarc,usedrawfillarcwiththeColorparametersettothefillcolorandthendrawarcwiththeColorparametersettothebordercolor.ForinitialAngleandfinalAngle,whichdeterminetheedgesofthewedge,zerodegreesis"threeo'clock"and90degreesis"twelveo'clock",etc.ThehorizontalandverticaldistancesfromthecentertothearcaregivenbyxRadiusandyRadius.
Example
Thisprogramdrawsafilledsemicircle(actually,anapproximationtoasemicircle)whosecenteris(midx,0),thebottomcenterofthescreen,usingcolornumber1.Themaxxandmaxyfunctionsareusedtodeterminethemaximumxandyvaluesonthescreen.
setscreen("graphics")
constmidx:=maxxdiv2
drawfillarc(midx,0,maxy,maxy,0,180,1)
Execute
OnthePC,drawfillarcfillsthepie-shapedwedgebyusinga
![Page 181: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/181.jpg)
Details
"flood"fillandisthussubjecttoalltheconditionsofafloodfill.
ThemeaningoftheColornumberdependsonthecurrentpalette.Seethepalettestatement.
Thescreenshouldbeina"graphics"mode.Seethesetscreenprocedurefordetails.Ifthescreenisnotina"graphics"mode,itwillautomaticallybesetto"graphics"mode.
Seealso setscreen,maxx,maxyandthevariousdraw…procedures.
![Page 182: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/182.jpg)
drawfillbox graphicsprocedure
Syntax drawfillbox(x1,y1,x2,y2,Color:int)
Description
Thedrawfillboxprocedureisusedtodrawafilledboxonthescreenwithbottomleftandtoprightcornersof(x1,y1)to(x2,y2)filledusingthespecifiedColor.Togetaboxoutlinedinadifferentcolor,usedrawfillboxwiththeColorparametersettothefillcolorandthencalldrawboxwiththeColorparametersettothebordercolor.
Example
Thisprogramwillfillthebottomhalfofthescreenwithcolor1andthenoutlineitincolor2.Themaxxandmaxyfunctionsareusedtodeterminethemaximumxandyvaluesonthescreen.Thepoint(0,0)istheleftbottomofthescreenand(maxx,maxy)istherighttop.
setscreen("graphics")
drawfillbox(0,0,maxx,maxydiv2,1)
drawbox(0,0,maxx,maxydiv2,2)
Execute
Details
ThemeaningoftheColornumberdependsonthecurrentpalette.Seethepalettestatement.
Thescreenshouldbeina"graphics"mode.Seethesetscreenprocedurefordetails.Ifthescreenisnotina"graphics"mode,itwillautomaticallybesetto"graphics"mode.
![Page 183: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/183.jpg)
Seealso setscreen,maxx,maxyandthevariousdraw…procedures.
![Page 184: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/184.jpg)
drawfillmapleleaf graphicsprocedure
Syntax drawfillmapleleaf(x1,y1,x2,y2,Color:int)
Description
Thedrawfillmapleleafprocedureisusedtodrawafilledmapleleafonthescreenboundedbyarectanglewithbottomleftandtoprightcornersof(x1,y1)to(x2,y2)andfilledusingthespecifiedColor.Togetamapleleafoutlinedinadifferentcolor,usedrawfillmapleleafwiththeColorparametersettothefillcolorandthencalldrawmapleleafwiththeColorparametersettothebordercolor.Ify1isgreaterthany2,thenthemapleleafisdrawnupsidedown.
Example
Thisprogramwilldrawtwomapleleavesbesideeachother.Thefirstwillbeoutlinedincolor1andfilledincolor2.Thesecondmapleleafwillbeupsidedownandbothfilledandoutlinedincolor3.
setscreen("graphics")
drawfillmapleleaf(0,0,100,100,1)
drawmapleleaf(0,0,100,100,2)
drawfillmapleleaf(150,100,250,0,3)
Execute
Thedrawfillmapleleafprocedureisusefulfordrawingthe
![Page 185: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/185.jpg)
Details
Canadianflag.
ThemeaningoftheColornumberdependsonthecurrentpalette.Seethepalettestatement.
Thescreenshouldbeina"graphics"mode.Seethesetscreenprocedurefordetails.Ifthescreenisnotina"graphics"mode,itwillautomaticallybesetto"graphics"mode.
Seealso setscreen,maxx,maxyandthevariousdraw…procedures.
![Page 186: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/186.jpg)
drawfilloval graphicsprocedure
Syntax drawfilloval(x,y,xRadius,yRadius,Color:int)
Description
Thedrawfillovalprocedureisusedtodrawafilledovalwhosecenterisat(x,y).ThehorizontalandverticaldistancesfromthecentertotheovalaregivenbyxRadiusandyRadius.Togetanovaloutlinedinadifferentcolor,usedrawfillovalwiththeColorparametersettothefillcolorandthencalldrawovalwiththeColorparametersettothebordercolor.
Example
Thisprogramdrawsalargefilledovalthatjusttoucheseachedgeofthescreenusingcolornumber1.Themaxxandmaxyfunctionsareusedtodeterminethemaximumxandyvaluesonthescreen.Thecenteroftheovalisat(midx,midy),whichisthemiddleofthescreen.
setscreen("graphics")
constmidx:=maxxdiv2
constmidy:=maxydiv2
drawfilloval(midx,midy,midx,midy,1)
Execute
Ideally,acircleisdrawnwhenxRadius=yRadius.Infact,theaspectratio(theratioofheighttowidthofpixelsdisplayedonthescreen)oftheIBMPCcompatiblesisnot1.0,sothisdoesnot
![Page 187: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/187.jpg)
Details
drawatruecircle.InCGAgraphicsmodethisratiois5to4.
ThemeaningoftheColornumberdependsonthecurrentpalette.Seethepalettestatement.
Thescreenshouldbeina"graphics"mode.Seethesetscreenprocedurefordetails.Ifthescreenisnotina"graphics"mode,itwillautomaticallybesetto"graphics"mode.
Seealso setscreen,maxx,maxyandthevariousdraw…procedures.
![Page 188: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/188.jpg)
drawfillpolygon graphicsprocedure
Syntax drawfillpolygon(x,y:array1..*ofint,n:int,Color:int)
Description
Thedrawfillpolygonprocedureisusedtodrawafilledpolygonwithnpoints.Thepolygonisdescribedbythepoints(x(1),y(1))to(x(2),y(2))to(x(3),y(3))andsoonto(x(n),y(n)).ThepolygonwillbedrawnandfilledwithColor.
Togetanpolygonoutlinedinadifferentcolor,usedrawfillpolygonwiththeColorparametersettothefillcolorandthencalldrawpolygonwiththeColorparametersettothebordercolor.
Example
Thisprogramwillcreateafilledoctagonanddisplayitincolor1andthenoutlineitincolor3.
setscreen("graphics")
varx:array1..8ofint:=init(100,100,135,185,
220,220,185,135)
vary:array1..8ofint:=init(100,150,185,185,
150,100,65,65)
drawfillpolygon(x,y,8,1)
drawpolygon(x,y,8,3)
Execute
Details
ThePCallowsamaximumof256points.Aswell,drawfillpolygoncanfail(duetolackofmemory).Iffailureoccurs,itwilltrytodrawanoutlineofthepolygon.Ifthatalsofails,itwillnotdrawanything.
ThemeaningoftheColornumberdependsonthecurrentpalette.Seethepalettestatement.
![Page 189: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/189.jpg)
Thescreenshouldbeina"graphics"mode.Seethesetscreenprocedurefordetails.Ifthescreenisnotina"graphics"mode,itwillautomaticallybesetto"graphics"mode.
Seealso setscreen,maxx,maxyandthevariousdraw…procedures.
![Page 190: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/190.jpg)
drawfillstar graphicsprocedure
Syntax drawfillstar(x1,y1,x2,y2,Color:int)
Description
Thedrawfillstarprocedureisusedtodrawafilledfivepointedstaronthescreenboundedbyarectanglewithbottomleftandtoprightcornersof(x1,y1)to(x2,y2)andfilledusingthespecifiedColor.Togetastaroutlinedinadifferentcolor,usedrawfillstarwiththeColorparametersettothefillcolorandthencalldrawstarwiththeColorparametersettothebordercolor.Ify1isgreaterthany2,thenthestarisdrawnupsidedown.
Example
Thisprogramwilldrawtwostarsbesideeachother.Thefirstwillbeoutlinedincolor1andfilledincolor2.Thesecondstarwillbeupsidedownandbothfilledandoutlinedincolor3.
setscreen("graphics")
drawfillstar(0,0,100,100,1)
drawstar(0,0,100,100,2)
drawfillstar(150,100,250,0,3)
Execute
ThedrawfillstarprocedureisusefulfordrawingtheAmericanflag.
![Page 191: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/191.jpg)
DetailsThemeaningoftheColornumberdependsonthecurrentpalette.Seethepalettestatement.
Thescreenshouldbeina"graphics"mode.Seethesetscreenprocedurefordetails.Ifthescreenisnotina"graphics"mode,itwillautomaticallybesetto"graphics"mode.
Seealso setscreen,maxx,maxyandthevariousdraw…procedures.
![Page 192: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/192.jpg)
drawline graphicsprocedure
Syntax drawline(x1,y1,x2,y2,Color:int)
Description
Thedrawlineprocedureisusedtodrawalineonthescreenfrom(x1,y1)to(x2,y2)usingthespecifiedColor.
Example
ThisprogramdrawsalargeX,reachingtoeachcornerofthescreenusingcolornumber1.Themaxxandmaxyfunctionsareusedtodeterminethemaximumxandyvaluesonthescreen.Thepoint(0,0)istheleftbottomofthescreen,(maxx,maxy)istherighttop,etc.
setscreen("graphics")
%Firstdrawalinefromtheleftbottomtorighttop
drawline(0,0,maxx,maxy,1)
%Nowdrawalinefromthelefttoptorightbottom
drawline(0,maxy,maxx,0,1)
Execute
Details
ThemeaningoftheColornumberdependsonthecurrentpalette.Seethepalettestatement.
Thescreenshouldbeina"graphics"mode.Seethesetscreenprocedurefordetails.Ifthescreenisnotina"graphics"mode,itwillautomaticallybesetto"graphics"mode.
Seealso setscreen,maxx,maxyandthevariousdraw…procedures.
![Page 193: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/193.jpg)
drawmapleleaf graphicsprocedure
Syntax drawmapleleaf(x1,y1,x2,y2,Color:int)
Description
Thedrawmapleleafprocedureisusedtodrawamapleleafonthescreenboundedbyarectangledescribedbythebottomleftandtoprightcornersof(x1,y1)to(x2,y2)usingthespecifiedColor.Ify1isgreaterthany2,thenthemapleleafisdrawnupsidedown.
Example
Thisprogramwilldrawtwomapleleavesbesideeachother.Thefirstwillbeincolor1andthesecondmapleleafwillbeupsidedownandincolor2.
setscreen("graphics")
drawmapleleaf(0,0,100,100,1)
drawmapleleaf(150,100,250,0,2)
Execute
Details
ThedrawmapleleafprocedureisusefulfordrawingtheCanadianflag.
ThemeaningoftheColornumberdependsonthecurrentpalette.Seethepalettestatement.
![Page 194: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/194.jpg)
Thescreenshouldbeina"graphics"mode.Seethesetscreenprocedurefordetails.Ifthescreenisnotina"graphics"mode,itwillautomaticallybesetto"graphics"mode.
Seealso setscreen,maxx,maxyandthevariousdraw…procedures.
![Page 195: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/195.jpg)
drawoval graphicsprocedure
Syntax drawoval(x,y,xRadius,yRadius,Color:int)
Description
Thedrawovalprocedureisusedtodrawanovalwhosecenterisat(x,y).ThehorizontalandverticaldistancesfromthecentertotheovalaregivenbyxRadiusandyRadius.
Example
Thisprogramdrawsalargeovalthatjusttoucheseachedgeofthescreenusingcolornumber1.Themaxxandmaxyfunctionsareusedtodeterminethemaximumxandyvaluesonthescreen.Thecenteroftheovalisat(midx,midy),whichisthemiddleofthescreen.
setscreen("graphics")
constmidx:=maxxdiv2
constmidy:=maxydiv2
drawoval(midx,midy,midx,midy,1)
Execute
Details
Ideally,acircleisdrawnwhenxRadius=yRadius.Infact,theaspectratio(theratioofheighttowidthofpixelsdisplayedonthescreen)oftheIBMPCcompatiblesisnot1.0,sothisdoesnotdrawatruecircle.InCGAgraphicsmodethisratiois5to4.
ThemeaningoftheColornumberdependsonthecurrentpalette.
![Page 196: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/196.jpg)
Seethepalettestatement.
Thescreenshouldbeina"graphics"mode.Seethesetscreenprocedurefordetails.Ifthescreenisnotina"graphics"mode,itwillautomaticallybesetto"graphics"mode.
Seealso setscreen,maxx,maxyandthevariousdraw…procedures.
![Page 197: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/197.jpg)
drawpic graphicsprocedure
Syntax drawpic(x,y:int,buffer:array1..*ofint,picmode:int)
Description
Thedrawpicprocedureisusedtocopyofarectangularpictureontothescreen.Theleftbottomofthepictureisplacedat(x,y).Inthecommoncase,thebufferwasinitializedbycallingtakepic.Thevaluesofpicmodeare:
0:Copyactualpictureonscreen. 1:CopypicturebyXORingitontothescreen.
XORingapictureontothescreentwiceleavesthescreenasitwas(thisisaconvenientwaytomoveimagesforanimation).XORingapictureontoabackgroundeffectivelysuperimposesthepictureontothebackground.
Details
Seetakepicforanexampleoftheuseofdrawpicandforfurtherinformationaboutbuffersfordrawingpictures.
Thescreenmustbeina"graphics"mode.Seethesetscreenprocedurefordetails.Ifthescreenisnotina"graphics"mode,anerrorwilloccur.
Details
Thedrawpic,takepic,andsizepicsubprogramshavebeenmadeobsoletebythesubprogramsPic.DrawandPic.NewofthePicmodule.Usersarestronglysuggestedtousethoseroutinesinstead.ThePicmodulealsocontainssubprogramstoloadimagesfromfiles.
Seealso
takepicandsizepic.Seealsosetscreen,maxx,maxyandthevariousdraw…procedures.
SeealsopredefinedunitDrawandPic.
![Page 198: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/198.jpg)
drawpolygon graphicsprocedure
Syntax drawpolygon(x,y:array1..*ofint,n:int,Color:int)
Description
Thedrawpolygonprocedureisusedtodrawapolygonwithnpoints.AlineisdrawninColorfromthepoint(x(1),y(1))to(x(2),y(2))to(x(3),y(3))andsoon.Afterdrawingthelineto(x(n),y(n)),alinewillbedrawnbackto(x(1),y(1)),closingthepolygon.Thedrawpolygonprocedureisequivalentto:
fori:1..n-1
drawline(x(i),y(i),x(i+1),y(i+1),
endfor
drawline(x(n),y(n),x(1),y(1),Color)
Example
Thisprogramwillcreateanoctagonanddisplayitincolor1.
setscreen("graphics")
varx:array1..8ofint:=init(100,100,135,185,
220,220,185,135)
vary:array1..8ofint:=init(100,150,185,185,
150,100,65,65)
drawpolygon(x,y,8,1)
Execute
Details
TheIBMPClimitsdrawpolygontoamaximumof256points.
ThemeaningoftheColornumberdependsonthecurrentpalette.Seethepalettestatement.
Thescreenshouldbeina"graphics"mode.Seethesetscreenprocedurefordetails.Ifthescreenisnotina"graphics"mode,itwillautomaticallybesetto"graphics"mode.
![Page 199: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/199.jpg)
Seealso setscreen,maxx,maxyandthevariousdraw…procedures.
![Page 200: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/200.jpg)
drawstar graphicsprocedure
Syntax drawstar(x1,y1,x2,y2,Color:int)
Description
Thedrawstarprocedureisusedtodrawastaronthescreenboundedbyarectangledescribedbythebottomleftandtoprightcornersof(x1,y1)to(x2,y2)usingthespecifiedColor.Ify1isgreaterthany2,thenthestarisdrawnupsidedown.
Example
Thisprogramwilldrawtwostarsbesideeachother.Thefirstwillbeincolor1andthesecondstarwillbeupsidedownandincolor2.
setscreen("graphics")
drawstar(0,0,100,100,1)
drawstar(150,100,250,0,2)
Execute
Details
ThedrawstarprocedureisusefulfordrawingtheAmericanflag.
ThemeaningoftheColornumberdependsonthecurrentpalette.Seethepalettestatement.
Thescreenshouldbeina"graphics"mode.Seethesetscreenprocedurefordetails.Ifthescreenisnotina"graphics"mode,it
![Page 201: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/201.jpg)
willautomaticallybesetto"graphics"mode.
Seealso setscreen,maxx,maxyandthevariousdraw…procedures.
![Page 202: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/202.jpg)
empty conditionfunction
Syntax empty(variableReference):boolean
Description
Theemptyfunctionisusedinaconcurrentprogram.ItreturnstrueifthevariableReference,whichmustbeaconditionvariable,hasnoprocesseswaitingforit.Processesjointhequeueofaconditionvariablebyexecutingthewaitstatement,andareawakenedbythesignalstatement.
Seealsocondition,wait,signal,forkandmonitor.
SeealsopredefinedunitConcurrency.
![Page 203: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/203.jpg)
enum enumeratedtype
Syntax
AnenumeratedTypeis:
enum(id{,id})
Description
Thevaluesofanenumeratedtypearedistinctandincreasing.Theycanbethoughtofasthevalues0,1,2andsoon,butarithmeticisnotallowedwiththesevalues.
Exampletypecolor:enum(red,green,blue)
varc:color:=color.red
vard:color:=succ(c)%dbecomesgreen
Details
Eachvalueofanenumeratedtypeisthenameofthetypefollowedbyadotfollowedbytheelement'sname,forexample,color.red.Enumeratedvaluescanbecomparedforequalityandforordering.Thesuccandpredfunctionscanbeusedtofindthevaluefollowingorprecedingagivenenumeratedvalue.Theordfunctioncanbeusedtofindtheenumerationpositionofavalue,forexample,ord(color.red)is0.
Enumeratedtypescannotbecombinedwithintegersorwithotherenumeratedtypes.
Details
Itisillegaltodeclarean"anonymous"enum.Theonlylegaldeclarationforanenumisinatypedeclaration.Forexample,thefollowingisnowillegal:
vara:arrayenum(red,green,blue)ofint
Giventhatthereisno(easy)wayofgeneratinganenumvaluewithoutitbeinganamedtype,thisshouldnotimpactanybutthemostbizarrecode.
The"put"and"get"statementsemanticshavebeenexpandedtoallowput'sandget'sofenumvalues.Thevaluesprintedandinputaretheelementnamesthemselves,casesensitive.Forexample,
![Page 204: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/204.jpg)
Details for
typecolors:enum(red,green,blue)
varc:colors:=colors.red
putc%outputs"red"(withoutthequotes)
![Page 205: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/205.jpg)
enumeratedValue enumeratedvalue
Syntax
AnenumeratedValueis:
enumeratedTypeId.enumeratedId
Description
Thevaluesofanenumeratedtypearewrittenasthetypename(enumeratedTypeId)followedbyadotfollowedbyoneoftheenumeratedvaluesofthetype(enumeratedId).
Example
Inthisexample,color.redisanenumeratedValue.
typecolor:enum(red,green,blue)
varc:color:=color.red
vard:color:=succ(c)%dbecomesgreen
Details
Theabovedescriptionhasbeensimplifiedbyignoringthepossibilitythattheenumtypecanbeexportedfromamodule.Ifthisisthecase,eachuseofoneoftheenumeratedvaluesoutsideofmoduleMmustbeprecededbythemodulenameandadot,asinM.color.red.
Seealso theenumtypeandexplicitConstant.
![Page 206: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/206.jpg)
eof end-of-filefunction
Syntax eof(streamNumber:int):boolean
Description
Theeof(endoffile)functionisusedtodetermineifthereisanymoreinput.Itreturnstruewhentherearenomorecharacterstoberead.Theparameteranditsparenthesesareomittedwhenreferringtothestandardinput(usuallythisisthekeyboard);otherwisetheparameterspecifiesthenumberofastream.Thestreamnumberhasbeendetermined(inmostcases)byanopenstatement.
Example
Thisprogramreadsandoutputsallthelinesinthefilecalled"info".
varline:string
varfileNumber:int
open:fileNumber,"info",get
loop
exitwheneof(fileNumber)
get:fileNumber,line:*
putline
endloop
Execute
Details
Seealsothedescriptionofthegetstatement,whichgivesmoreexamplesoftheuseofeof.Seealsotheopenandreadstatements.
Whentheinputisfromthekeyboard,theusercansignalend-of-filebytypingcontrol-ZonaPC(orcontrol-DonUNIX).Ifaprogramtestsforeofonthekeyboard,andtheuserhasnottypedcontrol-Z(orcontrol-D)andtheuserhastypednocharacters
![Page 207: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/207.jpg)
beyondthosethathavebeenread,theprogrammustwaituntilthenextcharacteristyped.Oncethischaracteristyped,theprogramknowswhetheritisattheendoftheinput,andreturnsthecorrespondingtrueorfalsevalueforeof.
Example
AnotherexampleisavailablethatillustratesdetectingEOFfromthekeyboard.
![Page 208: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/208.jpg)
equivalence oftypes
Description
Twotypesareequivalenttoeachotheriftheyareessentiallythesametypes(theexactrulesaregivenbelow).Whenavariableispassedtoavarformalparameter,thetypesofthevariableandtheformalparametermustbeequivalentbecausetheyareeffectivelythesamevariable.Whenanexpressionisassignedtoavariable,theirtypesmustbeequivalent,exceptforspecialcases.Forexample,Turingallowsyoutoassignanintegerexpressiontoarealvariable(seeassignabilityfordetails).
Example
varj:int
varb:array1..25ofstring
typepersonType:
record
age:int
name:string(20)
endrecord
procedurep(vari:int,vara:array1..25of
varr:personType)
…bodyofprocedurep,whichmodifieseachofi,
endp
vars:personType
p(j,b,s)%Procedurecalltop
%iandjhavetheequivalenttypeint
%Arraysaandbhaveequivalenttypes
%Recordsrandshaveequivalenttypes
Twotypesaredefinedtobeequivalentiftheyare:
(a) thesamestandardtype(int,real,booleanorstring),(b) subrangeswithequalfirstandlastvalues,
(c) arrayswithequivalentindextypesandequivalentcomponenttypes,(d) stringswithequalmaximumlengths,(e) setswithequivalentbasetypes,or
![Page 209: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/209.jpg)
Details
(f) pointerstothesamecollection;inaddition,
(g) adeclaredtypeidentifierisalsoequivalenttothetypeitnames(andtothetypenamedbythattype,ifthattypeisanamedtype,etc.)
(h) bothchar,(i) bothchar(n)withthesamelength,
(j) bothproceduretypes,withcorrespondingequivalentparametertypesandcorrespondingvarornon-varoftheparameters,
(k) bothfunctiontypes,withcorrespondingequivalentparametertypesandcorrespondingvarornon-varoftheparametersandequivalentresulttypes,
(l) bothpointertypestothesameclassorequivalenttypeandbotharecheckedorunchecked.
Eachseparateinstanceofarecord,unionorenumeratedtype(writtenoutusingoneofthekeywordsrecord,unionorenum)createsadistincttype,equivalenttonoothertype.Bycontrast,separateinstancesofarrays,strings,subrangesandsetsareconsideredequivalentiftheirpartsareequalandequivalent.
OpaquetypeT,exportedfromamodule,monitororclassMasopaque,isaspecialcaseofequivalence.OutsideofMthistypeiswrittenM.T,andisconsideredtobedistinctfromallothertypes.Bycontrast,iftypeUisexportednon-opaque,theusualrulesofequivalenceapply.TheparameterorresulttypeofanexportedprocedureorfunctionoranexportedconstantisconsideredtohavetypeM.ToutsideofMiftheitemisdeclaredusingthetypeidentifierT.OutsideofM,theopaquetypecanbeassigned,butnotcompared.
Itisnotrequiredthatsubprogramtypeshavethesamenamesandparameternamestobeequivalent.Theyalsodonotrequirethesamefactoringofparametersacrosstheirtypes,asini,j:intinsteadofi:int,j:int.
![Page 210: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/210.jpg)
erealstr real-to-stringfunction
Syntaxerealstr(r:real, width,fractionWidth,exponentWidth:int):string
Description
Theerealstrfunctionisusedtoconvertarealnumbertoastring;forexample,erealstr(2.5e1,10,3,2)="b2.500e+01"wherebrepresentsablank.Thestring(includingexponent)isanapproximationtor,paddedontheleftwithblanksasnecessarytoalengthofwidth.
Thewidthmustbeanon-negativeintvalue.Ifthewidthparameterisnotlargeenoughtorepresentthevalueofr,itisimplicitlyincreasedasneeded.
ThefractionWidthparameteristhenon-negativenumberoffractionaldigitstobedisplayed.Thedisplayedvalueisroundedtothenearestdecimalequivalentwiththisaccuracy.Inthecaseofatie,thevalueisroundedtothelargerofthetwovalues.
TheexponentWidthparametermustbenon-negativeandgivethenumberofexponentdigitstobedisplayed.IfexponentWidthisnotlargeenoughtorepresenttheexponent,morespaceisusedasneeded.Thestringreturnedbyerealstrisoftheform:
{blank}[-]digit.{digit}esigndigit{digit}
wheresignisaplusorminussign.Theleftmostdigitisnon-zero,unlessallthedigitsarezeros.
Theerealstrfunctionapproximatestheinverseofstrreal,althoughround-offerrorskeepthesefrombeingexactinverses.
Seealso frealstr,realstr,strreal,intstrandstrintfunctions.
![Page 211: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/211.jpg)
Error
Description
Thisunitcontainsthepredefinedsubprogramsthatdealwitherrorsreturnedfromotherpredefinedsubprograms.
AllroutinesintheErrorunitareexportedqualified(andthusmustbeprefacedwith"Error.").
TheconstantsrepresentingthepossibleerrorsreturnedbythismodulecanbefoundintheErrorNummodule.
EntryPoints
Last Returnsthe(integer)errorcodeproducedbythelastcalltoapredefinedsubprogram.
LastMsg Returnstheerrorstringproducedbythelastcalltoapredefinedsubprogram.
LastStr Returnsthestringversionoftheerrorconstantproducedbythelastcalltoapredefinedsubprogram.
Msg Returnsthestringthatcorrespondstoaspecifiederrorcode.
Str Returnsthestringversionoftheerrorconstantthatcorrespondstoaspecifiederrorcode.
Trip Thiscausesthespecifiederrorcodetobeset.
TripMsg Thiscausesthespecifiederrorcodeanderrormessagetobeset.
Halt Thiscausesexecutiontohaltwiththespecifiederrormessage.
![Page 212: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/212.jpg)
Error.Last PartofErrormodule
Syntax Error.Last:int
Description
Error.Lastisafunctionthatreturnstheerrorcodesetbythelastcalledpredefinedsubprogram.Ifthereisnoerror,thenitreturnseNoError(whichis0).Ifthereisanerror,youcanuseError.LastMsgtoobtainatextualformoftheerrororError.LastStrtoobtainastringversionoftheerrorconstant.
ThefactthatError.LastisnoteNoErrordoesnotnecessarilymeanthatthepreviouspredefinedfunctionfailedorfailedcompletely.Error.Lastalsoreturnsanumberofwarningcodes.Forexample,ifauserspecifiesanumberlargerthanmaxcolorforthecolorparameteroftheDraw.Lineprocedure,thelineisstilldrawn,onlyincolormaxcolor.However,Error.Lastwillreturnacodethatwarnstheuserofthefact.
Example
Thisprogramcreatesthedirectorycalledinformation.Ifthecreationfails,itprintsouttheerrornumberandanerrormessage.
varf:int
open:f,"testdata/information.txt",get
iff<=0then
put"Fileopened"
else
put"Couldnotopenfile."
put"ErrorNumber:",Error.Last
put"ErrorMessage:",Error.LastMsg
put"ErrorConstant:",Error.LastStr
endif
Execute
Exportedqualified.
![Page 213: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/213.jpg)
Status ThismeansthatyoucanonlycallthefunctionbycallingError.Last,notbycallingLast.
![Page 214: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/214.jpg)
Error.LastMsg PartofErrormodule
Syntax Error.LastMsg:string
Description
Error.LastMsgisafunctionthatreturnstheerrormessagesetbythelastcalledpredefinedsubprogram.Ifthereisnoerror,thenitreturnstheemptystring.Ifthereisanerror,youcanuseError.Lasttoobtaintheerrorcode.
ThefactthatError.LastMsgisnot""doesnotnecessarilymeanthatthepreviouspredefinedfunctionfailedorfailedcompletely.Error.LastMsgalsoreturnsanumberofwarningmessages.Forexample,ifauserspecifiesanumberlargerthanmaxcolorforthecolorparameteroftheDraw.Lineprocedure,thelineisstilldrawn,onlyincolormaxcolor.However,Error.LastMsgwillreturnamessagethatindicatesthatthecolorwasoutofrange
Example
Thisprogramcreatesthedirectorycalledinformation.Ifthecreationfails,itprintsouttheerrornumberandanerrormessage.
Dir.Create("testdata/information")
ifError.Last=eNoErrorthen
put"Directorycreated"
else
put"Didnotcreatethedirectory."
put"ErrorNumber:",Error.Last
put"ErrorMessage:",Error.LastMsg
endif
Execute
Status
Exportedqualified.
Thismeansthatyoucanonlycallthefunctionbycalling
![Page 215: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/215.jpg)
Error.LastMsg,notbycallingLastMsg.
![Page 216: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/216.jpg)
Error.LastStr PartofErrormodule
Syntax Error.LastStr:string
Description
Error.LastStrisafunctionthatreturnsthestringversionoftheerrorcodesetbythelastcalledpredefinedsubprogram(i.e.itwouldreturnthestring"eDrawClrNumTooLarge"forusingacolorgreaterthanmaxcolorinaDrawcommand).Ifthereisnoerrorthenitreturnstheemptystring.Ifthereisanerror,youcanuseError.Lasttoobtaintheactualerrorcode.
ThefactthatError.LastStrisnot""doesnotnecessarilymeanthatthepreviouspredefinedfunctionfailedorfailedcompletely.Error.LastStralsoreturnsanumberoferrorcodesforwarningmessages.Forexample,ifauserspecifiesanumberlargerthanmaxcolorforthecolorparameteroftheDraw.Lineprocedure,thelineisstilldrawn,onlyincolormaxcolor.However,Error.LastStrwillreturnastringversionoftheerrorcodethatindicatesthatthecolorwasoutofrange.
YoucantakealookattheerrorconstantsdefinedbylookingattheunitErrorNumwhichcontainsalldefinederrorcodes.
Example
Thisprogramcreatesthedirectorycalledinformation.Ifthecreationfails,itprintsouttheerrornumberandanerrormessage.
Dir.Create("testdata/information")
ifError.Last=eNoErrorthen
put"Directorycreated"
else
put"Didnotcreatethedirectory."
put"ErrorNumber:",Error.Last
put"ErrorConstant:",Error.LastStr
endif
![Page 217: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/217.jpg)
Execute
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingError.LastStr,notbycallingLastStr.
![Page 218: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/218.jpg)
Error.Msg PartofErrormodule
Syntax Error.Msg(errorCode:int):string
Description
Error.Msgisafunctionthatreturnstheerrormessagerelatedtoaspecifiederrorcode.IftheerrorcodeiseNoError,orifthereisnosucherrorcode,itreturnstheemptystring.Ifthereissuchanerror,itreturnsthetextualmessageassociatedwiththaterror.
Example
ThisprogramprintsouttheerrormessageassociatedwitheFsysFileNotFound(“Filenotfound”).
putError.Msg(eFsysFileNotFound)
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingError.Msg,notbycallingMsg.
![Page 219: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/219.jpg)
Error.Str PartofErrormodule
Syntax Error.Str(errorCode:int):string
Description
Error.Strisafunctionthatreturnstheerrormessagerelatedtoaspecifiederrorcode.IftheerrorcodeiseNoErrororifthereisnosucherrorcode,itreturnstheemptystring.Ifthereissuchanerror,itreturnsthetextualmessageassociatedwiththaterror.
ExampleThisprogramprintsoutthestring"eFsysFileNotFound".
putError.Str(eFsysFileNotFound)
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingError.Str,notbycallingStr.
![Page 220: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/220.jpg)
Error.Trip PartofErrormodule
Syntax Error.Trip(errorCode:int)
Description
Error.TripisaprocedurethatsetstheerrornumberthatisreturnedbyError.LastandError.LastMsg.Itdoesnothalttheprogram.
Errorcodesthatdonotcorrespondtorecognizederrorswillcauseanabortwiththeerrormessage"UnknownError#n"wherenistheerrorpassedin.
YoucanfindalistofconstantsforthelegalerrorcodesinthemoduleErrorNum.AnycalltoError.TripshoulduseaconstantfoundintheErrorNummodule.
Example
Thisprogramsetsanerrorcode.Theprogramoutputs201fortheerrornumberand"Filenotfound"forthemessage.
Error.Trip(eFsysFileNotFound)
put"Errorcode=",Error.Last
put"Errormessage=",Error.LastMsg
Execute
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingError.Trip,notbycallingTrip.
![Page 221: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/221.jpg)
ErrorNum
Description
ThisunitcontainsalltheconstantsrepresentingerrorsusedbytheErrormodule.
AllconstantsintheErrorNummoduleareexportedunqualified.(Thismeansyoucanusetheconstantsdirectlywithouthavingtousethequalifier"ErrorNum.".)
![Page 222: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/222.jpg)
Exceptions
Description
ThisunitcontainsalltheconstantscorrespondingtoexceptionnumbersinTuringforuseinbuildingexceptionhandlers.
AllconstantsintheExceptionsmoduleareexportedunqualified.(Thismeansyoucanusetheconstantsdirectlywithouthavingtousethequalifier"Exceptions.".)
![Page 223: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/223.jpg)
exit statement
Syntax
AnexitStatementisoneof:
(a) exitwhentrueFalseExpn (b) exit
Description
Anexitstatementisusedtostoptheexecutionofalooporforstatement.Form(a)isthemostcommon.Here,thetrue/falseexpressionisevaluated.Ifitistrue,theloopisterminatedandexecutionjumpsdownandcontinuesjustbeyondendlooporendfor.Ifitisfalse,theloopkeepsonrepeating.Form(b)alwayscausesthelooptoterminate.Thisformisalmostalwaysusedinsideanotherconditionalstatementsuchasif.
Example
InputnamesuntilfindingJones.
varname:string
loop
getname
exitwhenname="Jones"
endloop
Details
Exitstatementsmustoccuronlyinsidelooporforstatements.Anexittakesyououtoftheclosestsurroundinglooporfor.Theonlyotherwaystoterminatealooporforisbyreturn(inaprocedureorinthemainprogram,inwhichcasetheentireprocedureormainprogramisterminated)orbyresult(inafunction,inwhichcasetheentirefunctionisterminatedandaresultvaluemustbesupplied).
Theform"exitwhentrueFalseExpn"isequivalentto"iftrueFalseExpnthenexitendif".
![Page 224: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/224.jpg)
exp exponentiationfunction
Syntax exp(r:real):real
Description
Theexpfunctionisusedtofindetothepowerr,whereeisthenaturalbaseandristheparametertoexp.Forexample,exp(0)returns1andexp(1)returnsthevalueofe.
Example
Thisprogramprintsouttheexponentialvaluesof1,2,3,…upto100.
fori:1..100
put"Exponentialof",i,"is",exp(i)
endfor
Seealsoln(naturallogarithmfunction).
SeealsopredefinedunitMath.
![Page 225: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/225.jpg)
explicitCharConstant characterliteral
SyntaxAnexplicitCharConstantisasequenceofcharacterssurroundedbysinglequotationmarks,forexample,'Renzo'.
Example
Inthefollowing,theexplicitcharacterconstantsare'H'and'Hi'.
varc:char:='H'
vard:char(2):='Hi'
Details
Anexplicitcharacterconstantmustcontainatleastonecharacter.Ifitcontainsexactlyonecharacter,asin'A',itstypeischar.Ifitcontainstwoormorecharacters(ncharacters),as'Width',itstypeischar(n).Thedifferencebetweenthecharandchar(1)typesisrarelyofsignificance,butdoesmakeadifferenceindeclarationswithoutanexplicittype,forexample:
varc:='H'%Typeischar
vard:='Hi'%Typeischar(2)
vare:="H"%Typeisstring
Thebackslash\isusedinexplicitstringandchar(n)constantstospecifyspecialvalues,forexample,'\T'isthetabcharacter.Similarly,thecarat^isusedtospecifyASCIIcontrolcharacters,forexample,'^H'istheASCIIbackspace.SeeexplicitStringConstantsfordetails.
Explicitcharacterconstantscannotcrosslineboundaries.Torepresentaconstantthatislongerthanaline,breakitintotwoormorestringsonseparatelinesanduse+(catenation)tojointheindividualstrings.Seecatenation.
Anexplicitcharacterconstantmaybelimitedinlengthbytheimplementation.Werecommendthatthislimitationbeatleast32767.
Explicitcharacterconstants,butnotstrings,areallowedtocontainthecharacterinternalvalues0(calledeosforendofstring)and128(calleduninitchar,usedastheuninitializedstringvalue).
![Page 226: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/226.jpg)
explicitConstant literal
Syntax
AnexplicitConstantisoneof:
(a) explicitStringConstant %e.g.:"Helloworld"
(b) explicitIntegerConstant %e.g.:25 (c) explicitRealConstant %e.g.:51.8
(d) explicitTrueFalseConstant%e.g.:true
(e) explicitCharConstant %e.g.:'Hi'
DescriptionAnexplicitConstantgivesitsvaluedirectly.Forexample,thevalueoftheexplicitconstant25istwenty-five.
Example
Inthefollowing,theexplicitconstantsare"Helloworld",3.14159and2.Notethatpiisanamedconstantratherthananexplicitconstant.
put"Helloworld"
vardiameter:real
constpi:=3.14159
diameter:=pi*r**2
varx:=diameter
Details
Insomeprogramminglanguages,explicitconstantsarecalledliteralsorliteralvalues,becausetheyliterally(explicitly)givetheirvalues.
Seealso
explicitStringConstant,explicitIntegerConstant,explicitRealConstant,explicitTrueFalseConstantandexplicitCharConstant.SeealsoenumeratedValue.
![Page 227: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/227.jpg)
explicitIntegerConstant integerliteral
Syntax
AnexplicitIntegerConstantisasequenceofoneormoredecimaldigits(0to9)optionallyprecededbyaplusorminussign.Thisisanalternateformthatspecifiesanumberbase(suchasbase2orbase16).
Example
Inthefollowing,theexplicitintegerconstantsare0,115and5.
varcount:int:=0
constheight:=115
…
count:=height-5
Details
IncurrentimplementationsofTuring,therangeoftheint(integer)typeisfrom-2147483647to2147483647.Inotherwords,themaximumsizeofintegeris2**31-1.Thisistherangethatfitsintofourbytes,withonepatternleftover(thelargestnegative4-bytenumber)torepresenttheuninitializedvalue.Seemaxint.
Valuescanbewritteninbase2or16oranyotherbaseintherange2to36(36becausethereare10digitsand26letters).Thisformbeginswiththebase,suchas16,then#,andthenthevaluewritteninthatbase,forexample,16#Ahasthevalue10.Thelettersa,b,c…representthedigitvalues10,11,12…CapitallettersA,B,C…canbeusedinsteadoflowercase.Herearesomeexamples.
2#1 =1 (Base2) 2#11 =3 (Base2) 16#a =10 (Base16) 16#FF =255 (Base16) 16#FFFF =32767 (Base16) 8#10 =8 (Base8)
Hereisanexampleofusingthese:
constmaxnat1:=16#FF%Largest1-bytenaturalnumber
constmaxint2:=16#7FFF%Largest2-byteinteger
Youshouldbecarefultoavoidconfusionaboutpatternssuchas16#FFFF.Itistemptingtothinkthatthisisthevalue1,becausethebitpattern(2-bytetwo's
![Page 228: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/228.jpg)
complementinternalrepresentation)for1isthesameasthebitpatternfor16#FFFF=32767.However,thevalue(asopposedtotheinternalrepresentation)of1and32767aredifferent.
Seealso
int,maxint(thelargestintegervalue),nat(positivevaluesonly)andbyteintegers).Seealsointstrandnatstrwhichconvertintegerandnaturalnumbervaluestocorrespondingcharacterstringsinanybase,forexampleintstr(4,0,2)="100".
![Page 229: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/229.jpg)
explicitRealConstant realliteral
SyntaxAnexplicitRealConstantconsistsofanoptionalplusorminussign,asignificantdigitspart,andanexponentpart.
Example
Inthefollowing,theexplicitrealconstantsare0.0and2.93e3.
vartemperature:real:=0.0
constspeed:=2.93e3%Valueis2,930.0
Details
Thesignificantdigitspart(orfractionalpart)ofanexplicitrealconstantconsistsofasequenceofoneormoredigits(0to9)optionallycontainingadecimalpoint(aperiod).Thedecimalpointisallowedtofollowthelastdigitasin16.ortoprecedethefirstdigit,asin.25.
TheexponentpartconsistsofthelettereorEfollowedoptionallybyaplusorminussignfollowedbyoneormoredigits.Forexample,in-9.837e-3theexponentpartise-3.Thevalueof-9.837e-3is-9.837times0.001.
Ifthesignificantfigurespartcontainsadecimalpoint,thentheexponentpartisnotrequired.
![Page 230: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/230.jpg)
explicitStringConstant stringliteral
SyntaxAnexplicitStringConstantisasequenceofcharacterssurroundedbyquotationmarks.
Example
Inthefollowing,theexplicitstringconstantsare"Helloworld",""and"273O'ReillyAve.".
varname:string:="Helloworld"
name:=""%Nullstring,containingzerocharacters
varaddress:string:="273O'ReillyAve."
Details
Withinanexplicitstringconstant(andwithinanexplicitcharacterconstant),thebackslash\isusedtorepresentcertainothercharactersasfollows:
\" quotationmarkcharacter \nor\N endoflinecharacter \tor\T tabcharacter \for\F formfeedcharacter \ror\R returncharacter \bor\B backspacecharacter \eor\E escapecharacter \dor\D deletecharacter \\ backslashcharacter
Forexample,put"One\nTwo"willoutputOneononelineandTwoonthenext.Inanexplicitcharacterconstant(whichissurroundedbysinglequotes,asin'John'),thebackslashisnotrequiredbeforeadoublequote",butitisrequiredbeforeasinglequote',asinthesetwoconstants:
'Johnsaid"Hello"toyou' 'Don\'tcry'.
Youcanusethecaret^tospecifyASCIIcontrolcharacters,forexample:
![Page 231: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/231.jpg)
'^H' ASCIIbackspacecharacter
Thecaretspecifiesthatthetopthreebitsofthecharacteraresettozero.Foranycharacterc,thefollowingistrue:
'^c'=chr(ord('c')&2#11111)
Howeverifcisthequestionmark,asin'^?',thebitsarenotturnedoff.
Explicitstringconstantscannotcrosslineboundaries.Torepresentastringthatislongerthanaline,breakitintotwoormorestringsonseparatelinesandusecatenation(+)tojointheindividualstrings.
Anexplicitstringconstantcancontainatmost255characters(thisisinimplementationconstraint).
Stringvaluesarenotallowedtocontaincharacterswiththecodevaluesof0or128;thesecharactervaluesarecalledeos(endofstring)anduninitchar(uninitializedcharacter).Thesearereservedbytheimplementationtomarktheendofastringvalueandtoseeifastringvariablehasbeeninitialized.
![Page 232: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/232.jpg)
explicitTrueFalseConstant booleanliteral
Syntax
AnexplicitTrueFalseConstantisoneof:
(a) true (b) false
Example
Thefollowingdeterminesifstringscontainsaperiod.Aftertheforstatement,foundwillbetrueifthereisaperiodins.
varfound:boolean:=false
fori:1..length(s)
ifs="."then
found:=true
endif
endfor
Details
true/falsevaluesarecalledbooleanvalues.Abooleanvariable,suchasfoundintheaboveexample,canhaveavalueofeithertrueorfalse.
Seealso booleantype.
![Page 233: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/233.jpg)
expn expression
Syntax
Anexpnisoneof:
(a) explicitConstant %e.g.:25
(b) variableReference %e.g.:width
(c) constantReference %e.g.:pi
(d)expninfixOperatorexpn
%e.g.:3+width
(e) prefixOperatorexpn
%e.g.:-width
(f) (expn) %e.g.:(width-7)
(g) substring %e.g.:s(3..5)
(h) functionCall %e.g.:sqrt(25)
(i) setConstructor %e.g.:modes(4,3)
(j) enumeratedValue %e.g.:color.red
Description
Anexpression(expn)returnsavalue;inthegeneralcase,thismayinvolveacalculation,suchasaddition,asintheexpression:
3+width
put"Helloworld"%"Helloworld"isanexpn
![Page 234: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/234.jpg)
Example vardiameter:real
constpi:=3.14159%3.14159isanexpn
diameter:=pi*r**2%pi*r**2isanexpn
varx:=diameter%diameterisanexpn
Details
Inthesimplestcase,anexpression(expn)issimplyanexplicitconstantsuchas25or"Helloworld".Avariablebyitselfisconsideredtobeanexpressionwhenitsvalueisused.Thisisthecaseabove,wherethevalueofdiameterisusedtoinitializex.Moregenerally,anexpressioncontainsanoperatorsuchas+andcarriesoutanactualcalculation.Anexpressionmayalsobeasubstring,functioncall,setconstructororenumeratedvalue.Fordetails,seethedescriptionsoftheseitems.
TheTuringinfixoperatorsare:+,-,*,/,div,mod,**,<,>,=,<=,>=,not=,not,and,or,=>,in,notin,shr(shiftright),shl(shiftleft),and(exclusiveor).Fordetails,seeinfixOperator.TheTuringprefixoperatorsare+,-andnot,^(pointerfollowing)and#(seecheat).Fordetailsseeprefixoperator.
Seealsoprecedenceofoperators,aswellastheint,real,stringandbooleantypes.
![Page 235: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/235.jpg)
export list
Syntax
AnexportListis:
export[howExport]id{,[howExport]id}
Description
Anexportlistisusedtospecifythoseitemsdeclaredinamodule,monitororclassthatcanbeusedoutsideofit.Itemsthataredeclaredinsideamodule,monitororclassbutnotexportedcannotbeaccessedoutsideofit.
Example
Inthisexample,theproceduresnamespopandpushareexportedfromthestackmodule.Thesetwoproceduresarecalledfromoutsidethemoduleonthelastandthirdfromlastlinesoftheexample.Noticethatthewordstackandadotmustprecedetheuseofthesenames.Sincetopandcontentswerenotexported,theycanbeaccessedonlyfrominsidethemodule.
modulestack
exportpush,pop
vartop:int:=0
varcontents:array1..100ofstring
procedurepush…endpush
procedurepop…endpop
endstack
stack.push("Harvey")
varname:string
stack.pop(name)%ThissetsnametoHarvey
Procedures,functions,variables,constantsandtypescanbeexported.Modules,monitorsorclassescanotbeexported.Parenthesesareallowedaroundtheitemsinanexportlist,asin:
export(push,pop)
Thefollowingsyntaxspecifiesthateachexportedidentifiercanoptionallybeprecededbythekeywordsvar,unqualified,pervasiveandopaque.Ofthese,onlyopaqueisavailableinTuringproper.
![Page 236: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/236.jpg)
Details
TheformofhowExportis:
{exportMethod}
TheformofexportMethodisoneof:
(a) var (b) unqualified (c) pervasive (d) opaque
Thekeywordvarmeansthattheexportedvariablecanbechangedoutsideoftheexportingmodule,monitororclass.Thiskeywordappliesonlytoexportedvariables.Forexample,ifstringvariablenameisexportedvarfrommoduleM,namecanbechangedfromoutsideofMbyM.name:="Surprise!".
Thekeywordunqualifiedmeansthatreferencestotheexporteditemdonotneedtobeprefixedbythenameoftheexportingitem.Forexample,ifmoduleMexportsprocedurepunqualified,acalltopoutsideofMcanbesimplypinsteadoftheusualM.p.Aclasscannotexportvariablesordynamicconstantsunqualified(becauseeachobjectoftheclasshasitsowncopiesofthese).Theonlythingsaclasscanexportunqualifiedaretypesandcompiletimeconstants.Thekeywordunqualifiedcanbeabbreviatedto~.whichispronouncedas"notdot".
Thekeywordpervasive,whichisonlymeaningfulifunqualifiedisalsopresent,specifiesthattheexporteditemistobevisibleinsubsequentscopes,inotherwordsthatitisnotnecessarytoimportitintointernalmodules,monitorsandclasses.
Thekeywordopaque,whichcanonlyprecedetypenames,specifiesthatoutsidethemodule,monitororclass,thetypeisconsideredtobedistinctfromallothertypes.Thismeans,forexample,thatifthetypeisanarray,itcannotbesubscriptedoutsideofthemodule.Seemoduledeclarationforanexamplethatusesopaquetypes.Inmostcases,classesarepreferabletoopaquetypes.
![Page 237: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/237.jpg)
Exportedsubprogramsareconsideredtobedeferred,meaningthatexpansionsareallowedtooverridethesesubprograms.Seealsodeferredsubprograms.Thesecanbeoverriddenusingthekeywordbodybeforetheresolvingsubprogrambody.
Aclasscannotexportitemsfromitsparentoritparent'sancestors.Allexporteditemmustbedeclaredinthecurrentclass.
Details
Youcanexportallfromamodule,monitororaclass.Thismeansthateverysibmlethatislegaltoexportisexported.Youmayalsoqualifytheall,asinexportopaqueunqualifiedpervasiveallwherethequalifiersareaddedtoeachexportitem(ifitmakessense).
Ifallisspecifiedastheexportitem,nootheritemmaybespecified.Also,andallexportaffectsonlythemodule,monitororclassthatitisgivenin.Anyinheritingorimplementingmodule,monitororclassdoesnotexportallunlesstheyalsospecifyit.
Seealso
unit,module,monitorandclass.Seealsoimportlist,inheritclause,implementclause,implementbyclauseanddeferredsubprogram.
![Page 238: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/238.jpg)
external declaration
Dangerous
Syntax
AnexternalDeclarationisoneof:
(a)external[overrideName]subprogramHeader (b)external[addressSpec]varid[:typeSpec][:=
Description
Anexternaldeclarationisusedtoaccessvariablesorsubprogramsthatarewritteninotherlanguagesorwhichrequirespeciallinkage.Thisfeatureisimplementation-dependentanddangerousandmaycausearbitrarydataorprogramcorruption.FromaninterpretiveenvironmentsuchasTuring,thisprovideslinkagetoitemsthatarepartoftheTuringsystem.ForcompiledversionsofTuring,thelinkagewouldbebymeansofastandard,operatingsystem-specificlinkageeditor.
Details
Inform(a)theoptionaloverrideNamemustbeanexplicitstringconstant,suchas"printf".Ifitisomitted,theexternalnameisthenameinthesubprogramHeaderSeesubprogramHeader.
Thecurrentimplementationdoesnotsupportform(b).Thisformisdocumentedhereincaseafutureversionsupportsit.TheaddressSpecisacompiletimeexpression(itsvaluemustfitintherangeoftheaddressinttype)orisacompiletimestringvalue.IftheaddressSpecisomitted,theidentifieristhenameofanexternalvariable.Thisnamerepresentsanimplementation-dependentmethodoflocatingavariable.AtleastoneoftypeSpecorexpnmustbepresent.
Declaringvariablesatabsoluteaddressesisusefulfordevicemanagementincomputerarchitectureswithmemorymappeddeviceregisters.Externalvariablesdeclaredtobeintornatwillbydefaultbecheckedforinitialization.Toavoidthischeck,declarethemtobeint4ornat4.
Example
PlacevariablettyDataathexadecimallocation9001andassignitthecharacterA.
external16#9001varttyData:char
ttyData:='A'%CharacterAisassignedtohexlocation9001
![Page 239: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/239.jpg)
ExampleAccessanexternalintegervariablenamedERRFLAG.
externalvarERRFLAG:int
ifERRFLAG=0then…
Example
Accessanintegervariablewhichiscalledyinthisprogrambutiscalledexternally.
external"x"vary:int
ExampleDeclaredrawcircletobeaprocedurethatisexternallyknownascircle
external"circle"proceduredrawcircle(x,y,r,
![Page 240: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/240.jpg)
false booleanvalue(nottrue)
Syntax false
DescriptionAboolean(true/false)variablecanbeeithertrueorfalse(seebooleantype).
Example
varfound:boolean:=false
varword:int
fori:1..10
getword
found:=foundorword="gold"
endfor
iffound=truethen
put"Found'gold'inthetenwords"
endif
DetailsThelineiffound=truethencanbesimplifiedtoiffoundthenwithnochangetothemeaningoftheprogram.
![Page 241: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/241.jpg)
fetcharg fetchargumentfunction
Syntax fetcharg(i:int):string
Description
Thefetchargfunctionisusedtoaccessthei-thargumentthathasbeenpassedtoaprogramfromthecommandline.Forexample,iftheprogramisrunfromtheTuringenvironmentusing
:rfile1file2
thenfetcharg(2)willreturn"file2".Ifaprogramcalledprog.xisrununderUNIXusingthiscommand:
prog.xfile1file2
thevalueoffetcharg(2)willsimilarlybe"file2".
Thenargsfunction,whichgivesthenumberofargumentspassedtotheprogram,isusuallyusedtogetherwiththefetchargfunction.Parameteripassedtofetchargmustbeintherange0..nargs.
The0-thargumentisthenameoftherunningprogram.
Example
Thisprogramlistsitsownnameanditsarguments.
put"Thenameofthisprogramis:",fetcharg(0)
fori:1..nargs
put"Argument",i,"is",fetcharg(i)
endfor
Execute
![Page 242: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/242.jpg)
Seealso nargs
![Page 243: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/243.jpg)
File
Description
Thisunitcontainsthepredefinedsubprogramsthatdealwithfilemanipulationonawhole-filebasis(asopposedtomanipulatingthedatainthefileusingopenandclose,etc.).Theseroutinesallowyoutorename,copyanddeletefiles,aswellasgetinformationaboutafileandgetthefreespaceondiskavailableforafile.
AllroutinesintheFilemoduleareexportedqualified(andthusmustbeprefacedwith"File.").
EntryPoints
Exists Returnswhetherafileexists.FullPath Returnsthefullabsolutepathnameofafile.Parent Returnstheparentdirectoryofafileordirectory.
Status Getsinformationaboutafilesuchassize,modificationdate,etc.
Copy Copiesafiletoanotherlocation.Rename Renamesafileordirectory.Delete Deletesafile.
DiskFree Getsthefreespaceonthediskuponwhichafileordirectoryresides.
Details
OnthePC,apathnameofafileoradirectorycanuseeithertheforwardslashorbackwardslashtoseparatedirectorynames.Thedrivemustbefollowedbyacolon.Thusthefollowingarelegalpathnames:
x:\students\west\example.t
c:/turing/test.t
/west/binary.t(usesthedefaultdrive).
OntheMacintosh,apathnameofafileordirectorycanusethestandardMacintoshformatofVolumeName:DirectoryName:DirectoryName:FileNameortheUnixformatof/VolumeName/DirectoryName/DirectoryName/FileName.Notethatthenamescanhavespacesinthem.
![Page 244: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/244.jpg)
HSA:Applications:TuringFiles:example.t
/HSA/Applications/TuringFiles/example.t
OnUNIXsystems,thepathnamemustcorrespondtotheUNIXstandardofusingaforwardslashbetweenpartsofthepath.
/export/home/west/turing/example.t
Ingeneral,youcanachievethegreatestportabilitybyusingtheUNIXstandardforuseinpathnames,asallTuringsystemssupportit.
![Page 245: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/245.jpg)
File.Copy PartofFilemodule
Syntax File.Copy(srcPathName,destPathName:string)
Description
File.CopycopiesafilenamedbythesrcPathNameparametertothefilenamedbythedestPathNameparameter.Thecopycanbebetweendifferentdisksorfilesystems.
Details
Thesourcefilenamemustbeanactualfile.Thisprocedurewillnotcopydirectories.
IftheFile.Copycallfails,thenError.Lastwillreturnanon-zerovalueindicatingthereasonforthefailure.Error.LastMsgwillreturnastringwhichcontainsthetextualversionoftheerror.
Notethatyoucanuseeitherforwardorbackwardslashestoseparatecomponentsinapath.Ifyouusebackwardslashes,youmustdoubletheminastringliteral.(i.e."d:\\west\\example.t")
Example
Thisprogramcopiesthefile"d:\west\example.dat"to"new_example.t".inthecurrentdirectory.
File.Copy("d:/west/example.dat","new_example.t")
ifError.Last=eNoErrorthen
put"Filecopied"
else
put"Didnotcopythefile."
put"Error:",Error.LastMsg
endif
Execute
AnexampleprogramisavailablethatcopiesafiletothecurrentdirectoryusingFile.Copy,displaysitscontentstotherunwindow,andthendeletesthefileusingFile.Delete.
![Page 246: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/246.jpg)
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingFile.Copy,notbycallingCopy.
![Page 247: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/247.jpg)
File.Delete PartofFilemodule
Syntax File.Delete(filePathName:string)
Description
File.DeleteisusedtodeletethefilespecifiedbytheparameterfilePathName.ThisistheequivalentofdoingadelinDOSorrminUNIX.
Details
IftheFile.Deletecallfails,thenError.Lastwillreturnanon-zerovalueindicatingthereasonforthefailure.Error.LastMsgwillreturnastringwhichcontainsthetextualversionoftheerror.
Example
Thisprogramdeletesthefilecalledinformation.
File.Delete("information")
ifError.Last=eNoErrorthen
put"Filedelete"
else
put"Didnotdeletethefile."
put"Error:",Error.LastMsg
endif
Execute
Anexampleprogramisavailablethatcreatesafileinthecurrentdirectory,andthendeletesthefileusingFile.Delete.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingFile.Delete,notbycallingFile.
![Page 248: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/248.jpg)
File.DiskFree PartofFilemodule
Syntax File.DiskFree(pathName:string):int
Description
File.DiskFreegetsthenumberofbytesforthediskuponwhichpathNameresides.ThepathNameparametercanspecifyeitherafileoradirectory.Ifitistheemptystring,thenFile.DiskFreereturnsthenumberofbytesoffreediskspaceonthediskuponwhichtheexecutiondirectoryresides.
Details
IftheFile.DiskFreecallfails,thenitreturns-1.AlsoError.Lastwillreturnanon-zerovalueindicatingthereasonforthefailure.Error.LastMsgwillreturnastringwhichcontainsthetextualversionoftheerror.
Ifthereismorethan2,147,483,647bytesfreeonadisk,theFile.DiskFreefunctionreturns2,147,483,647.
Example
ThisprogramprintsouttheamountofspaceontheA:driveonaPCandintheexecutiondirectory.
varbytesFree:int
bytesFree:=File.DiskFree("A:\\")
ifbytesFree=-1then
put"Can'tgetfreespaceondriveA:."
put"Error:",Error.LastMsg
else
put"Thereare",bytesFree,"bytesfreeondriveA:"
endif
bytesFree:=File.DiskFree(".")
ifbytesFree=-1then
put"Can'tgetfreespaceondefaultdirectory."
put"Error:",Error.LastMsg
else
put"Thereare",bytesFree,"bytesfreeonthedefaultdir"
endif
![Page 249: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/249.jpg)
Execute
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingFile.DiskFree,notbycallingDiskFree.
![Page 250: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/250.jpg)
File.Exists PartofFilemodule
Syntax File.Exists(pathName:string):boolean
DescriptionFile.ExistsreturnstrueifafilebythenameofpathNameexists.ItwillreturnfalseifpathNameisadirectory.
Details
IftheFile.Existsreturnsfalse,youcanexamineError.LastorError.LastMsgformoreinformation(i.e.whetherthepathfailedorthefilewassimplynotfound).
Example
Thisprogramloopsuntiltheusertypesinapathnamethateitherdoesn'talreadyexistorisallowedtobeoverwritten.
varpathName:string
varchoice:string
loop
put"Enterfilenametowriteresultsto"..
getpathName
ifFile.Exists(pathName)then
put"Overwrite",pathName,"?"..
getchoice
exitwhenchoice="y"
else
exit
endif
endloop
Execute
Anexampleprogramisavailablethatcreatesafileinthecurrentdirectory,testsforitsexistenceusingFile.ExistsanddeletesthefileusingFile.Delete.
Exportedqualified.
![Page 251: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/251.jpg)
Status ThismeansthatyoucanonlycallthefunctionbycallingFile.Exists,notbycallingExists.
![Page 252: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/252.jpg)
File.FullPath PartofFilemodule
Syntax File.FullPath(pathName):string):string
Description
File.FullPathreturnsastringrepresentingthefullabsolutepathnameinTuringformat(forwardslashes)ofthepaththatispassedtothefunction.Thepathnamepassedindoesnothavetodescribeanexistingfileordirectory.
DetailsThefullpathnamewillbeinTuringformatandincludethedrivename(forexample"d:/turing/examples/games/SpaceGame.t")
Example
Thisprogramobtainsapathfromtheuserandthenoutputsafullpathnamebasedonthepath.
varpathName:string
getpathName
put"Fullpath=",File.FullPath(pathName)
Execute
Details
Anotherexampleisavailablethatcheckswhetherafileandallofthedirectoriesinthepathtothefileexist.ThisprogramillustratestheuseofFile.FullPath,File.Parent,File.Exists,andDir.Exists.
Exportedqualified.
![Page 253: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/253.jpg)
StatusThismeansthatyoucanonlycallthefunctionbycallingFile.FullPath,notbycallingFullPath.
![Page 254: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/254.jpg)
File.Parent PartofFilemodule
Syntax File.Parent(pathName:string):string
Description
File.ParentreturnsastringrepresentingtheparentdirectoryinTuringformat(forwardslashes)ofthepathpassedasaparameter.Thepathnamepassedindoesnothavetodescribeanexistingfileordirectory.Attemptingtoobtaintheparentdirectoryofarootdirectory(forexample"c:/")willreturnthesamerootdirectoryandwillsetthevaluereturnedbyError.Lasttoanon-zerovalue.
Example
Thisprogramobtainsapathfromtheuserandthenlistsalltheparentdirectoriesuntilitreachestherootdirectory.
varpathName:string
put"Enterapath:"..
getpathName
loop
pathName:=File.Parent(pathName)
exitwhenError.Lastnot=eNoError
putpathName
endloop
Execute
Details
Anotherexampleisavailablethatcheckswhetherafileandallofthedirectoriesinthepathtothefileexist.ThisprogramillustratestheuseofFile.FullPath,File.Parent,File.Exists,andDir.Exists.
![Page 255: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/255.jpg)
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingFile.Parent,notbycallingParent.
![Page 256: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/256.jpg)
File.Rename PartofFilemodule
Syntax File.Rename(srcPathName,destName:string)
Description
File.CopyrenamesafileordirectorynamedbythesrcPathNameparametertothedestNameparameter.ThedestNameparametermustbeanameonly.InotherwordsFile.Renamecan'tmoveafilebetweendifferentdirectories.
Details
IftheFile.Renamecallfails,thenError.Lastwillreturnanon-zerovalueindicatingthereasonforthefailure.Error.LastMsgwillreturnastringwhichcontainsthetextualversionoftheerror.
Example
Thisprogramrenamesthefile"/usr/west/example"to"testcase"
File.Rename("/usr/west/example","testcase")
ifError.Last=eNoErrorthen
put"Filerenamed"
else
put"Didnotrenamethefile."
put"Error:",Error.LastMsg
endif
Execute
Anexampleprogramisavailablethatcreatesafileinthecurrentdirectory,renamesittoadifferentnameusingFile.Rename,checkstheexistenceofbothfilesusingFile.ExistsandthendeletesthefileusingFile.Delete.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingFile.Rename,notbycallingRename.
![Page 257: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/257.jpg)
File.Status PartofFilemodule
Syntax File.Status(pathName:string,varsize,attribute,fileTime:int)
Description
File.Statusisusedtogetassortedinformationaboutafileordirectory.WhenthefunctioniscalledwithaspecifiedpathName,itreturnstheinformationaboutthefileintheotherparameters.
Thesizeparameteristhesizeofthefileinbytes.
TheattributeparameterhasitsindividualbitssetasexactlyastheattributeparameterinDir.GetLongsubprogramdoes.SeeDir.GetLongforthelistofattributeconstants.
ThefileTimeisthetimeoflastmodificationofthefile.Itisreturnedasthenumberofsecondssince00:00:00GMT1/1/1970.Toconvertthistoastring,useTime.SecDate.
Details
IftheFile.Statuscallfails,size,attributeandfileTimeareallsetto1.Error.Lastwillreturnanon-zerovalueindicatingthereasonforthefailure.Error.LastMsgwillreturnastringwhichcontainsthetextualversionoftheerror.
Example
ThisprogramprintsinformationabouttheNotePad.exeapplicationinWindowsfoundat"c:\windows\notepad.exe".(Noteonsomesystems,thiswillbe"c:\winnt\notepade.exe"
constpathName:string:="c:/windows/notepad.exe"
varsize,attribute,fileTime:int
File.Status(pathName,size,attribute,fileTime
ifError.Last=eNoErrorthen
put"Name:",File.FullPath(pathName)
put"Created:",Time.SecDate(fileTime)
put"Size:",size,"bytes"
put"Attributes:"..
if(attributeandootAttrDir)not=0then
put"Directory"..
else
put""..
endif
if(attributeandootAttrRead)not=0then
put"Readable"..
![Page 258: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/258.jpg)
else
put""..
endif
if(attributeandootAttrWrite)not=0then
put"Writable"..
else
put""..
endif
if(attributeandootAttrExecute)not=0then
put"Executable",skip
else
putskip
endif
else
put"Unabletogetfileinformation"
put"Error:",Error.LastMsg,skip
endif
Execute
Execute
AnotherexampleprogramisavailablethatusesFile.Statustodeterminethestatusofseveralfilesanddirectories.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingFile.Status,notbycallingStatus.
![Page 259: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/259.jpg)
flexible arrayinitialization
Syntax flexiblearrayindexType{,indexType}oftypeSpec
Description
Theflexiblekeywordallowsanarraytoberesizedusingnewatalaterpointintime.Theindicesmayhavecompile-timeorrun-timeupperbounds(thelowerboundmustbecompile-time).Theupperboundscanbechangedbyusing:
newname,newUpper1{,newUpper2}
Theexistingarrayentrieswillretaintheirvalues,exceptthatanyindexmadesmallerwillhavethecorrespondingarrayentrieslost.Anyindexmadelargerwillhavethenewarrayentriesuninitialized(ifapplicable).
Additionally,theupperbound(bothinthedeclarationandthenewstatement)canbemadeonelessthanthelowerbound.Thiseffectivelymakesanarraythatcontains0elements.Itcanlaterbeincreasedinsizewithanothernew.
Inthecurrentimplementation(1999),withamulti-dimensionalarraywithanon-zeronumberoftotalelements,itisarun-timeerrortochangeanybutthefirstdimension(unlessoneofthenewupperboundsisonelessthanthecorrespondinglowerbound,giving0elementsinthearray)asthealgorithmtorearrangetheelementmemorylocationshasnotyetbeenimplemented.
Currently,onlyvariablescanbedeclaredinthisform.Thereisnoflexiblearrayparametertype,althoughaflexiblearraycanbepassedtoanarrayparameterwith“*”astheupperbound.
Example Seearrayforanexampleofflexible.
![Page 260: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/260.jpg)
Execute
Seealso arrayandnew.
![Page 261: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/261.jpg)
floor real-to-integerfunction
Syntax floor(r:real):int
Description Returnsthelargestintegerthatislessthanorequaltor.
Details
Thefloorfunctionisusedtoconvertarealnumbertoaninteger.Theresultisthelargestintegerthatislessthanorequaltor.Inotherwords,thefloorfunctionroundsdowntothenearestinteger.Forexample,floor(3)is3,floor(2.75)is2andfloor(-8.43)is-9.
Seealso ceilandroundfunctions.
![Page 262: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/262.jpg)
Font
Description
Thisunitcontainsthepredefinedsubprogramsthatdealwithfonts.Usingtheseroutines,youcandisplaytextinaselectedfontname,sizeandstyleonthescreen.Notethatoutputinaparticularfontistreatedasgraphicsoutput.
AllroutinesintheFontmoduleareexportedqualified(andthusmustbeprefacedwith"Font.").
Details
Thereisadefaultfont.YoucandrawinandobtaininformationaboutthedefaultfontbypassingfontDefaultIDtoFont.Draw,Font.WidthandFont.Sizes.Thedefaultfontisthesamefontasisusedbyputintheoutputwindow.
EntryPoints
New Selectsaparticularfontname,sizeandstyleforanewfont.
Free FreesupthefontcreatedbyusingNew.Draw Drawstextinagivenfont.
Width Getsthewidthinpixelsofaparticularpieceoftextinaspecifiedfont.
Sizes Getstheheightandvariousleadingsofaspecifiedfont.
Name Returnsthenameofthespecifiedfont.StartName Preparestolistallavailablefonts,GetName Getsthenextfontname.GetStyle Getsalltheavailablestylesforaspecifiedfont.
StartSize Preparestolistallavailablesizesforaspecifiedfontandstyle.
GetSize Getsthenextfontsize.
![Page 263: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/263.jpg)
Font.Draw PartofFontmodule
Syntax Font.Draw(txtStr:string,x,y,fontID,Color:int)
Description
Font.Drawisusedtoactuallydrawtextinaspecifiedfont.ThetextStrcontainsthestringtobedrawn.Thexandyparametersarethelocationofthelowerlefthandcornerofthetexttobedisplayed.ThefontIDparameteristhenumberofthefontinwhichthetextistobedrawn.TheColorparameterisusedtospecifythecolorinwhichthetextistoappear.
Notethatthetextthatappearsiscompletelyunrelatedtothetextthatappearsusingput.Font.Drawisagraphicscommandandthusdoesnotuseoraffectthecursorlocation.
ThetextdrawnbytheFont.Drawproceduredoesnoterasethebackground.
Details
IfFont.DrawispassedaninvalidfontID,afatalerroroccurs.Ifthefailsforother(non-fatal)reasons,thenError.Lastwillreturnanon-zerovalueindicatingthereasonforthefailure.Error.LastMsgwillreturnastringwhichcontainsthetextualversionoftheerror.
Example
Theprogramprintsoutseveralphrasesinavarietyoffonts.
varfont1,font2,font3,font4:int
font1:=Font.New("serif:12")
assertfont1>0
font2:=Font.New("sansserif:18:bold")
assertfont2>0
font3:=Font.New("mono:9")
assertfont3>0
font4:=Font.New("Palatino:24:bold,italic")
assertfont4>0
Font.Draw("Thisisinaseriffont",50,30,font1,red
Font.Draw("Thisisinasansseriffont",50,80,
Font.Draw("Thisisinamonofont",50,130,font3,colorfg
Font.Draw("ThisisinPalatino(ifavailable)",50,180,
Font.Free(font1)
Font.Free(font2)
Font.Free(font3)
Font.Free(font4)
![Page 264: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/264.jpg)
Execute
DetailsTousethesamefontasisusedbytheputstatement,usedefFontIDnumber.Thisfontdoesnothavetobecreatedorfreedbytheuser,andallowsaprogramtoquicklyplacetextinanylocationonthescreen.
Example
Theprogramdrawstwostringsinthedefaultfont(defFontID).
Font.Draw("DrawingHere",100,120,defFontID,
Font.Draw("andHere",180,90,defFontID,brightgreen
Execute
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingFont.DrawDraw.
![Page 265: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/265.jpg)
Font.Free PartofFontmodule
Syntax Font.Free(fontID:int)
Description
Font.Freeisusedtoreleaseafontthatisnolongerneeded.Thereisalimittothenumberoffontsthatmaybedefinedatanyonetime.ByhavingaFont.FreeeveryFont.New,thenumberofsimultaneouslydefinedfontsiskepttoaminimum.
Details
IfFont.FreeispassedaninvalidfontID,afatalerroroccurs.Ifthefailsforother(non-fatal)reasons,Error.Lastwillreturnanon-zerovalueindicatingthereasonforthefailure.Error.LastMsgwillreturnastringwhichcontainsthetextualversionoftheerror.
Example
Theprogramprintsoutseveralphrasesinavarietyoffonts.
varfont1,font2,font3,font4:int
font1:=Font.New("serif:12")
assertfont1>0
font2:=Font.New("sansserif:18:bold")
assertfont2>0
font3:=Font.New("mono:9")
assertfont3>0
font4:=Font.New("Palatino:24:Bold,Italic")
assertfont4>0
Font.Draw("Thisisinaseriffont",50,30,font1,red
Font.Draw("Thisisinasansseriffont",50,80,
Font.Draw("Thisisinamonofont",50,130,font3,colorfg
Font.Draw("ThisisinPalatino(ifavailable)",50,180,
Font.Free(font1)
Font.Free(font2)
Font.Free(font3)
Font.Free(font4)
Execute
Exportedqualified.
![Page 266: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/266.jpg)
Status ThismeansthatyoucanonlycallthefunctionbycallingFont.FreeFree.
![Page 267: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/267.jpg)
Font.GetName PartofFontmodule
Syntax Font.GetName:string
Description
Font.GetNameisusedtogetthenextfontavailableonthesystem.ByusingFont.StartNameandthencallingFont.GetNamerepeatedly,youcangetthenamesofallthefontsavailabletotheprogram.
Font.StartNamemustbecalledbeforeanycallstoFont.GetName.Afterthat,Font.GetNamereturnsthelistofthefontnames,onepercall.Whentherearenomoresizes,Font.GetNamereturnstheemptystring.
Oncethenameofafontisknown,it'spossibletolisttheavailablestyles(usingFont.GetStyle)andtheavailablesizes(usingFont.StartSizeandFont.GetSize)forthatfont.
Example
Theprogramlistsallthefontsavailableonthesystem.
varfontName:string
Font.StartName
loop
fontName:=Font.GetName
exitwhenfontName=""
putfontName
endloop
Execute
Anotherexampleisavailablethatdisplaysfullinformationaboutthefontsincludingname,styles,andpointsizes.
![Page 268: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/268.jpg)
Example
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingFont.GetName,notbycallingGetName.
![Page 269: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/269.jpg)
Font.GetSize PartofFontmodule
Syntax Font.GetSize:int
Description
Font.GetSizeisusedtogetthenextsizeinthelistofavailablefontsizesforaparticularfontnameandstyle.
Font.StartSizemustbecalledbeforeanycallstoFont.GetSize.Afterthat,Font.GetSizereturnsthelistofsizes,onepercall.Whentherearenomoresizes,Font.GetSizereturns0.
Somefontsare“scalable”.Thismeansthatthecomputercanscalethefontstofitanygivensize.(UnderMicrosoftWindowsandtheAppleMacintosh,TrueTypeandPostScriptfontsarescalablewiththeappropriateutilities.)Inthiscase,Font.GetSizereturns-1.
ExampleSeeFont.StartSizeforaprogramthatlistsallthefonts,stylesandsizesavailableonthesystem.
Example
Anexampleisavailablethatdisplaysfullinformationaboutthefontsincludingname,styles,andpointsizes.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingFont.GetSize,notbycallingGetSize.
![Page 270: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/270.jpg)
Font.GetStyle PartofFontmodule
SyntaxFont.GetStyle(fontName:string,varbold,italic,underline:boolean):string
Description
Font.GetStyleisusedtogetthestylesavailableonthesystemforaspecifiedfont.bold,italicandunderlinearesettotrueifbold,italicorunderlineversionsofthefontareavailable.Oncethestylesavailableforafontareknown,it'spossibletogetthesizesavailableforeachstylebyusingFont.StartSizeandFont.GetSize.
Example
Theprogramlistsallthefontsandtheirstylesavailableonthesystem.
varfontName:string
varbold,italic,underline:boolean
Font.StartName
loop
fontName:=Font.GetName
exitwhenfontName=""
Font.GetStyle(fontName,bold,italic,underline
putfontName:30..
ifboldthen
put"bold"..
endif
ifitalicthen
put"italic"..
endif
ifunderlinethen
put"underline"..
endif
put""
endloop
Execute
![Page 271: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/271.jpg)
Example
Anexampleisavailablethatdisplaysfullinformationaboutthefontsincludingname,styles,andpointsizes.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingFont.GetStyle,notbycallingGetStyle.
![Page 272: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/272.jpg)
Font.Name PartofFontmodule
Syntax Font.Name(fontID:int)fontName:string
Description
Font.Nameisusedtogetthenameofafontthatisbeingused.Thestringthatisreturnedcanbeusedtodeterminewhichfontisactuallybeingusedforthedefaultfonts“serif”,“sansserif”and“mono”.
Example
Theprogramprintsoutthefontsusedfor“serif”,“sansserif”and“mono”.
varserifFont,sansSerifFont,monoFont:int
serifFont:=Font.New("serif:12")
assertserifFont>0
sansSerifFont:=Font.New("sansserif:12")
assertsansSerifFont>0
monoFont:=Font.New("mono:12")
assertmonoFont>0
put"serif=",Font.Name(serifFont)
put"sansserif=",Font.Name(sansSerifFont)
put"mono=",Font.Name(monoFont)
Font.Free(serifFont)
Font.Free(sansSerifFont)
Font.Free(monoFont)
Execute
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingFont.Name,notbycallingName.
![Page 273: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/273.jpg)
Font.New PartofFontmodule
Syntax Font.New(fontSelectStr:string):int
Description
Font.Newisusedtoobtainafontfordrawing.ThefontSelectStrparameterspecifiesthename,sizeandstyleofthefont.Font.NewreturnsafontidentifierusedbytheFont.Drawproceduretodrawtextintheselectedfont.
TheformatforthefontSelectStrparameteris"Family:Size:Style".Eachelementisseparatedbyacolon.The":Style"isoptional.Ifleftout,thetextappearsinthestandardfaceforthefont.
Familyisthenameofthefont,suchas"Times","Helvetica",etc.Thenamemustmatchanexistingfontonthesystem.Becauseonedoesnotnecessarilyknowwhichfontswillbeavailableandnamesforthesamefontchangebetweendifferentsystems(i.eTimes,Times-Roman,etc.),Turingdefinesthreefamilynamesbemappedascloselyaspossibletofontsthatexistonthesystem.
"serif"isusedforaserifedbodyfont.ThiswillusuallybemappedtoTimes-Roman.
"sansserif"isusedforanon-serifeddisplayfont.ThiswillusuallybemappedtoArial.
"mono"isusedforamonospacedfont.ThiswillusuallybemappedtoCourier.
Sizeisthepointsizeinwhichthetextshouldappear.Ifthenumberislargerorsmallerthancanbecreatedonagivensystem,thesystemwillreturnthefontofthelargestorsmallestsizeavailableandsetError.Last.
UnderTuring,thesizeparametermayalsohavetheformheightxwidthheightandwidtharethepixelheightandwidthdesired.Whatisreturnedisthescaledinordertofitintothewidthandheightrequested.Thefontnamemustbeascaleablefontforthistosucceed.
examplefontID:=Font.New("Ariel:18x12:Italic")
Styleisthefontstyleinwhichthetextshouldappear.Itcanbeoneof"bold","italic"or"underline".Youcanalsohave"bold,italic"andanyothercombination.
![Page 274: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/274.jpg)
Details
IftheFont.Newcallfails,thenitreturns0.AlsoError.Lastwillreturnanon-zerovalueindicatingthereasonforthefailure.Error.LastMsgwillreturnacontainsthetextualversionoftheerror.
ItisquitepossibleforError.Lasttobeset,evenifthecallsucceeds.reportsuccessevenifunabletosuccessfullymatchtherequestedfontwiththeavailableresources.AfontwillbesetthatmatchesascloselyaspossiblerequestedfontandLast.Errorwillbesettoindicatethatsomesubstitutionswererequired.
Example
Theprogramprintsoutseveralphrasesinavarietyoffonts.
varfont1,font2,font3,font4:int
font1:=Font.New("serif:12")
font2:=Font.New("sansserif:18:bold")
font3:=Font.New("mono:9")
font4:=Font.New("Palatino:24:Bold,Italic")
assertfont1>0andfont2>0andfont3>0and
Font.Draw("Thisisinaseriffont",50,30,font1,red
Font.Draw("Thisisinasansseriffont",50,80,
Font.Draw("Thisisinamonofont",50,130,font3,colorfg
Font.Draw("ThisisinPalatino(ifavailable)",50,180,
Font.Free(font1)
Font.Free(font2)
Font.Free(font3)
Font.Free(font4)
Execute
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingFont.NewNew.
![Page 275: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/275.jpg)
Font.Sizes PartofFontmodule
SyntaxFont.Sizes(fontID:int,varheight,ascent,descent, internalLeading:int)
Description
Font.Sizesisusedtogetthemetricsofaparticularfont.Thevariouspartsofthemetricareillustratedbelow.Notethatyoucancalculatetheexternalleadingbysubtractingtheascentanddescentfromtheheight.
Details
IfFont.SizesispassedaninvalidfontID,afatalerroroccurs.Ifthefailsforother(non-fatal)reasons,themetricsforthedefaultfontwillbereturned.Aswell,Error.Lastwillreturnanon-zerovalueindicatingthereasonforthefailure.Error.LastMsgwillreturnastringwhichcontainsthetextualversionoftheerror.
Example
Theprogramgetsinformationabout24ptBoldItalicPalatino.
varfontID,height,ascent,descent,internalLeading,
varexternalLeading:int
fontID:=Font.New("Palatino:24:bold,italic")
Font.Sizes(fontID,height,ascent,descent,internalLeading
externalLeading:=heightascentdescent
put"Theheightofthefontis",height,"pixels"
put"Theascentofthefontis",ascent,"pixels"
put"Thedescentofthefontis",descent,"pixels"
put"Theinternalleadingofthefontis",internalLeading
put"Theexternalleadingofthefontis",externalLeading
Font.Free(fontID)
Execute
![Page 276: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/276.jpg)
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingFont.SizesSizes.
![Page 277: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/277.jpg)
Font.StartName PartofFontmodule
Syntax Font.StartName
Description
Font.StartNameisusedtostartthelistingofallthefontsavailableonthesystem.ThisprocedureiscalledbeforemakingcallstoFont.GetNametogetthenameofthefontsavailable.Oncethenameofafontisknown,it'spossibletolisttheavailablestyles(usingFont.GetStyle)andtheavailablesizes(usingFont.StartSizeandFont.GetSize).
Example
Theprogramlistsallthefontsavailableonthesystem.
varfontName:string
Font.StartName
loop
fontName:=Font.GetName
exitwhenfontName=""
putfontName
endloop
Execute
Example
Anotherexampleisavailablethatdisplaysfullinformationaboutthefontsincludingname,styles,andpointsizes.
![Page 278: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/278.jpg)
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingFont.StartName,notbycallingStartName.
![Page 279: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/279.jpg)
Font.StartSize PartofFontmodule
Syntax Font.StartSize(fontName,fontStyle:string)
Description
Font.StartSizeisusedtostartalistingofallthesizesforaparticularfontnameandstyle.
ThefontNameparametershouldbeanactualfontname(asopposedtothedefaultnamesof“serif”,etc).YoucangetalistofthefontnamesbyusingtheFont.StartNameFont.GetNamesubprograms.ThefontStyleparametershouldbeinthesameformataswouldappearintheFont.Newprocedure.
Example
Theprogramlistsallthefonts,stylesandsizesavailableonthesystem.
varfontName:string
varbold,italic,underline:boolean
varsize:int
varstyles:arrayboolean,boolean,booleanofstring
init("","underline","italic","italic,underline","bold",
"bold,underline","bold,italic","bold,italic,underline")
Font.StartName
loop
fontName:=Font.GetName
exitwhenfontName=""
Font.GetStyle(fontName,bold,italic,underline
forb:false..bold
fori:false..italic
foru:false..underline
putfontName:30,styles(b,i,
Font.StartSize(fontName,styles
loop
size:=Font.GetSize
exitwhensize=0
ifsize=-1thenput"scalable"..
elseputsize,""..
endif
endloop
put""
endfor
endfor
endfor
endloop
![Page 280: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/280.jpg)
Execute
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingFont.StartSizeStartSize.
![Page 281: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/281.jpg)
Font.Width PartofFontmodule
Syntax Font.Width(txtStr:string,fontID:int):int
Description
Font.Widthisusedtoobtainthewidthinpixelsthataspecifiedstringwilltaketodrawinaspecifiedfont.ThetextStrparameteristhestring.ThefontIDparameteristhefontinwhichthestringwouldbedrawn.
Details
IfFont.WidthispassedaninvalidfontID,afatalerroroccurs.IftheFont.Widthcallfailsforother(non-fatal)reasons,thewidthforstringinthedefaultfontwillbereturned.Aswell,Error.Lastwillreturnanon-zerovalueindicatingthereasonforthefailure.Error.LastMsgwillreturnastringwhichcontainsthetextualversionoftheerror.
Example
Theprogramgetsinformationabout24ptBoldPalatino.
consttestString:="TestString"
varwidth,fontID:int
fontID:=Font.New("Palatino:24:Bold")
width:=Font.Width(testString,fontID)
put"Thewidthof\""+testString+"\"is",width
Font.Draw(testString,100,100,fontID,black)
Draw.Line(100,50,100,150,brightred)
Draw.Line(100+width,50,100+width,150,brightred
Font.Free(fontID)
Execute
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingFont.WidthbycallingWidth.
![Page 282: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/282.jpg)
for statement
Syntax
AforStatementis:
for[decreasing][id]:first..last[byincrement] statementsAndDeclarations endfor
Description
Thestatementsanddeclarationsinaforstatementarerepeatedlyexecuted.Inthefirstiteration,theidentifierisassignedthevalueoffirst.Witheachadditionaliteration,theidentifierincreasesby1(orbyincrement,ifthebyclauseispresent).Theloopstopsexecutingwhenadding1(orincrement)totheidentifierwouldcausetheidentifiertoexceedlast.firstandlastmustbeintegervalues(orelseenumeratedorcharvalues).Ifyouspecifydecreasing,thentheidentifierdecreasesby1(orbyincrement)eachtimethrough.
Incrementmustbeapositiveintegervalue.Whenthebyclauseispresent,theforloopterminatesassoonastheidentifierwouldbecomegreaterthanlast,unlessdecreasingispresent.Ifdecreasingispresent,theloopterminateswhentheidentifierwouldbecomelessthanlast.
Details
Theidentifierischeckedbeforeitisaddedto(orsubtractedfrom).Thismeansthattheloop
fori:1..maxint
willnotcauseanoverflow.
Example
Output1,2,3to10.
fori:1..10
puti
endfor
Output1,3,5,7and9.
![Page 283: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/283.jpg)
Example fori:1..10by2
puti
endfor
Example
Output10,9,8,downto1.
fordecreasingj:10..1
putj
endfor
Example
Output10,6,and2.
fordecreasingj:10..1by4
putj
endfor
Example
Output1.
forj:1..10by20
putj
endfor
Example
Outputnothing.
forj:5..2
putj
endfor
Details
Theforstatementdeclaresthecountingidentifier(aseparatedeclarationshouldnotbegivenforiorj).Thescopeofthisidentifierisrestrictedtotheforstatement.
Iffirstisavaluebeyondlast,therewillbenorepetitions(andnoerrormessage).Thecountingidentifierisalwaysincreased(ordecreased)by1orincrementifthebyclauseispresent.Executinganexitstatementinsideaforstatementcausesajumptojustbeyondendfor.Youarenotallowedtochangethecountingvariable(forexample,youarenotallowedtowritei:=10).
Thecountingidentifiercanbeomitted.Inthiscase,thestatementisjustasbefore,exceptthattheprogramcannotusethevalueof
![Page 284: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/284.jpg)
theidentifier.
Ifdecreasingisnotpresent,first..lastcanbereplacedbythenameofasubrangetype,forexamplebydozen,declaredby:
typedozen:1..12
Procedures,functionsandmodulescannotbedeclaredinsideaforstatement.Justprecedingthestatementsanddeclarations,youareallowedtowritean"invariantclause"oftheform:
invarianttrueFalseExpn
Thisclauseisequivalentto:asserttrueFalseExpn.
![Page 285: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/285.jpg)
fork statement
Dirtyparts
Syntax
AforkStatementis:
forkprocessId[([expn{,expn}])] [:reference[,expn[,reference]]]
Description
Aforkactivates(startstheconcurrentexecutionof)aprocessdeclaration.Iftheprocesshasparameters,aparenthesizedlistofexpressions(expns)mustfollowtheprocess'name(processId).
Example
Thisprograminitiates(forks)twoconcurrentprocesses,oneofwhichrepeatedlyoutputsHiandtheotherHo.TheresultingoutputisanunpredictablesequenceofHi'sandHo's,asgreetingsexecutestwiceconcurrently,oneinstancewithitswordsettoHiandtheotherwithitswordsettoHo.
processgreetings(word:string)
loop
putword
endloop
endgreetings
forkgreetings("Hi")
forkgreetings("Ho")
Seeproceduredeclarationfordetailsaboutparameters.Thefirstoptionalreferenceintheforkstatementmustbeabooleanvariablereference.Theforksetsthistotrueiftheprocessisactuallyactivated.Ifthisfailstooccur(probablybecausestackspacecouldnotbeallocated),thisreferenceissettofalse.Iftheforkfailsbutthisreferenceisomitted,anexceptionoccurs.Seeexceptionhandlers.
Theoptionalexpnspecifiesthenumberofbytesfortheprocess'stack;thisoverridestheoptionallygivenstacksizeintheprocessdeclaration.Thesecondoptionalreferencemustbeavariablereferencewiththetypeaddressint.Seeaddressint.Thisvariableissettoidentifythe
![Page 286: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/286.jpg)
Details processactivation.Thisreferencehastheimplementation-dependentmeaningoflocatingtheprocess'internaldescriptor.
Inthisexplanationoftheforkstatement,wehaveuptothispointignoredthepossibilityofprocessesexportedfrommodules.Iftheprocessisbeingforkedfromoutsideofamodulefromwhichithasbeenexported,thesyntaxoftheforkstatementis:
forkmoduleId.procedureId[(expn{,expn})]…
Inotherwords,themodule'snameandadotmustprecedetheprocess'name.
![Page 287: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/287.jpg)
forward subprogramdeclaration
Syntax
AforwardDeclarationis:
forwardsubprogramHeader [importimportItem{,importItem}]
Description
Aprocedureorfunctionisdeclaredtobeforwardwhenyouwanttodefineitsheaderbutnotitsbody.Thisisthecasewhenoneprocedureorfunctioncallsanother,whichinturncallsthefirst;thissituationiscalledmutualrecursion.Theuseofforwardisnecessaryinthiscase,becauseeveryitemmustbedeclaredbeforeitcanbeused.
Example
Thisexampleprogramevaluatesaninputexpressioneoftheformt}wheretisoftheformp{*p}andpisoftheform(e)oranexplicitrealexpression.Forexample,thevalueof1.5+3.0*(0.5+1.5)haltis7.5.
vartoken:string
forwardprocedureexpn(vareValue:real)
forwardprocedureterm(vartValue:real)
forwardprocedureprimary(varpValue:real)
bodyprocedureexpn
varnextValue:real
term(eValue)%Evaluatet
loop%Evaluate{+t}
exitwhentokennot="+"
gettoken
term(nextValue)
eValue:=eValue+nextValue
endloop
endexpn
bodyprocedureterm
varnextValue:real
primary(tValue)%Evaluatep
loop%Evaluate{*p}
exitwhentokennot="*"
gettoken
![Page 288: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/288.jpg)
primary(nextValue)
tValue:=tValue*nextValue
endloop
endterm
bodyprocedureprimary
iftoken="("then
gettoken
expn(pValue)%Evaluate(e)
asserttoken=")"
else%Evaluate"explicitreal
pValue:=strreal(token)
endif
gettoken
endprimary
gettoken%Startbyreadingfirsttoken
varanswer:real
expn(answer)%Scanandevaluateinputexpression
put"Answeris",answer
Execute
Details
Followingaforwardprocedureorfunctiondeclaration,thebodyoftheproceduremustbegivenatthesamelevel(inthesamesequenceofstatementsanddeclarationsastheforwarddeclaration).Thisistheonlyuseofthekeywordbody.Seealsobody.
Anyprocedureorfunctionthatisdeclaredusingforwardrequiresanimportlist.Inthislist,importedproceduresorfunctionsthathavenotyetappearedmustbelistedasforward.Forexample,theimportlistforexpnisimportforwardterm…Beforeaprocedureorfunctioncanbecalled,beforeitsbodyappears,andbeforeitcanbepassedasaparameter,itsheaderaswellasheadersofproceduresorfunctionsimporteddirectlyorindirectlybyitmusthaveappeared.
Thekeywordforwardisalsousedincollectionandtypedeclarations.
![Page 289: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/289.jpg)
Seealso collectionandtypedeclarations.
![Page 290: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/290.jpg)
frealstr real-to-stringfunction
Syntax frealstr(r:real,width,fractionWidth:int):string
Description
Thefrealstrfunctionisusedtoconvertarealnumbertoastring.Forexample,frealstr(2.5e1,5,1)="b25.0"wherebrepresentsablank.Thestringisanapproximationtor,paddedontheleftwithblanksasnecessarytoalengthofwidth.
ThenumberofdigitsofthefractiontobedisplayedisgivenbyfractionWidth.
Thewidthmustbenon-negative.Ifthewidthparameterisnotlargeenoughtorepresentthevalueofr,itisimplicitlyincreasedasneeded.
ThefractionWidthmustbenon-negative.Thedisplayedvalueisroundedtothenearestdecimalequivalentwiththisaccuracy.Inthecaseofatie,thevalueisroundedtothenextlargervalue.Theresultstringisoftheform:
{blank}[-]{digit}.{digit}
Iftheleftmostdigitiszero,thenitistheonlydigittotheleftofthedecimalpoint.
Thefrealstrfunctionapproximatestheinverseofstrreal,althoughround-offerrorskeepthesefrombeingexactinverses.
Seealso theerealstr,realstr,strreal,intstrandstrintfunctions.
![Page 291: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/291.jpg)
free statement
Syntax
AfreeStatementis:
free[collectionOrClassId,]pointerVariableReference
DescriptionAfreestatementdestroys(deallocates)anelementthathasbeenallocatedbyanewstatement.
Example
Usingacollection,declarealistofrecordsandallocateoneoftheserecords.Thendeallocatetherecord.
varlist:collectionof
record
contents:string(10)
next:pointertolist
%Shortform:next:^list
endrecord
varfirst:pointertolist%Shortform:varnext:^list
newlist,first
%Allocateanelementoflist;placeitslocationinfirst
%Shortform:newfirst
…
freelist,first%Deallocatetheelementoflistlocatedbyfirst
%Shortform:freefirst
Details
Thefreestatementsetsthepointervariabletothenilvalue.Seetheforexamplesofallocatingelementsofclassesandvaluesoftypes.Itthepointerlocatesatype,thecollectionOrClassIdinthefreestatementmustbeomitted.
Animportedclasscanhaveoneofitsobjectsdestroyed(bythefreeonlyiftheclassisimportedvar.
ThecollectionOrClassIdisoptionalinthefreestatement.
Seealsoclassandcollectiondeclarations,thepointertype,thenewstatementvalue.
![Page 292: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/292.jpg)
function declaration
Syntax
AfunctionDeclarationis:
functionid[([paramDeclaration{,paramDeclaration}])]
:typeSpec statementsAndDeclarations endid
Description
Afunctiondeclarationcreates(butdoesnotrun)anewfunction.Thenameofthefunction(id)isgivenintwoplaces,justafterfunctionandjustafterend.
Example
functiondoubleIt(x:real):real
result2.0*x
enddoubleIt
putdoubleIt(5.3)%Thisoutputs10.6
Thesetofparametersdeclaredwiththefunctionarecalledformalparameters.Forexample,inthedoubleItfunction,xisaformalparameter.Afunctioniscalled(invoked)byafunctioncallwhichconsistsofthefunction'snamefollowedbytheparenthesizedlistofactualparameters(ifany).Forexample,doubleIt(5.3)isacallhaving5.3asanactualparameter.Iftherearenoparametersandnoparentheses,thecalldoesnothaveparentheses.Thekeywordfunctioncanbeabbreviatedtofcn.SeealsofunctionCallandprocedureDeclaration.
Eachactualnon-varparametermustbeassignabletothetypeofitscorrespondingformalparameter.Seealsoassignability.
Afunctionmustfinishbyexecutingaresultstatement,whichproducesthefunction'svalue.Intheaboveexample,theresultstatementcomputesandreturnsthevalue2.0*x.
![Page 293: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/293.jpg)
Details
Inprinciple,afunction(1)shouldnotchangeanyvariablesoutsideofitself(globalvariables)or(2)shouldnothavevarparameters.Inotherwords,itshouldhavenosideeffects.Theoriginalimplementationprevented(1)and(2)andtherebypreventedfunctionsideeffects.CurrentimplementationsofTuringdonotenforcethisrestriction.
Theupperboundsofarraysandstringsthatareparametersmaybedeclaredtobeanasterisk(*),meaningtheboundisthatoftheactualparameter.SeeparamDeclarationfordetailsaboutparameters.
Proceduresandfunctionscannotbedeclaredinsideotherproceduresandfunctions.
ThesyntaxofafunctionDeclarationpresentedabovehasbeensimplifiedbyleavingouttheoptionalresultidentifier,importlist,precondition,initclause,postconditionandexceptionhandler.Thefullsyntaxis
function[pervasive]id
[([paramDeclaration{,paramDeclaration}])]
[resultId]:typeSpec
[pretrueFalseExpn]
[initid:=expn{,id:=expn}]
[posttrueFalseExpn]
[exceptionHandler]
statementsAndDeclarations
endid
TheresultIdisthenameoftheresultofthefunctionandcanbeusedonlyinthepostcondition.
Afunctionmustbedeclaredbeforebeingcalled;toallowformutuallyrecursiveproceduresandfunctions,thereareforwarddeclarationswithlaterdeclarationoftheprocedureorfunctionbody.Seeforwardandbodydeclarationsforexplanations.
Youdeclareparameterlessfunctionsusinganemptyparameterlist.Whenthisisdone,acalltothefunctionmustincludeanemptyparameterlist.
![Page 294: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/294.jpg)
Seealso
importlist,precondition,initclause,postconditionandexceptionHandlerforexplanationsoftheseadditionalfeatures.
Seealsopervasive.
![Page 295: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/295.jpg)
functionCall
Syntax
AfunctionCallis:
functionId[([expn{,expn}])]
Description
Afunctioncallisanexpressionthatcalls(invokesoractivates)afunction.Ifthefunctionhasparameters,aparenthesizedlistofexpressions(expns)mustfollowthefunction'sname(functionId).
Example
Thisfunctiontakesastringcontainingablankandreturnsthefirstwordinthestring(allthecharactersuptothefirstblank).
functionfirstWord(str:string):string
fori:1..length(str)
ifstr(i)=""then
resultstr(1..i-1)
endif
endfor
endfirstWord
put"Thefirstwordis:",firstWord("HenryHudson")
%TheoutputisHenry.
Details
Theparameterdeclaredintheheaderofafunction,isaformalparameter,forexample,straboveisaformalparameter.Eachexpressioninthecallisanactualparameter,forexample,sampleaboveisanactualparameter.
Eachactualparameterpassedtoitsnon-varformalparametermustbeassignabletothatparameter(seeassignabilityfordetails).SeealsofunctionDeclarationandprocedureDeclaration.
InthisexplanationoffunctionCall,wehaveuptothispointignoredthepossibilityoffunctionsexportedfrommodules.Ifthefunctionisbeingcalledfromoutsideofamodulefromwhichithasbeenexported,thesyntaxofthefunctionCallis:
moduleId.functionId[(expn{,expn})]
Inotherwords,themoduleormonitornameandadotmustprecede
![Page 296: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/296.jpg)
thefunction'sname.Ifthefunctionisbeingcalledfromoutsideofaclassfromwhichithasbeenexported,thesyntaxofthefunctionCallisoneof:
(a)classId(p).functionId[([expn{,expn
(b)p->functionId[([expn{,expn}])]
Inthesepmustbeapointervaluethatlocatesanobjectintheclass.Form(b)isashortformforform(a).
Seealso class.
![Page 297: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/297.jpg)
get filestatement
Syntax
AgetStatementis:
get[:streamNumber,]getItem{,getItem}
Description
ThegetstatementinputseachofthegetItems.Ordinarily,theoutputcomesfromthekeyboard.However,ifthestreamNumberispresent,theinputcomesfromthefilespecifiedbythestreamnumber(seetheopenstatementfordetails).Also,inputcanberedirectedsoitistakenfromafileratherthanthekeyboard.Checkthedocumentationontheenvironmentforinstructionsondoingso.
ThesyntaxofagetItemisoneof:
(a)variableReference
(b)skip
(c)variableReference:*
(d)variableReference:widthExpn
Theseitemsareusedtosupportthreekindsofinput:
(1)tokenandcharacterorientedinput:supportedbyforms(a)and(b),
(2)lineorientedinput:supportedbyform(c),and
(3)characterorientedinput:supportedbyform(d).
Examplesofthesewillbegiven,followedbydetailedexplanations.
Example
Token-orientedinput.
varname,title:string
varweight:real
getname%IfinputisAlice,itisinput
gettitle%Ifinputis"Alady",Aladyisinput
varweight%Ifinputis9.62,itisinputintoweight
Example
Line-orientedinput.
varquery:string
![Page 298: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/298.jpg)
getquery:*%Entirelineisinputintoquery
Example
Character-orientedinput.
varcode:string
getcode:2%Next2charactersareinputintocode.
Details
Atokenisasequenceofcharacterssurroundedbywhitespace,wherewhitespaceisdefinedasthecharacters:blank,tab,formfeed,newline,andcarriagereturnaswellasend-of-file.Thesequenceofcharactersmakingupthetokenareeitherallnon-whitespaceorelsethetokenmustbeaquotedstring(anexplicitstringconstant).WhenthevariableReferenceinform(a)isastring,integer,real,intn,natn,orrealn.Turingskipswhitespace,readsatokenintothevariableReference,andthenskipswhitespace(stoppingatthebeginningofthenextline).
IfthevariableReferenceisastring,thetokenisassignedtothevariable(ifthetokenisquoted,thequotationmarksarefirstremoved).Seetheexamplesinvolvingnameandtitleabove.IfthevariableReferenceisanintegerorareal,thetokenisconvertedtobenumericbeforebeingassignedtothevariable.Seetheexampleinvolvingweightabove.
Whentheinputiscomingfromthekeyboard,noinputisdoneuntilReturnistyped.Thelinethatisinputmaycontainmorethanonetoken.Anytokensthatarenotinputbyonegetstatementwillremaintobeinputbythenextgetstatement.
Turinghasbeenmodifiedsothattoken-orientedinputnowalsoskipswhitespacefollowingthetoken,butdoesnotskipbeyondthebeginningofthenextline.Thischangeimpliesthatform(b)isusuallynotneeded,asskipwasusedtoskipwhitespaceafterthetoken.
Form(a)supportscharandchar(n).Ifthetypeischar,exactlyonecharacterisread,withnoskippingofwhitespacebeforeorafter.Thischaractermaybe,forexample,ablankoracarriagereturn.Ifthetypeischar(n),exactlyncharactersareread,withnoskippingofwhitespace.
Inputtingcharandchar(n)typesusingform(a).Thestatementgetc:1
![Page 299: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/299.jpg)
Example
isnotlegal,becauselengthspecificationisnotallowedwithcharactervariables.
varc:char
vard:char(3)
getc%Readonecharacter.
getd%Readthreecharacters
Details
Form(a)supportsenumeratedtypes.Ifthetypeisanenumeratedtype,thenthetokenreadinmustbeoneoftheelementsoftheenumeratedtype.
Example
Inputtinganenumeratedtypeusingform(a).Thestatementgetc:1notlegal,becauselengthspecificationisnotallowedwithenumeratedvariables.
typecolors:enum(red,blue,green)
varc:colors
getc%Readoneofred,greenorblue
DetailsForm(a)supportsboolean.Ifthetypeisanbooleantype,thenthetokenreadinmustbeoneof"true"or"false"
Example
Inputtingabooleantypeusingform(a).Thestatementgetc:1isnotlegal,becauselengthspecificationisnotallowedwithbooleanvariable.
vartf:boolean
gettf%Readoneoftrueorfalse
Details
Inform(b)ofgetItem,skipcauseswhitespaceintheinputtobeskippeduntilnon-whitespace(atoken)ortheend-of-fileisreached.Thisisusedwhentheprogramneedstodetermineiftherearemoretokenstobeinput.Todetermineiftherearemoretokenstoberead,theprogramshouldfirstskipoveranypossiblewhitespace(suchasafinalnewlinecharacter)andthentesttoseeifeof(end-of-file)istrue.Thisisillustratedinthisexample:
Usingtoken-orientedinput,inputandthenoutputalltokens.Thisexamplegiveswhatusedtobethestandardwayofreadingtokensuptoendoffile.Withthenewmeaningofform(a)forreadingtokens,the
![Page 300: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/300.jpg)
Example
getskiplinecanbeomitted.Thisomissionispossiblebecausethelinegetwordnowautomaticallyskipswhitespacefollowingtheinputvalue,uptothebeginningofthenextline.
varword:string
loop
getskip%Skipoveranywhitespace
exitwheneof%Aretheremorecharacters?
getword%Inputnexttoken
putword%Outputthetoken
endloop
Intheaboveandthenextexample,iftheinputhasbeenredirectedsothatitisfromafile,eofbecomestrueexactlywhentherearenomorecharacterstoberead.Iftheinputiscomingfromthekeyboard,youcansignaleofbytypingcontrol-Z(onaPC)orcontrol-D(onUNIX).
Details
Inform(c)ofgetItem,thevariableReferenceisfollowedby:*whichimpliesline-orientedinput.Thisformcausestheentireline(ortheremainderofthecurrentline)toberead.Inthiscasethevariablemustbeastring(notanintegerorreal).Thenewlinecharacterattheendofthelineisdiscarded.Itisanerrortotrytoreadanotherlinewhenyouarealreadyattheendofthefile.Thefollowingexampleshowshowtouseline-orientedinputtoreadalllinesintheinput.
Example
Usingline-orientedinput,inputandthenoutputalllines.
varline:string
loop
exitwheneof%Aretheremorecharacters?
getline:*%Readentireline
putline
endloop
Details
Inform(d)ofgetItem,thevariableReferenceisfollowedby
:widthExpn
whichspecifiescharacter-orientedinput.Thisformcausesthespecifiednumber(widthExpn)ofcharacterstobeinput(oralloftheremainingcharactersifnotenoughareleft).Ifnocharactersremain,thenullstringisreadandnowarningisgiven.Inthisform,thenewlinecharacterisactuallyinputintothevariableReference(thisdiffersfrom
![Page 301: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/301.jpg)
line-orientedinputwhichdiscardsnewlinecharacters).Thefollowingexampleshowshowtousecharacter-orientedinputtoreadeachcharacteroftheinput.Form(d)canbeusedwithstringandchar(nvariables,butnotwithchar,intoranyothertype.
Example
Usingcharacter-orientedinput,inputandthenoutputallcharacters.
varch:string(1)
loop
exitwheneof%Aretheremorecharacters?
getch:1%Readonecharacter
putch..%Outputthecharacter,which
%maybeanewlinecharacter
endloop
Example
Usingcharacter-orientedinput,inputtwocharacters.
vard:char(3):='abc'
getd:2%Readtwocharacter(replace'ab')
Seealso readstatement,whichprovidesbinaryfileinput.
![Page 302: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/302.jpg)
getch getcharacterprocedure
Syntax getch(varch:string(1))
Description
Thegetchprocedureisusedtoinputasinglecharacterwithoutwaitingfortheendofaline.Theparameterchissettothenextcharacterinthekeyboardbuffer(theoldestnot-yet-readcharacter).
Example
ThisprogramcontainsaprocedurecalledgetKeywhichcausestheprogramtowaituntilakeyispressed.
setscreen("graphics")
proceduregetKey
varch:string(1)
getch(ch)
endgetKey
fori:1..1000
puti:4,"Pausetillakeyispressed"
getKey
endfor
Details
Thescreenshouldbeina"screen"or"graphics"mode.Seethesetscreenprocedurefordetails.Ifthescreenisnotinoneofthesemodes,itwillautomaticallybesetto"screen"mode.
OnIBMPC'ssomekeys,suchastheleftarrowkey,insertkey,deletekey,andfunctionkeysdonotproduceordinarycharactervalues.Thesekeystrokesarereturnedbygetchastheir"scancode"with128addedtothem,unlessthescancodealreadyhasavalueof128orgreater.Thisprovidesauniquevalueforeverykeyonthekeyboard.SeeAppendixDforthesecodes.
Seealso
hasch(hascharacter)whichisusedtoseeifacharacterhasbeentypedbutnotyetread.
SeealsopredefinedunitInput.
![Page 303: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/303.jpg)
getchar getcharacterfunction
Syntax getchar:char
Description
Thegetcharfunctionisusedtoinputasinglecharacterwithoutwaitingfortheendofaline.Thenextcharacterinthekeyboardbuffer(theoldestnot-yet-readcharacter)isreturned.
Example
ThisprogramcontainsaprocedurecalledgetKeywhichcausestheprogramtowaituntilakeyispressed.
setscreen("graphics")
proceduregetKey
varch:char
ch:=getchar
endgetKey
fori:1..1000
puti:4,"Pausetillakeyispressed"
getKey
endfor
Details
Thescreenshouldbeina"screen"or"graphics"mode.Seethesetscreenprocedurefordetails.Ifthescreenisnotinoneofthesemodes,itwillautomaticallybesetto"screen"mode.
OnIBMPC'ssomekeys,suchastheleftarrowkey,insertkey,deletekey,andfunctionkeysdonotproduceordinarycharactervalues.Thesekeystrokesarereturnedbygetcharastheir"scancode"with128addedtoit,unlessthescancodealreadyhasavalueof128orgreater.Thisprovidesauniquevalueforeverykeyonthekeyboard.SeeAppendixDforthesecodes.
Seealso
hasch(hascharacter)whichisusedtoseeifacharacterhasbeentypedbutnotyetread.
SeealsopredefinedunitInput.
![Page 304: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/304.jpg)
getenv getenvironmentfunction
Syntax getenv(symbol:string):string
Description
Thegetenvfunctionisusedtoaccesstheenvironmentstringwhosenameissymbol.Thesestringsaredeterminedbytheshell(commandprocessor)ortheprogramthatcausedyourprogramtorun.Seealsothenargsandfetchargfunctions.
Example
OnaPC,thisretrievestheenvironmentvariableUSERLEVELandprintsextrainstructionsifUSERLEVELhadbeensettoNOVICE.USERLEVELcanbesettoNOVICEwiththecommandSETUSERLEVEL=NOVICEintheautoexec.batfileorinanybatchfile.
constuserLevel:string
userLevel:=getenv("USERLEVEL")
ifuserLevel="NOVICE"then
…%putasetofinstructions
endif
Seealso SeealsopredefinedunitSys.
![Page 305: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/305.jpg)
getpid getprocessidfunction
Syntax getpid:int
Description
ThegetpidfunctionisusedtodeterminetheI.D.(number)thatidentifiesthecurrentoperatingsystemtask(process).Bewarethatthereareprocesses,activatedbytheforkstatement,thatareindependentoftheoperatingsystemstasks.
UnderUNIX,thenumberisused,forexample,forcreatingauniquenameofafile.
Seealsonargs,fetchargandgetenv.
SeealsopredefinedunitSys.
![Page 306: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/306.jpg)
getpriority function
Syntax getpriority:nat
Description
Thegetpriorityfunctionreturnsthepriorityofanexecutingprocessinaconcurrentprogram.Asmallervaluemeansafasterspeed.
Seealsosetpriority,forkandmonitor.
SeealsopredefinedunitConcurrency.
![Page 307: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/307.jpg)
GUI
Description
ThisunitcontainsthepredefinedsubprogramsforcreatingandusingaGUI(GraphicalUserInterface).ElementsoftheGUIincludebuttons,checkboxes,textboxes,scrollbars,menus,etc.
ForageneralintroductiontothetheGUImodule,seeIntroductiontoGraphicalUserInterfaces.
![Page 308: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/308.jpg)
GUI.AddLine PartofGUImodule
Syntax GUI.AddLine(widgetID:int,text:string)
Description
GUI.AddLineaddstextandanewlinetothecurrentlineofthetextboxspecifiedbywidgetID.Itisessentiallyequivalenttoputtextinthetextbox.GUI.AddLinescrollsthetextbox(ifnecessary)sothattheaddedtextisnowvisible.ThewidgetIDparametermustbethewidgetidofatextbox.Thetextparameteristhetexttobeaddedtothetextbox.
Example
Thefollowingcreatesatextboxandputsthenumbersfrom1to25init.
importGUI
varboxID:int:=GUI.CreateTextBox(50,50,200,200)
fori:1..25
GUI.AddLine(boxID,intstr(i))
endfor
loop
exitwhenGUI.ProcessEvent
endloop
Execute
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.AddLine,notbycallingAddLine.
Seealso GUI.CreateTextBox.
![Page 309: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/309.jpg)
GUI.AddText PartofGUImodule
Syntax GUI.AddText(widgetID:int,text:string)
Description
GUI.AddTextaddstexttothecurrentlineofthetextboxspecifiedbywidgetID.Itdoesnotaddanewlineafterthetext.Itisessentiallyequivalenttoputtext...inthetextbox.GUI.AddLinescrollsthetextbox(ifnecessary)sothattheaddedtextisnowvisible.ThewidgetIDparametermustbethewidgetidofatextbox.Thetextparameteristhetexttobeaddedtothetextbox.
Details
Toforceatextboxtoscrolltotheendofthetextwithoutaddinganyextratext,callGUI.AddTextwith""(thenullstring)forthetextparameter.
Example
Thefollowingcreatesatextboxandputsthenumbersfrom1to26followedbytheappropriateletterofthealphabetinit.
importGUI
varboxID:int:=GUI.CreateTextBox(50,50,200,200)
fori:1..26
GUI.AddText(boxID,intstr(i))
GUI.AddText(boxID,"")
GUI.AddLine(boxID,chr(64+i))
endfor
loop
exitwhenGUI.ProcessEvent
endloop
Execute
Exportedqualified.
![Page 310: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/310.jpg)
Status ThismeansthatyoucanonlycallthefunctionbycallingGUI.AddText,notbycallingAddText.
Seealso GUI.CreateTextBox.
![Page 311: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/311.jpg)
GUI.Alert[2,3,Full] PartofGUImodule
Syntax
Oneoffourprocedures:
GUI.Alert(title,msg:string) GUI.Alert2(title,msg1,msg2:string) GUI.Alert3(title,msg1,msg2,msg3:string) GUI.AlertFull(title:string, msg:array1..*ofstring,button:string)
Description
Displaysadialogboxwiththestringspecifiedbymsginit.ThereisasinglebuttonlabelledOKwhichdismissesthedialogandresumesexecution.ThetitleparameterspecifiesthewindowtitleunderMicrosoftWindows.OntheAppleMacintosh,thereisnotitle,sodonotassumetheuserwillseethetitle.Thedialogboxiscenteredonthescreen.
TheGUI.Alert2andGUI.Alert3proceduresallowtheusertospecifyatwoorthreelinemessagerespectively.TheGUI.AlertFullprocedureallowstheusertospecifyanynumberoflinesoftextinthestringarrayspecifiedbymsgaswellasthetextinthedismissalbutton.Anyemptystringsattheendofthearrayarenotdisplayed.
Note:ThisfunctionisnotavailableinthecurrentversionoftheGUIProcedureLibrary(shippingwithTuring4.0andMacOOT1.5).ItisdocumentedhereforusewithfutureshippingversionofTuring.ItislikelytobeimplementedintheversionofTuringreleasedinSeptember2002.Checkthereleasenotesthatarefoundintheon-linehelptofindoutifthisfunctionisnowavailable.
Thefollowingprogramaskstheuserforthenameofafileputsupanalertdialogboxifitfails.
importGUIin"%oot/lib/GUI"
![Page 312: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/312.jpg)
Example
varfileName:string
varstreamNumber:int
loop
fileName:=GUI.SaveFile("SaveAs")
open:streamNumber,fileName,put
exitwhenstreamNumber>0
GUI.Alert("OpenFailure","\""+fileName+
"\"couldnotbeopened")
endloop
Example
Thefollowingprogramaskstheuserforthenameofafileputsupamorecompletealertdialogboxifitfails.
importGUIin"%oot/lib/GUI"
varfileName:string
varstreamNumber:int
loop
fileName:=GUI.SaveFile("SaveAs")
open:streamNumber,fileName,put
exitwhenstreamNumber>0
GUI.Alert2("OpenFailure",
"\""+fileName+"\"couldnotbeopened.",
"Reason:"+Error.LastMsg)
endloop
Example
Thefollowingprogramfragmentdisplaysanalertwithfourlinesoftextandabuttonthatsays"Abort".
varmessage:array1..10ofstring
fori:1..10
message(i):=""
endfor
…
message(1):="Theprogrammustnowquit"
message(2):="becasueofanunrecoverableerror."
message(3):="AReadErroroccurredwhilereading"
message(4):="file\""+fileName+"\"."
message(5):=Error.LastMsg
GUI.AlertFull("Error",message,"Abort")
Status
Exportedqualified.
Thismeansthatyoucanonlycallthefunctionbycalling
![Page 313: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/313.jpg)
GUI.Alert,notbycallingAlert.
![Page 314: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/314.jpg)
GUI.Choose[Full] PartofGUImodule
Syntax
Oneoftwoprocedures:
GUI.Choose(title,msg1,msg2,msg3:string, btn1,btn2,btn3:string):int GUI.ChooseFull(title:string, msg:array1..*ofstring, btn1,btn2,btn3:string, defaultBtn:int):int
Description
Displaysadialogboxwithtextandfromonetothreebuttons.Theuserselectsabuttontodismissthedialog.Thenumberofthebuttonpressedisreturnedbythefunction.Thedialogboxiscenteredonthescreen.
Thetitleparameterspecifiesthetitleinthewindowbarofthedialogbox.TheAppleMacintoshdoesnothaveatitlebar,sodonotassumethattheuserwillseethestringinthetitleparameter.Themessageisspecifiedbystringsinandmsg3forGUI.ChooseandthestringarraymessageforGUI.ChooseFulleachcase,emptystringsattheendofthelistofstringsareignored.Theandbtn3parametersspecifythetexttoappearinthebuttons.Ifthetextisanemptystring(""),thebuttonisnotdisplayed.
Thefunctionreturnsthebuttonnumberfromonetothreethatwaschosen.
ThedefaultBtnparameterinGUI.ChooseFullspecifieswhich,ifany,buttonshouldbethedefaultbutton.ThedefaultbuttonisselectediftheuserpressesEnter.Ifthedefaultbuttonis0,thennobuttonishighlightedasthedefaultbutton.
Note:ThisfunctionisnotavailableinthecurrentversionoftheGUIProcedureLibrary(shippingwithTuring4.0andMacOOT1.5).ItisdocumentedhereforusewithfutureshippingversionofTuring.ItislikelytobeimplementedintheversionofTuring.Checkthereleasenotesthatarefoundintheon-linehelptofindoutifthisfunctionisnowavailable.
ThefollowingprogramasksiftheuserwantscoffeeorteaandsetwantsCoffee
![Page 315: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/315.jpg)
Example
appropriately.
importGUIin"%oot/lib/GUI"
varwantsCoffee:boolean
varchoice:int:=GUI.Choose("BeverageChoice",
"Doyouwantcoffeeortea?","","","Coffee","Tea","")
ifchoice=1then
wantsCoffee:=true
else
wantsCoffee:=false
endif
Example
Thefollowingprogramaskstheuserwhethertheywanttosavetheirwork,don'tsavetheirworkorCancel.
importGUIin"%oot/lib/GUI"
%Returnsfalseifcancellingoperation
procedureCheckUnsavedWork:boolean
varmessage:array1..3ofstring
message(1):="Changesto"+fileName+"havenotbeen"
message(2):="saved.Unsavedworkwillbelost.Doyou"
message(3):="wanttosavebeforequitting."
varchoice:int:=GUI.ChooseFull("SaveBeforeQuit",
message,"Save","Don'tSave","Cancel",1)
ifchoice=1then
SaveWork
elsifchoice=3then
returnfalse
endif
returntrue
endCheckUnsavedWork
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.ChoosecallingChoose.
![Page 316: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/316.jpg)
GUI.ClearText PartofGUImodule
Syntax GUI.ClearText(widgetID:int)
DescriptionClearsallthetextinatextboxspecifiedbywidgetID.ThewidgetIDmustbethewidgetidofatextbox.
Example
Theprogramlists25numbersinatextbox.Everytimethebuttonispressed,itclearsthetextboxandprintsthenext25numbers.
importGUI
varboxID,buttonID,start:int
start:=1
procedurePrintTwentyFive
GUI.ClearText(boxID)
fori:start..start+24
GUI.AddLine(boxID,intstr(i))
endfor
start+=25
endPrintTwentyFive
boxID:=GUI.CreateTextBox(50,50,200,200)
buttonID:=GUI.CreateButton(50,5,0,"Next25",
PrintTwentyFive
loop
exitwhenGUI.ProcessEvent
endloop
Execute
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.ClearTextbycallingClearText.
![Page 317: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/317.jpg)
Seealso GUI.CreateTextBox.
![Page 318: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/318.jpg)
GUI.CloseWindow PartofGUImodule
Syntax GUI.CloseWindow(window:int)
Description
Closesawindowwithwidgetsinit.ThisprocedureautomaticallydisposesofanywidgetsinthewindowandmakescertainthattheGUILibraryrecognizesthatthewindownolongerexists.ThisprocedurewillcallWindow.Close,sothereisnoneedfortheusertodoso.
Example
Theprogramopensupawindowwithtwobuttons.Ifthebuttonlabelled"CloseandOpen"ispressed,thewindowisclosedandanewwindowwithtwobuttonsisopenedinarandomlocationonthescreen.
importGUI
constscreenWidth:int:=Config.Display(cdScreenWidth
constscreenHeight:int:=Config.Display(cdScreenHeight
consttitleBarHeight:int:=32
constwindowEdgeSize:int:=13
constwindowWidth:int:=150
constwindowHeight:int:=100
varwindowID,windowNumber,closeButton,quitButton
procedureCloseAndOpen
ifwindowIDnot=0then
GUI.CloseWindow(windowID)
endif
windowNumber+=1
varxPos:int:=Rand.Int(0,screenWidth-
windowEdgeSize)
varyPos:int:=Rand.Int(0,screenHeight-
titleBarHeight)
windowID:=Window.Open("title:Window#"+
intstr(windowNumber)+",graphics:"+
intstr(windowWidth)+";"+intstr(windowHeight
",position:"+intstr(xPos)+";"+intstr
closeButton:=GUI.CreateButton(10,60,130,
"CloseAndOpen",CloseAndOpen)
quitButton:=GUI.CreateButton(10,10,130,"Quit",
endCloseAndOpen
CloseAndOpen
loop
exitwhenGUI.ProcessEvent
endloop
![Page 319: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/319.jpg)
GUI.CloseWindow(windowID)
Execute
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.CloseWindow,notbycallingCloseWindow.
SeealsoGUI.ShowWindowandGUI.HideWindow,forshowingandhidingwindowswithwidgetsinthem.
![Page 320: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/320.jpg)
GUI.CreateButton[Full] PartofGUImodule
Syntax
GUI.CreateButton(x,y,width:int,text:string,actionProc:procedurex()):int
GUI.CreateButtonFull(x,y,width:int,text:string,actionProc:procedurex(),height:int,shortcut:char,defaultint
Description
Createsabuttonandreturnsthebutton'swidgetID.
Thebuttonwidgetisusedtoimplementatextualbutton.Whenyoubutton,thebutton'sactionprocedureiscalled.Ifabuttonisgivenashortcut,thenenteringthekeystrokewillcausetheactionproceduretobecalled.Itwillnotvisiblycausethebuttontodepress.
TwoButtons
Thexandyparametersspecifythelower-leftcornerofthebutton.Theparameterspecifiesthewidthofthebutton.Ifwidthislessthanthesizenecessarytodisplaythebutton,thebuttonisautomaticallyenlargedtofitthetext.Thetextparameterspecifiesthetexttoappearinthebutton.Theparameteristhenameofaprocedurethatiscalledwhenthebuttonispressed.
ForGUI.CreateButtonFull,theheightparameterspecifiestheheightofthebutton.Ifheightislessthanthesizenecessarytodisplaythebutton,thebuttonisautomaticallyenlargedtofitthetext.Theshortcutparameteristhekeystroketobeusedasthebutton'sshortcut.Thedefaultparameterisabooleanindicating
![Page 321: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/321.jpg)
whetherthebuttonshouldbethedefaultbutton.Ifthereisalreadyadefaultbutton,anddefaultissettotrue,thenthisbuttonbecomesthenewdefaultbutton.
Example
Thefollowingprogramcreatestwobuttons,onewhichdrawsarandomthescreenandonewhichquitstheprogram.
importGUI
procedureDrawRandomCircle
varr:int:=Rand.Int(20,50)
varx:int:=Rand.Int(r,maxx-r)
vary:int:=Rand.Int(r,maxy-r)
varc:int:=Rand.Int(0,maxcolor)
Draw.FillOval(x,y,r,r,c)
%Incasewedrewoverthebuttons,redrawthem.
GUI.Refresh
endDrawRandomCircle
View.Set("graphics:300;200,nobuttonbar")
vardraw:int:=GUI.CreateButtonFull(50,10,0,"DrawCircle",
DrawRandomCircle,0,'^D',true)
varquitBtn:int:=GUI.CreateButton(200,10,0,"Quit",
loop
exitwhenGUI.ProcessEvent
endloop
Execute
Details
WhenGUI.CreateButtonorGUI.CreateButtonFulliscalled,thenewlycreatedbuttonwillbedisplayedimmediatelyunlessGUI.DisplayWhenCreatedhasbeencalledwiththedisplayparametersettofalse.
Ifabutton'swidthorheightissettozero(ornotspecifiedatall),thenthebuttonisshapedtofitthetext.
Abuttoncanbethedefaultbuttonforawindow.Thedefaultbuttonwithathickerborderaroundit.IftheuserpressesENTERinawindowwithadefaultbutton,thedefaultbutton'sactionprocedureiscalled.
![Page 322: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/322.jpg)
Whenabuttonisnotenabled,thetextinthebuttonisgrayedoutandthebuttonnolongerrespondstoanymouseclicksorkeystrokesuntilthebuttonisenabledagain.
Details
ThefollowingGUIsubprogramscanbecalledwithabuttonastheparameter:
GUI.Show,GUI.Hide,GUI.Enable,GUI.Disable,GUI.DisposeGUI.GetX,GUI.GetY,GUI.GetWidth,GUI.GetHeight,GUI.SetPosition,GUI.SetSize,GUI.SetPositionAndSize,GUI.SetLabel,GUI.SetDefault
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.CreateButtonnotbycallingCreateButton.
SeealsoGUI.SetLabelforchangingthebutton'stext,GUI.SetDefaultforsettingdefaultbuttoninawindowandGUI.SetColorforsettingthebutton'scolor.
![Page 323: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/323.jpg)
GUI.CreateCanvas[Full] PartofGUImodule
Syntax
GUI.CreateCanvas(x,y,width,height:int):int
GUI.CreateCanvasFull(x,y,width,height:int,border:int,mouseDown:procedurex(mx,my:int),mouseDrag:procedurex(mx,my:int),mouseUp:procedurex(mx,my:int)):int
Description
Createsacanvasandreturnsthecanvas'widgetID.
Acanvasisadrawingsurfaceforusebytheprogram.Itdiffersfromjustusingthewindowsurfacetodrawoninthat(0,0)representsthelower-leftcornerofthecanvasandalldrawingisclippedtothecanvas.(Thismeansthatifyouaccidentlyattempttodrawoutsideofthecanvas,itwillnotactuallydrawbeyondtheborderofthecanvas.)
CanvaseshaveproceduresthatemulatealltheproceduresintheDrawmoduleaswellasaproceduretoemulateFont.Draw,Pic.Draw,Pic.New,Pic.ScreenLoadandPic.ScreenSave.
Youcangetmousefeedbackfromacanvas.UsingtheCreateCanvasFullmethod,youcanspecifythreeroutinesthatarecalledwhenthemousebuttonisdepressedwhilepointinginacanvas.Oneroutinewillbecalledwhentheuserpressesthemousebuttondowninacanvas.Anotherroutinewillbecalledwhiletheuserdragsthemousewiththemousebuttondown.Thisroutineisrepeatedlycalledwheneverthemousechangespositionwhilethemousebuttonisdown.Thelastroutineiscalledwhenthemousebuttonisreleased.Allthreeroutinestakeanandyparameter,whichisthelocationofthemousewithrespecttothecanvas(i.e.(0,0)isthelower-leftcornerofthecanvas).
![Page 324: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/324.jpg)
OutputofCanvases.dem
Thexandyparametersspecifythelower-leftcornerofthecanvas.Thewidthandheightparametersspecifythewidthandheightofthecanvas.
ForGUI.CreateCanvasFull,theborderparameterspecifiesthetypeofborderthatsurroundsthecanvasandisoneof0,GUI.LINE,GUI.INDENTorGUI.EXDENT.Aborderof0isthedefaultandisthesameasGUI.LINE.GUI.INDENTandGUI.EXDENTonlydisplayproperlyifthebackgroundcolourhasbeensettograyusingGUI.SetBackgroundColor.GUI.INDENTmakesthecanvasappearindentedorrecessed.GUI.EXDENTmakesthecanvasappeartostandoutfromthewindow.
ThemouseDownparameterisaprocedurecalledwhentheuserpressesthemousebuttoninthecanvas.ThemouseDragparameterisaprocedurecalledwhentheuserdragsthemousewhilethemousebuttonisstillpressed.ThemouseUpparameterisaprocedurecalledwhentheuserreleasesthemousebutton.Theparameterstoallthreearethexandylocationofthemousewherethebuttonwaspressed(dragged/released).Thecoordinatesaregivenwithrespecttothecanvas(i.e.(0,0)isthelower-leftcornerofthecanvas).
Example
Thefollowingprogramdraws10randomstarsinthecanvas.
importGUI
varcanvas:int:=GUI.CreateCanvas(10,10,maxx
fori:1..10
varx:int:=Rand.Int(0,maxx-20)
vary:int:=Rand.Int(0,maxy-20)
varc:int:=Rand.Int(0,maxcolor)
GUI.DrawFillOval(canvas,x,y,20,20,c)
![Page 325: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/325.jpg)
endfor
Execute
Details
WhenGUI.CreateCanvasorGUI.CreateCanvasFulliscalled,thenewlycreatedcanvaswillbedisplayedimmediatelyunlessGUI.DisplayWhenCreatedhasbeencalledwiththedisplayparametersettofalse.
Theborderofthecanvasisjustoutsidethedrawingsurface,soGUI.GetWidthandGUI.GetHeightwillreturnslightlargervaluesthanwidthandheight.
Whenthecanvasisdisabled,clickingthemouseinthecanvasdoesnotcallanyofthemouseDown,mouseDrag,ormouseUpprocedures.Theappearanceofthecanvasdoesnotchange.
Details
ThefollowingGUIsubprogramscanbecalledwithabuttonasthewidgetIDparameter:
GUI.Show,GUI.Hide,GUI.Enable,GUI.Disable,GUI.DisposeGUI.GetX,GUI.GetY,GUI.GetWidth,GUI.GetHeight,GUI.SetPosition,GUI.SetSize,GUI.SetPositionAndSize,GUI.Draw…,GUI.FontDraw,GUI.Pic…,GUI.SetXOR
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.CreateCanvas,notbycallingCreateCanvas.
SeealsoGUI.Draw…,GUI.FontDraw,GUI.Pic…,andGUI.SetXORfordrawingonacanvas.
![Page 326: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/326.jpg)
GUI.CreateCheckBox[Full] PartofGUImodule
Syntax
GUI.CreateCheckBox(x,y:int,text:string,actionProc:procedurex(filled:boolean)):int
GUI.CreateCheckBoxFull(x,y:int,text:string,actionProc:procedurex(filled:boolean),alignment:int,shortcutint
Description
Createsacheckbox(withaccompanyingtext)andreturnsthecheckbox'swidgetID.
Thecheckboxwidgetisusedtoimplementacheckboxthatcanbesetorunset.Whenyouclickonacheckbox,thestatusofthecheckboxflipsfromsettounsetandbackagainandthecheckbox'sactionprocedureiscalledwiththenewstatusasaparameter.Ifacheckboxisgivenashortcut,thenenteringthekeystrokewillcausethecheckboxtochangestatusandtheactionprocedurebecalled.Thenewstatuswillbedisplayedimmediately.
TwoCheckBoxes
Thexandyparametersspecifythelower-leftcornerofthecheckbox(unlessalignmentissettoGUI.RIGHT,inwhichcasetheyspecifythelower-rightcornerofthecheckbox).Thetextparameterspecifiesthetext(orlabel)besidethecheckbox.TheactionProcparameteristhenameofaprocedurethatiscalledwhenthestatusofthecheckboxchanges.TheactionProcproceduremusthaveonebooleanparameterwhichisthenewstatusofthecheckbox.InGUI.CreateCheckBox,thecheckbox'stextisalwaystotherightoftheactualcheckbox.InGUI.CreateCheckBoxFull,thetextcanbesettotherightorleftofthecheckboxwiththealignmentparameter.
ForGUI.CreateCheckBoxFull,thealignmentparameterspecifiesthepositionofthecheckboxinrelationtothetextaswellasthemeaningofthe
![Page 327: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/327.jpg)
parameters.Thealignmentparameterisoneof0,GUI.LEFT,orGUI.RIGHTalignmentof0isthedefaultandisthesameasGUI.LEFT.GUI.LEFTactualboxinthecheckboxappearstotheleftofthecheckbox'slabeland(specifiesthelower-leftcorner.AnalignmentofGUI.RIGHTmeansthattheactualboxappearstotherightofthecheckbox'slabeland(x,y)specifiesthelower-rightcornerofthecheckbox.Theshortcutparameteristhekeystroketobeusedasthebutton'sshortcut.Thedefaultparameterisabooleanindicatingwhetherthebuttonshouldbethedefaultbutton.Ifthereisalreadyadefaultbutton,anddefaultissettotrue,thenthisbuttonbecomesthenewdefaultbutton.
Acheckbox'ssizeisnotspecifiedduringcreation.Itisdeterminedbasedonthesizeofthetext.Insteadtheuserspecifiesthelower-leftcornerofthecheckbox(orthelower-rightifthecheckboxisrightjustified).
Example
Thefollowingprogramcreatestwobuttons,onewhichdrawsarandomcircleonthescreenandonewhichquitstheprogram
importGUI
procedureDoNothing(status:boolean)
endDoNothing
View.Set("graphics:300;100,nobuttonbar")
varcb1:int:=GUI.CreateCheckBox(10,10,"CheckBox1",
DoNothing)
varcb2:int:=GUI.CreateCheckBoxFull(200,10,"CheckBox2",
DoNothing,GUI.RIGHT,'2')
GUI.SetCheckBox(cb2,true)
varquitBtn:int:=GUI.CreateButton(230,10,0,"Quit",
loop
exitwhenGUI.ProcessEvent
endloop
varcb1Status:boolean:=GUI.GetCheckBox(cb1)
varcb2Status:boolean:=GUI.GetCheckBox(cb2)
ifcb1Statusthen
put"Checkbox1:filled"
else
put"Checkbox1:empty"
endif
ifcb2Statusthen
put"Checkbox2:filled"
else
put"Checkbox2:empty"
endif
![Page 328: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/328.jpg)
Execute
Details
WhenGUI.CreateButtonorGUI.CreateButtonFulliscalled,thenewlycreatedcheckboxwillbedisplayedimmediatelyunlessGUI.DisplayWhenCreatedhasbeencalledwiththedisplayparametersettofalse.
Whenacheckboxisnotenabled,thelabelbesidethecheckboxisgrayedoutandthecheckboxnolongerrespondstoanymouseclicksorkeystrokesuntilthecheckboxisenabledagain.
Details
ThefollowingGUIsubprogramscanbecalledwithacheckboxastheparameter:
GUI.Show,GUI.Hide,GUI.Enable,GUI.Disable,GUI.DisposeGUI.GetX,GUI.GetY,GUI.GetWidth,GUI.GetHeight,GUI.SetPosition,GUI.SetSize,GUI.SetPositionAndSize,GUI.SetLabel,GUI.GetCheckBox,GUI.SetCheckBox
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.CreateCheckBoxnotbycallingCreateCheckBox.
SeealsoGUI.SetLabelforchangingthechecbox'stextandGUI.GetCheckBoxGUI.SetCheckBoxforreadingandsettingthecheckbox'sstate.
![Page 329: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/329.jpg)
GUI.CreateFrame PartofGUImodule
Syntax GUI.CreateFrame(x1,y1,x2,y2,kind:int):int
Description
Createsaframeandreturnstheframe'swidgetID.
AframeisaboxdrawnaroundotherGUIwidgetstomakethewindowlookbetterandhelporganizetheGUIelements.
ThreeTypesofFramesWithaLabelinEachFrame
FramesaretheonlyGUIwidgetsthatcanhaveotherwidgetsplacedwithinthem.Framesarepassivewidgets,meaningthattheydonotrespondtobuttonclicksorkeystrokes.
Thex1andy1parametersspecifythelower-leftcorneroftheframeandthex2andy2parametersspecifytheupper-rightcorneroftheframe.Thekindparameterspecifiesthetypeofframe.Thisisoneof0,GUI.LINEGUI.INDENT,orGUI.EXDENT.Akindof0isthedefaultandisthesameasGUI.LINE.
GUI.INDENTandGUI.EXDENTonlydisplayproperlyifthebackgroundcolourhasbeensettograyusingGUI.SetBackgroundColor.GUI.INDENTmakesthecontentsframeappearindentedorrecessed.GUI.EXDENTmakesthecontentsoftheframeappeartostandoutfromthewindow.
Thefollowingprogramdrawsthreeframesinthewindowanddrawsalabelineachone.
importGUI
View.Set("graphics:250;90,nobuttonbar")
GUI.SetBackgroundColor(gray)
varlineFrame,indentFrame,exdentFrame:int
![Page 330: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/330.jpg)
ExamplevarlineLabel,indentLabel,exdentLabel:int
lineFrame:=GUI.CreateFrame(10,10,80,70,0)
indentFrame:=GUI.CreateFrame(90,10,160,70,
exdentFrame:=GUI.CreateFrame(170,10,240,70,
%Labelthelines.
lineLabel:=GUI.CreateLabelFull(10,10,"Line",70,60,
GUI.CENTER+GUI.MIDDLE,0)
indentLabel:=GUI.CreateLabelFull(90,10,"Indent",70,60,
GUI.CENTER+GUI.MIDDLE,0)
exdentLabel:=GUI.CreateLabelFull(170,10,"Exdent",70,60,
GUI.CENTER+GUI.MIDDLE,0)
Execute
Details
WhenGUI.CreateFrameiscalled,thenewlycreatedframewillbedisplayedimmediatelyunlessGUI.DisplayWhenCreatedhasbeencalledwiththedisplayparametersettofalse.
Aframewidgetisapassivewidgetandcannotbeenabledordisabled.
Details
ThefollowingGUIsubprogramscanbecalledwithaframeasthewidgetIDparameter:
GUI.Show,GUI.Hide,GUI.Dispose,GUI.GetX,GUI.GetYGUI.GetWidth,GUI.GetHeight,GUI.SetPosition,GUI.SetSizeGUI.SetPositionAndSize
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.CreateFrame,notbycallingCreateFrame.
![Page 331: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/331.jpg)
GUI.CreateHorizontalScrollBar[Full] PartofGUImodule
Syntax
GUI.CreateHorizontalScrollBar(x,y,size:int,min,max,start:int,actionProc:procedurex(value:int
GUI.CreateHorizontalScrollBarFull(x,y,size:int,min,max,start:int,actionProc:procedurex(value:int),arrowInc,pageInc,thumbSize:int):int
Description
Createsahorizontal(left-right)scrollbarandreturnsthescrollbar'swidgetID.
Ascrollbarisawidgetthatallowsuserstoseeapieceofadocumentthatcannotbedisplayedonthescreeninitsentirety.Thepicturebelowshowsahorizontalscrollbar.Tocontrolascrollbar,thereareafewchoices:theusercanclickonthethumb(theboxinthescrollbar)andslideitleftorright,ortheusercanclickinthescrollbaritselftotheleftorrightofthethumb(inwhichcasethethumbismovedupordownone"page"),ortheusercanclickontheleftorrightarrowsattheendsofthescrollbar(inwhichcasethethumbismovedleftorrightone"arrowincrement").
AHorizontalScrollBar
Theprogrammerdefinesapageoranarrowincrement.Whenthevalueofthescrollbarchanges,theactionprocedureofthescrollbariscalledwiththenewvalueasaparameter.Theactionprocedureshouldthenredrawthecontentsusingthenewvalueofthescrollbar.
TherangeofvaluesthatthescrollbarwillgiveisdeterminedbythemaxparametersintheCreatecall.Theleftsideofthescrollbarrepresentstheminimumvalue,whiletherightrepresentsthemaximumvalue.Thereisalsothe"thumbsize".Thisrepresentstherangeofvaluesthatcanbeseenatonceonthescreen.
![Page 332: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/332.jpg)
Bydefault,thearrowincrement(theamountthevalueischangedwhenthescrollingarrowsarepressed)issettoone.Thepageincrement(theamountthevalueischangedwhentheuserclicksinthebartotherightorleftofthethumb)issettoonequarterthedifferencebetweentheminimumandthemaximum.The"thumbsize"issettozero(seethedescriptionofscrollbarsforanexplanationofthethumbsize).
Thexandyparametersspecifythelower-leftcornerofthescrollbar.Theparameterspecifiesthelengthofthescrollbar(includingthearrows)inpixels.Theminandmaxparametersaretheminimumandmaximumvaluesreturnedbythescrollbar.Thestartparameteristheinitialvalueofthescrollbarandshouldbebetweenminandmaxinclusive.TheactionProcparameternameofaprocedurethatiscalledwhenthevalueofthescrollbarischanged.Theparametertotheactionprocedureisthecurrentvalueofthescrollbar.
Example
Thefollowingprogramcreatesahorizontalscrollbar.Wheneverthescrollbar'svalueischanged,amessageisdisplayedinthewindow.
importGUI
View.Set("graphics:300;60,nobuttonbar")
varscrollBar:int
procedureScrollBarMoved(value:int)
Text.Locate(2,3)
put"HorizontalScrollBar:",value:4
endScrollBarMoved
scrollBar:=GUI.CreateHorizontalScrollBar(10,10,250,
50,150,50,ScrollBarMoved)
loop
exitwhenGUI.ProcessEvent
endloop
Execute
ForGUI.CreateHorizontalScrollBarFull,thearrowIncparameterspecifies
![Page 333: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/333.jpg)
Description
thearrowincrement(theamountthescrollbar'svalueischangedwhenthescrollarrowsarepressed).ThepageIncspecifiesthepageincrement(theamountthescrollbar'svalueischangedwhentheuserclicksinthepageleft/rightsectionofthescrollbar).ThethumbSizeparameterspecifiesthe"thumbsize".(Seethescrollbarexplanationformoredetailonascrollbar's"thumbsize").
Forexample,ifyouhaveawindowthatcandisplay20linesoftextatonceandthereare100linesoftext,youwouldsetminto1,maxto100and20.Thevaluereturnedbythescrollbarwouldthenbethelinenumberofthefirstlineonthescreentobedisplayed.Whenthescrollbarwasatitsmaximumvalue,itwouldreturn81,sincebydoingso,lines81-100wouldbedisplayed.
Example
Hereisanexampleprogramthatscrollsalargepictureoverasmallerwindow.
%The"ScrollPic"program.
importGUI
varh,v:int%Thescrollbars.
varcanvas:int%Thecanvas.
varpic:int%Thepicture.
constwidth:int:=220%Thewidthofthecanvas.
procedureScrollPic(ignore:int)
%Getthecurrentvalueofthescrollbars.
varx:int:=GUI.GetSliderValue(h)
vary:int:=GUI.GetSliderValue(v)
GUI.PicDraw(canvas,pic,-x,-y,picCopy)
endScrollPic
pic:=Pic.FileNew("Forest.jpg")
ifpic<=0then
put"Errorloadingpicture:",Error.LastMsg
return
endif
View.Set("graphics:265;265")
canvas:=GUI.CreateCanvas(15,15+GUI.GetScrollBarWidth
width,width)
%Notetheframeofthecanvasis:
%(14,14+ScrollbarWidth)-(235,235+ScrollbarWidth)
h:=GUI.CreateHorizontalScrollBarFull(14,14,
221,0,Pic.Width(pic),0,ScrollPic,3,100,
v:=GUI.CreateVerticalScrollBarFull(235,
14+GUI.GetScrollBarWidth,221,0,Pic.Height
![Page 334: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/334.jpg)
Pic.Height(pic),ScrollPic,3,100,width)
ScrollPic(0)%Drawthepictureinitially
loop
exitwhenGUI.ProcessEvent
endloop
Execute
Details
Insomeinstances,youwillwantthetheminimumandmaximumvaluesofthescrollbartobereversed(right/topisminimum).Inthatcase,calltheGUI.SetSliderReverseproceduretoflipthevaluesofthescrollbar.
Scrollbarsalwayshaveafixedheight(forhorizontalscrollbars)orwidth(forverticalscrollbars).Togetascrollbar'swidth,usetheGUI.GetScrollBarWidthfunction.
WhenGUI.CreateHorizontalScrollBarorGUI.CreateHorizontalScrollBarFulliscalled,thenewlycreatedscrollbarwillbedisplayedimmediatelyunlessGUI.DisplayWhenCreatedhasbeencalledwiththedisplayparametersettofalse.
Whenascrollbarisnotenabled,thegrayinthebarissettowhiteandthethumbisnotdisplayed.Thescrollbarnolongerrespondstoanymouseclicksuntilthescrollbarisenabledagain.
Details
ThefollowingGUIsubprogramscanbecalledwithascrollbarastheparameter:
GUI.Show,GUI.Hide,GUI.Enable,GUI.Disable,GUI.DisposeGUI.GetX,GUI.GetY,GUI.GetWidth,GUI.GetHeight,GUI.SetPosition,GUI.SetSize,GUI.SetPositionAndSize,GUI.GetSliderValue,GUI.SetSliderValue,GUI.SetSliderMinMaxGUI.SetSliderSize,GUI.SetSliderReverse,GUI.SetScrollAmount
![Page 335: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/335.jpg)
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.CreateHorizontalScrollBar,notbycallingCreateHorizontalScrollBar
Seealso
GUI.GetSliderValueandGUI.SetSliderValueforreadingandsettingthevalueofascrollbar,GUI.SetSliderMinMaxforchangingtheminimumandmaximumvaluesofascrollbar,andGUI.SetScrollAmountforchangingthescrollingincrementsandthumbsizeofascrollbar.SeealsoGUI.SetSliderSizeforsettingthelengthofascrollbarandGUI.SetSliderReverseforreversingthesenseofascrollbar.
![Page 336: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/336.jpg)
GUI.CreateHorizontalSlider PartofGUImodule
Syntax
GUI.CreateHorizontalSlider(x,y,length:int,min,max,start:int,actionProc:procedurex(value:int)):int
Description
Createsahorizontal(left-right)sliderandreturnstheslider'swidgetID.
Asliderisawidgetthatallowstheusertosetacontinuoussetofvalues.Ithasareal-lifeequivalentinthingssuchasastereovolumecontrol.
AHorizontalSlider
Tocontrolaslider,theuserclicksonthesliderboxanddragsitbackandforth.Everytimethevaluechanges,aprocedureiscalledwiththenewvalueasaparameter.
TherangeofvaluesthatthesliderwillgiveisdeterminedbytheminandmaxparametersintheCreatecall.Theleftsideofthesliderrepresentstheminimumvalue,whiletherightrepresentsthemaximumvalue.
Thexandyparametersspecifythelower-leftcorneroftheslidertrack.Thismeansthattheslideractuallyextendsaboveandbelowthispoint(andslightlytotheleftofittotakeintoaccounttheroundedendofthetrack).Thelengthparameterspecifiesthelengthofthetrackinpixels.(YoucanuseGUI.GetX,GetY,GetWidth,andGetHeighttogettheexactdimensionsoftheslider.)Theminandmaxparametersaretheminimumandmaximumvaluesreturnedbytheslider.Thestartparameteristheinitialvalueofthesliderandshouldbebetweenminandmaxinclusive.TheactionProcparameteristhenameofaprocedure
![Page 337: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/337.jpg)
thatiscalledwhenthevalueofthesliderischanged.Theparametertotheactionprocedureisthecurrentvalueoftheslider.
Example
Thefollowingprogramcreatesahorizontalslider.Whenevertheslider'svalueischanged,amessageisdisplayedinthewindow.
importGUI
View.Set("graphics:300;60,nobuttonbar")
varslider:int
procedureSliderMoved(value:int)
Text.Locate(2,3)
put"HorizontalSlider:",value:4
endSliderMoved
slider:=GUI.CreateHorizontalSlider(10,10,250,
50,150,50,SliderMoved)
loop
exitwhenGUI.ProcessEvent
endloop
Execute
Details
Insomeinstances,youwillwantthetheminimumandmaximumvaluesoftheslidertobereversed(rightisminimum).Inthatcase,calltheGUI.SetSliderReverseproceduretoflipthevaluesoftheslider.
Slidersalwayshaveafixedheight(forhorizontalsliders)orwidth(forverticalsliders).
WhenGUI.CreateHorizontalSliderorGUI.CreateHorizontalSliderFulliscalled,thenewlycreatedsliderwillbedisplayedimmediatelyunlessGUI.DisplayWhenCreatedhasbeencalledwiththedisplay
![Page 338: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/338.jpg)
parametersettofalse.
Whenasliderisnotenabled,theappearancedoesnotchange.However,theslidernolongerrespondstoanymouseclicksuntilitisenabledagain.
Details
ThefollowingGUIsubprogramscanbecalledwithasliderasthewidgetIDparameter:
GUI.Show,GUI.Hide,GUI.Enable,GUI.Disable,GUI.Dispose,GUI.GetX,GUI.GetY,GUI.GetWidth,GUI.GetHeight,GUI.SetPosition,GUI.SetSize,GUI.SetPositionAndSize,GUI.GetSliderValue,GUI.SetSliderValue,GUI.SetSliderMinMax,GUI.SetSliderSize,GUI.SetSliderReverse
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.CreateHorizontalSlider,notbycallingCreateHorizontalSlider.
Seealso
GUI.GetSliderValueandGUI.SetSliderValueforreadingandsettingthevalueofaslider,GUI.SetSliderMinMaxforchangingtheminimumandmaximumvaluesofaslider.SeealsoGUI.SetSliderSizeforsettingthelengthofasliderandGUI.SetSliderReverseforreversingthesenseofaslider.
![Page 339: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/339.jpg)
GUI.CreateLabel[Full] PartofGUImodule
Syntax
GUI.CreateLabel(x,y:int,text:string):int
GUI.CreateLabelFull(x,y:int,text:string,width,height,alignment,fontID:int):int
Description
Createsalabelandreturnsthelabel'swidgetID.
Thelabelwidgetisusedtodisplaytext.Itcanbeusedtodisplaytextinavarietyoffontsandsizes.Labelwidgetscanalsobealignedinavarietyofways.
ThreeLabels
Thexandyparametersspecifythelower-leftcorneroftheareainwhichthetextwillbedrawn.ForGUI.CreateLabel,thisisthelower-leftcornerofthetext.Thetextparameterspecifiesthetextofthelabel.
ForGUI.CreateLabelFull,thewidthandheightparametersspecifytheareainwhichthelabelistoappear.Thisisusedforalignmentpurposes.Seetheprogrambelowforanexampleofaligningthetexttodifferentcornersofthewindow.Thealignmentparameterspecifiesthealignmentofthetextinthetextarea.Thisvalueisthesumofhorizontalalignmentandtheverticalalignment.Thehorizontalalignmentisoneof0,GUI.LEFT,GUI.CENTER,orGUI.RIGHT.Ahorizontalalignmentof0isthedefaultandisthesameasthealignmentofGUI.LEFTverticalalignmentisoneof0,GUI.TOP,GUI.MIDDLE,orGUI.BOTTOMhorizontalalignmentof0isthedefaultandisthesameasthealignmentofGUI.BOTTOM.Thesealignmentsalignthetextinvariouswaysinthetextarea.ThefontIDparameterspecifiesthefontIDofthefonttobeusedinthetextfield.ThefontIDisreceivedfromaFont.Newcall.DonotcallFont.FreeIDuntilthelabelhasbeendisposedofbycallingGUI.Dispose.
ByusingthefondIDparameter,labelscanbehaveanysizeortypeface.
![Page 340: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/340.jpg)
Labelsarepassivewidgets,meaningthattheydonotrespondtobuttonclicksorkeystrokes.
Example
Thefollowingprogramcreatesthreelabels,onewiththedefaultalignment,theothertwoalignedtoappearinthecenterandupper-rightcornerofthewindow.
importGUI
View.Set("graphics:300;100,nobuttonbar")
varlowerLeft:int:=GUI.CreateLabel(0,0,"Lower-Left")
varcenter:int:=GUI.CreateLabelFull(0,0,"Center",
GUI.MIDDLE+GUI.CENTER,0)
varupperRight:int:=GUI.CreateLabelFull(0,0,"Upper-Right",
maxx,maxy,GUI.RIGHT+GUI.TOP,0)
Execute
Details
WhenGUI.CreateLabelorGUI.CreateLabelFulliscalled,thenewlycreatedlabelwillbedisplayedimmediatelyunlessGUI.DisplayWhenCreatedcalledwiththedisplayparametersettofalse.
Aframewidgetisapassivewidgetandcannotbeenabledordisabled.
Details
ThefollowingGUIsubprogramscanbecalledwithalabelasthewidgetIDparameter:
GUI.Show,GUI.Hide,GUI.Dispose,GUI.GetX,GUI.GetYGUI.GetWidth,GUI.GetHeight,GUI.SetPosition,GUI.SetSizeGUI.SetPositionAndSize,GUI.GetSliderValue,GUI.SetSliderValueGUI.SetSliderMinMax,GUI.SetLabel
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.CreateLabelbycallingCreateLabel.
![Page 341: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/341.jpg)
Seealso GUI.SetLabelforchangingthelabel'stext.
![Page 342: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/342.jpg)
GUI.CreateLabelledFrame PartofGUImodule
SyntaxGUI.CreateLabelledFrame(x1,y1,x2,y2,kind:int,text:string):int
Description
Createsalabelledframeandreturnstheframe'swidgetID.
AlabelledframeisaboxwithatextlabeldrawnaroundotherGUIwidgetstomakethewindowlookbetterandhelporganizetheGUIelements.
ThreeTypesofLabelledFrames
FramesandlabelledframesaretheonlyGUIwidgetsthatcanhaveotherwidgetsplacedwithinthem.Labelledframesarepassivewidgets,meaningthattheydonotrespondtobuttonclicksorkeystrokes.
Thex1andy1parametersspecifythelower-leftcorneroftheframeandthex2andy2parametersspecifytheupper-rightcorneroftheframe.(Thetextwillextendabovetheframe.)Thekindparameterspecifiesthetypeofframe.Thisisoneof0,GUI.LINE,GUI.INDENTorGUI.EXDENT.AkindthedefaultandisthesameasGUI.LINE.
GUI.INDENTandGUI.EXDENTonlydisplayproperlyifthebackgroundcolourhasbeensettograyusingGUI.SetBackgroundColor.GUI.INDENTmakesthecontentsframeappearindentedorrecessed.GUI.EXDENTthecontentsoftheframeappeartostandoutfromthewindow.
Example
Thefollowingprogramdrawsthreeframesinthewindow.
importGUI
View.Set("graphics:250;90,nobuttonbar")
GUI.SetBackgroundColor(gray)
varlineFrame,indentFrame,exdentFrame:int
lineFrame:=GUI.CreateLabelledFrame(10,10,80,70,0,"Line")
![Page 343: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/343.jpg)
indentFrame:=GUI.CreateLabelledFrame(90,10,160,70,
GUI.INDENT,"Indent")
exdentFrame:=GUI.CreateLabelledFrame(170,10,240,70,
GUI.EXDENT,"Exdent")
Execute
Details
WhenGUI.CreateLabelledFrameiscalled,thenewlycreatedlabelledframewillbedisplayedimmediatelyunlessGUI.DisplayWhenCreatedbeencalledwiththedisplayparametersettofalse.
Alabelledframewidgetisapassivewidgetandcannotbeenabledordisabled.
Details
ThefollowingGUIsubprogramscanbecalledwithalabelledframeasthewidgetIDparameter:
GUI.Show,GUI.Hide,GUI.Dispose,GUI.GetX,GUI.GetYGUI.GetWidth,GUI.GetHeight,GUI.SetPosition,GUI.SetSizeGUI.SetPositionAndSize,GUI.SetLabel
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.CreateLabelledFrame,notbycallingCreateLabelledFrame
Seealso GUI.SetLabelforchangingtheframe'stext.
![Page 344: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/344.jpg)
GUI.CreateLine PartofGUImodule
Syntax GUI.CreateLine(x1,y1,x2,y2,kind:int):int
Description
Createsalineandreturnstheline'swidgetID.
Linesaregenerallyusedtoseparatepartsofawindow.AlineisusedtomakethewindowlookbetterandhelporganizetheGUIelements.
ThreeTypesofLines
Linesarepassivewidgets,meaningthattheydonotrespondtobuttonclicksorkeystrokes.
Thex1andy1parametersspecifyoneend-pointofthelineandthespecifytheotherendpoint.Thelinemusteitherbehorizontalorvertical(i.e.x1mustequalx2ory1mustequaly2).Thekindparameterspecifiesthetypeofline.Thisisoneof0,GUI.LINE,GUI.INDENTorGUI.EXDENT.Akindof0isthedefaultandisthesameasGUI.LINE.
GUI.INDENTandGUI.EXDENTonlydisplayproperlyifthebackgroundcolourhasbeensettograyusingGUI.SetBackgroundColor.GUI.INDENTmakesthelineappearindentedorrecessed.GUI.EXDENTmakesthelineappeartostandoutfromthewindow.
Example
Thefollowingprogramdrawsthreelineswiththreelabelsinthewindow.
importGUI
View.Set("graphics:180;100,nobuttonbar")
GUI.SetBackgroundColor(gray)
varline,indentLine,exdentLine:int
varlineLabel,indentLabel,exdentLabel:int
line:=GUI.CreateLine(30,20,30,90,0)
indentLine:=GUI.CreateLine(90,20,90,90,GUI.INDENT
exdentLine:=GUI.CreateLine(150,20,150,90,
lineLabel:=GUI.CreateLabelFull(30,15,"Line",0,0,
![Page 345: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/345.jpg)
GUI.CENTER+GUI.TOP,0)
indentLabel:=GUI.CreateLabelFull(90,15,"Indent",0,0,
GUI.CENTER+GUI.TOP,0)
exdentLabel:=GUI.CreateLabelFull(150,15,"Exdent",0,0,
GUI.CENTER+GUI.TOP,0)
Execute
Details
WhenGUI.CreateLineiscalled,thenewlycreatedlinewillbedisplayedimmediatelyunlessGUI.DisplayWhenCreatedhasbeencalledwiththedisplay
Alinewidgetisapassivewidgetandcannotbeenabledordisabled.
Details
ThefollowingGUIsubprogramscanbecalledwithalineasthewidgetID
GUI.Show,GUI.Hide,GUI.Dispose,GUI.GetX,GUI.GetYGUI.GetHeight,GUI.SetPosition,GUI.SetSize,GUI.SetPositionAndSize
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.CreateLineCreateLine.
![Page 346: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/346.jpg)
GUI.CreateMenu PartofGUImodule
Syntax GUI.CreateMenu(name:string):int
Description
Createsamenuandreturnsthemenu'swidgetID.Themenuwillbeaddedaftertheothermenusinthemenubar.Iftherearenopreviousmenus,thenamenubarisautomaticallycreatedandthemenuadded.
Thenameparameterspecifiesthetextthatappearsinthemenubar.
AMenuWithanItemSelected
Menusareusedinmostmoderninterfaces.Inordertocreateafullsetofmenus,youmustcreatethemenuandthencreatethemenuitemsinthatmenu.Themenusareautomaticallyaddedtothemenubaroftheselectedmenu.
Asofthev1.0releaseoftheGUILibrary,itisanerrortocreateamenuitemwithouthavingcreatedamenufirst.Infuturereleasesitwillbepossibletocreatemenusandattachandremovethemfrommenubarswhendesired.
Thefollowingprogramcreatesaseriesofmenuswithmenuitemsinthem.Itthendisablesthesecondmenu.
importGUIin"%oot/lib/GUI"
View.Set("graphics:250;150,nobuttonbar")
varfirst,second:int%Themenus.
varitem:array1..12ofint%Themenuitems.
varname:array1..12ofstring(20):=
init("Quit","---","A","B","---","C","D",
"DisableBMenuItem","EnableBMenuItem","---",
![Page 347: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/347.jpg)
Example
"DisableSecondMenu","EnableSecondMenu")
procedureMenuSelected
fori:1..12
ifitem(i)=GUI.GetEventWidgetIDthen
Text.Locate(maxrow,1)
putname(i)+"selected"..
endif
endfor
endMenuSelected
procedureDisableB
GUI.Disable(item(4))
endDisableB
procedureEnableB
GUI.Enable(item(4))
endEnableB
procedureDisableFirst
GUI.Disable(first)
endDisableFirst
procedureEnableFirst
GUI.Enable(first)
endEnableFirst
%Createthemenus
first:=GUI.CreateMenu("First")
item(1):=GUI.CreateMenuItem(name(1),GUI.Quit
forcnt:2..7
item(cnt):=GUI.CreateMenuItem(name(cnt),
MenuSelected)
endfor
second:=GUI.CreateMenu("Second")
item(8):=GUI.CreateMenuItem(name(8),DisableB
item(9):=GUI.CreateMenuItem(name(9),EnableB
item(10):=GUI.CreateMenuItem(name(10),MenuSelected
item(11):=GUI.CreateMenuItem(name(11),DisableFirst
item(12):=GUI.CreateMenuItem(name(12),EnableFirst
loop
exitwhenGUI.ProcessEvent
endloop
![Page 348: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/348.jpg)
Execute
DetailsWhenamenuisnotenabled,thetextinthemenubarisgrayedoutandclickingonthemenudoesnotcausethemenutoappear.
Details
ThefollowingGUIsubprogramscanbecalledwithamenuasthewidgetIDparameter:
GUI.Show,GUI.Hide,GUI.Dispose,GUI.Enable,GUI.Disable
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.CreateMenu,notbycallingCreateMenu.
Seealso
GUI.CreateMenuItemforaddingitemstoamenu.SeealsoGUI.ShowMenuBarandGUI.HideMenuBarforshowingandhidingthemenubar.
![Page 349: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/349.jpg)
GUI.CreateMenuItem[Full] PartofGUImodule
Syntax
GUI.CreateMenuItem(name:string,actionProc:procedurex()):int
GUI.CreateMenuItemFull(name:string,actionProc:procedurex(),shortCut:char,addNow:boolean):int
Description
Createsamenuitemandreturnsthemenuitem'swidgetID.
Menuitemsaretheindividualentriesofamenu.Tocreatemenusforawindow,youmustcreateamenu,thencreatethemenuitemsforthatmenu,thencreatethenextmenu,etc.Allmenuitemsareautomaticallyaddedtothelastmenuandafterthelastmenuitemofthecurrentlyselected(notactive!)window.
Themenuitemwillbeaddedtothelastmenuaftertheothermenuitemsinthemenu.Iftherearenomenusdefined,anerrorresults.
Thenameparameterspecifiesthetextthatistoappear.Anameofthreedashes("---")createsaseparatoracrossthemenu.TheactionProcparameterspecifiesthenameofaproceduretobecalledwhenusertheselectsthemenuitemfromthemenu.
ForGUI.CreateMenuItemFull,theshortCutparameterspecifiesthekeystroketobeusedasthemenuitem'sshortcut.Ifnoshortcutisdesired,then'\0'canbeused.TheaddNowparameterhasnoeffectinthecurrentversionoftheGUILibrary.Infutureversions,itwillallowyoutocreatemenuitemsthatcanthenbeaddedtoamenulaterintheprogram.
Examples SeetheexampleforGUI.CreateMenu.
![Page 350: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/350.jpg)
Execute
Details
Whenamenuitemisnotenabled,thetextofthemenuitemisgrayedoutandclickingonthemenuitemdoesnotcausethemenutoappear.
Details
ThefollowingGUIsubprogramscanbecalledwithamenuasthewidgetIDparameter:
GUI.Show,GUI.Hide,GUI.Dispose,GUI.Enable,GUI.Disable
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.CreateMenuItem,notbycallingCreateMenuItem.
![Page 351: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/351.jpg)
GUI.CreatePicture PartofGUImodule
SyntaxGUI.CreatePicture(x,y,picture:int,mergePic:boolean):int
Description
Createsapictureandreturnsthepicture'swidgetID.
Thepicturewidgetisusedtodisplayapicture.Itcanbeusedtodisplayapictureeithermergedintothebackgroundornot.
Thexandyparametersspecifythelower-leftcornerofthepicture.TheparameterspecifiesthepictureIDofthepicture.ThepictureIDisreceivedfromaPic.NeworPic.FileNewcall.DonotcallPic.FreeforthispictureIDuntilthebuttonhasbeendisposedofbycallingGUI.Dispose.ThemergePicparameterisabooleanthatspecifieswhetheranythingthatwasthebackgroundcolourinthepicture(usuallycolour0)shouldbesettothebackgroundcolourofthewindow.
Apicturewidgetisapassivewidgetandcannotbeenabledordisabled.
TwoPictures
Example
Thefollowingprogramdrawstwopictures,mergedandnotmerged.
importGUI
View.Set("graphics:230;135,nobuttonbar")
%We'llneedtocreateapictureforourPicturewidget.Normally
%anexternalfile(andPic.FileNew)wouldbeused.
Draw.FillOval(50,50,50,50,blue)
Draw.FillBox(17,17,83,83,brightred)
Draw.FillStar(17,17,83,83,brightgreen)
Draw.FillMapleLeaf(37,37,63,63,brightpurple
varpic:int:=Pic.New(0,0,100,100)
![Page 352: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/352.jpg)
varpicture1,picture2:int
varlabel1,label2:int
GUI.SetBackgroundColor(gray)
label1:=GUI.CreateLabel(15,5,"Picture(nomerge)")
picture1:=GUI.CreatePicture(10,25,pic,false
label2:=GUI.CreateLabel(135,5,"Picture(merge)")
picture2:=GUI.CreatePicture(120,25,pic,true
Execute
Details
WhenGUI.CreatePictureiscalled,thenewlycreatedpicturewillbedisplayedimmediatelyunlessGUI.DisplayWhenCreatedhasbeencalledwiththeparametersettofalse.
Apicturewidgetisapassivewidgetandcannotbeenabledordisabled.
Details
ThefollowingGUIsubprogramscanbecalledwithapictureasthe
GUI.Show,GUI.Hide,GUI.Dispose,GUI.GetX,GUI.GetYGUI.GetHeight,GUI.SetPosition,GUI.SetSize,GUI.SetPositionAndSize
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.CreatePicturecallingCreatePicture.
![Page 353: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/353.jpg)
GUI.CreatePictureButton[Full] PartofGUImodule
Syntax
GUI.CreatePictureButton(x,y,picture:int,actionProc:procedurex()):int
GUI.CreatePictureButtonFull(x,y,picture:int,actionProc:procedurex(),width,height:int,shortcut:char,mergePic:boolean):int
Description
Createsapicturebuttonandreturnsthebutton'swidgetID.
Picturebuttonsbehavelikebuttons(seeGUI.CreateButton)exceptthatinsteadoftextonthebutton,apicturespecifiedbytheuserisdisplayedonthebutton.Thepicturebuttonwidgetrespondstomouseclicksandkeystrokesinthesamemannerasaregularbuttonwidget.
ThepicturemustbecreatedbytheprogrambeforehandusingPic.NewPic.FileNew.TheresultingpicturecanthenbeusedasaparametertoGUI.CreatePictureButton.Ingeneral,picturesshouldbeamaximumofabout50pixelshighandwide,althoughthereisnobuilt-inlimitintheGUIlibrary.
Thexandyparametersspecifythelower-leftcornerofthepicturebutton.ThepictureparameterspecifiesthepictureIDofthepicturetobedisplayedonthebutton.(Notethat,ingeneral,thispictureshouldbefairlysmall.)ThepictureIDisreceivedfromaPic.NeworPic.FileNewcall.DonotcallPic.FreepictureIDuntilthebuttonhasbeendisposedofbycallingGUI.DisposeactionProcparameterspecifiesthenameofaprocedurethatiscalledwhenthepicturebuttonispressed.
ForGUI.CreatePictureButtonFull,thewidthandheightparametersspecifythewidthandheightofthebutton.Iftheyaresetto0,thenthepictureradiobuttonisautomaticallysizedtofitthepicture.Ifyouneedtoknowtheprecisesizeofthebutton,usetheGUI.GetWidthandGUI.GetHeightfunctions.Ifwidthheightarelargerthanthepicture,thepictureiscenteredinthebutton.TheshortCutparameteristhekeystroketobeusedasthebutton'sshortcut.ThemergePicparameterspecifieswhetheranythingthatwasthebackgroundcolourinthepicture(usuallycolour0)shouldbesettothebackgroundcolourofthebutton(whichisusuallygray).ThisdefaultstotrueforCreatePictureButton
![Page 354: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/354.jpg)
TwoPictureButtons
Example
Thefollowingprogramdisplaysfivepicturebuttonswhichoutputamessagewhenpressed.
importGUI
View.Set("graphics:100;70")
constsize:int:=25%Thebuttonssize.
constborder:int:=3
varstarButton,mapleButton,starPic,mapleLeafPic
procedureStarPressed
Text.Locate(1,1)
put"StarPressed"
endStarPressed
procedureMaplePressed
Text.Locate(1,1)
put"MaplePressed"
endMaplePressed
%Createthepictures.
%Thestar.
Draw.Star(border,border,border+size,border
Draw.Star(border+1,border+1,border+size
border+size-1,black)
Draw.FillStar(border+2,border+2,border+
border+size-2,brightred)
starPic:=Pic.New(0,0,2*border+size,2*
%Themapleleaf.
Draw.FillBox(border,border,border+size,border+size,white)
Draw.MapleLeaf(border,border,border+size,border
Draw.MapleLeaf(border+1,border+1,border+
border+size-1,black)
Draw.FillMapleLeaf(border+2,border+2,border
border+size-2,brightred)
mapleLeafPic:=Pic.New(0,0,2*border+size
%Createthepicturebuttons.
Draw.Cls
![Page 355: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/355.jpg)
starButton:=GUI.CreatePictureButton(10,10,starPic
mapleButton:=GUI.CreatePictureButton(55,10,
MaplePressed)
loop
exitwhenGUI.ProcessEvent
endloop
Execute
Details
WhenGUI.CreatePictureButtonorGUI.CreatePictureButtonFullthenewlycreatedpicturewillbedisplayedimmediatelyunlessGUI.DisplayWhenCreatedhasbeencalledwiththedisplayparametersettofalse.
Whenapicturebuttonisnotenabled,thepicturebuttonisgrayedoutandthepicturebuttonnolongerrespondstoanymouseclicksorkeystrokesuntilthebuttonisenabledagain.
Details
ThefollowingGUIsubprogramscanbecalledwithapicturebuttonasthewidgetIDparameter:
StatusExportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.CreatePictureButton,notbycallingCreatePictureButton.
![Page 356: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/356.jpg)
GUI.CreatePictureRadioButton[Full] PartofGUImodule
Syntax
GUI.CreatePictureRadioButton(x,y,picture:int,joinID:int,actionProc:procedurex()):int
GUI.CreatePictureRadioButtonFull(x,y:int,picture,joinID:int,actionProc:procedurex(),width,height:shortcut:char,mergePic:boolean):int
Description
Createsapictureradiobuttonandreturnsthebutton'swidgetID.
Pictureradiobuttonsbehavelikepicturebuttons(seeGUI.CreatePictureButton)exceptthattheyhavethe"radio"property.Thatis,oneofthebuttonsintheradiogroupisalwaysselected,andifanotherbuttoninthegroupisselected,thepreviouslyselectedbuttonisunselected.
Acommonexampleisthebuttonsonapaintprogramthatindicatethecurrentshapebeingpainted.Themapleleafbuttoniscurrentlyselected.Ifthestarbuttonisselectedbytheuser,themapleleafbuttonbecomesunselected.Forpicturebuttons,theselectedbuttonappearsdepressed.
FourPictureRadioButtonswiththeMapleLeafSeledcted
Aradiogroupiscreatedbyfirstcreatingasingleradiobutton.Toaddanotherbuttontothegroup,asecondradiobuttoniscreatedspecifyingthefirstradiobuttoninthejoinIDparameter.Subsequentradiobuttonsareadded,eachspecifyingapreviousmemberofthegroupinthejoinIDparameter.
![Page 357: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/357.jpg)
ThepicturemustbecreatedbytheprogrambeforehandusingPic.NewPic.FileNew.TheresultingpicturecanthenbeusedasaparametertoGUI.CreatePictureButton.Ingeneral,picturesshouldbeamaximumofabout50pixelshighandwide,althoughthereisnobuilt-inlimitintheGUIlibrary.
Thexandyparametersspecifythelower-leftcornerofthepictureradiobutton.Iftheseareboth1andjoinIDisnotzero,thenthebuttonwillbeplaceddirectlybelowthepreviouspictureradiobuttoninthegroup.ThepictureparameterspecifiesthepictureIDofthepicturetobedisplayedonthebutton.(Notethat,ingeneral,thispictureshouldbefairlysmall.)ThepictureIDisreceivedfromaPic.NeworPic.FileNewcall.DonotcallPic.FreeforthispictureIDuntilthebuttonhasbeendisposedofbycallingGUI.Dispose.ThejoinIDparameterspecifiesamemberoftheradiogroupthatthiswidgetshouldjoin.Asepecifiesthisradiobuttonisnotamemberofanygroup.TheactionProcparameterspecifiesthenameofaprocedurethatiscalledwhenthepicturebuttonispressed.
ForGUI.CreatePictureRadioButtonFull,thewidthandheightparametersspecifythewidthandheightofthebutton.Iftheyaresetto0,thenthepictureradiobuttonisautomaticallysizedtofitthepicture.Ifyouneedtoknowtheprecisesizeofthebutton,usetheGUI.GetWidthandGUI.GetHeightfunctions.Ifwidthandheightarelargerthanthepicture,thepictureiscenteredinthebutton.TheshortCutparameteristhekeystroketobeusedasthebutton'sshortcut.ThemergePicparameterspecifieswhetheranythingthatwasthebackgroundcolourinthepicture(usuallycolour0)shouldbesettothebackgroundcolourofthebutton(whichisusuallygray).ThisdefaultstotrueforCreatePictureRadioButton.
Thefollowingprogramcreatesanddisplaysforpictureradiobuttons.
importGUI
View.Set("graphics:150;200,nobuttonbar")
constsize:int:=25%Thebuttonssize.
constborder:int:=3
varstarButton,mapleButton,circleButton,squareButton
varstarPic,mapleLeafPic,circlePic,squarePic:
procedureStarPressed
Text.Locate(1,1)
put"StarPressed"
![Page 358: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/358.jpg)
Example
endStarPressed
procedureMaplePressed
Text.Locate(1,1)
put"MaplePressed"
endMaplePressed
procedureCirclePressed
Text.Locate(1,1)
put"CirclePressed"
endCirclePressed
procedureSquarePressed
Text.Locate(1,1)
put"SquarePressed"
endSquarePressed
%Createthepictures.
%Thestar.
Draw.Star(border,border,border+size,border
Draw.Star(border+1,border+1,border+size
border+size-1,black)
Draw.FillStar(border+2,border+2,border+
border+size-2,brightred)
starPic:=Pic.New(0,0,2*border+size,2*
%Themapleleaf.
Draw.FillBox(border,border,border+size,border
Draw.MapleLeaf(border,border,border+size,border
Draw.MapleLeaf(border+1,border+1,border+
border+size-1,black)
Draw.FillMapleLeaf(border+2,border+2,border
border+size-2,brightred)
mapleLeafPic:=Pic.New(0,0,2*border+size
%Thecircle.
constradius:int:=sizediv2
Draw.FillBox(border,border,border+size,border
Draw.Oval(border+radius,border+radius,radius
Draw.Oval(border+radius,border+radius,radius
black)
Draw.FillOval(border+radius,border+radius,
radius-2,brightred)
circlePic:=Pic.New(0,0,2*border+size,2*
%Thesquare.
Draw.FillBox(border,border,border+size,border
Draw.Box(border,border,border+size,border+
Draw.Box(border+1,border+1,border+size-1,
border+size-1,black)
Draw.FillBox(border+2,border+2,border+size
![Page 359: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/359.jpg)
border+size-2,brightred)
squarePic:=Pic.New(0,0,2*border+size,2*
%Createthepicturebuttons.
Draw.Cls
starButton:=GUI.CreatePictureRadioButton(10,maxy80,
starPic,0,StarPressed)
mapleButton:=GUI.CreatePictureRadioButton(-1,-1,
mapleLeafPic,starButton,MaplePressed)
circleButton:=GUI.CreatePictureRadioButton(-1,-1,
circlePic,mapleButton,CirclePressed)
squareButton:=GUI.CreatePictureRadioButton(-1,-1,
squarePic,circleButton,SquarePressed)
loop
exitwhenGUI.ProcessEvent
endloop
Execute
Details
WhenGUI.CreatePictureRadioButtonorGUI.CreatePictureRadioButtonFulliscalled,thenewlycreatedpicturewillbedisplayedimmediatelyunlessGUI.DisplayWhenCreatedhasbeencalledwiththedisplayparametersettofalse.
Whenapictureradiobuttonisnotenabled,thepictureradiobuttonisgrayedoutandthepicturebuttonnolongerrespondstoanymouseclicksorkeystrokesuntilthebuttonisenabledagain.
Details
ThefollowingGUIsubprogramscanbecalledwithapictureradiobuttonasthewidgetIDparameter:
GUI.Show,GUI.Hide,GUI.Enable,GUI.Disable,GUI.DisposeGUI.GetX,GUI.GetY,GUI.GetWidth,GUI.GetHeight,GUI.SetPosition,GUI.SetSize,GUI.SetPositionAndSize,GUI.SelectRadio
![Page 360: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/360.jpg)
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.CreatePictureRadioButton,notbycallingCreatePictureRadioButton
Seealso
GUI.SelectRadioforselectingapictureradiobuttoninaprogram.SeealsoGUI.CreatePictureButtonandGUI.CreateRadioButtonforinformationonpicturebuttonsandradiobuttons.
![Page 361: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/361.jpg)
GUI.CreateRadioButton[Full] PartofGUImodule
Syntax
GUI.CreateRadioButton(x,y:int,text:string,joinID:int,actionProc:procedurex()):int
GUI.CreateRadioButtonFull(x,y:int,text:string,joinID:int,actionProc:procedurex(),alignment:int,shortCut:char):int
Description
Createsaradiobuttonandreturnstheradiobutton'swidgetID.
Asliderisawidgetthatallowstheusertoselectoneofasetofvalues.Ithasareal-lifeequivalentintheoldcarstereoswhereasinglestationisselectedatatime.Thatis,oneofthebuttonsintheradiogroupisalwaysselected,andifanotherbuttoninthegroupisselected,thepreviouslyselectedbuttonisunselected.
SixRadioButtonsinTwoGroups
Aradiogroupiscreatedbyfirstcreatingasingleradiobutton.Toaddanotherbuttontothegroup,asecondradiobuttoniscreatedspecifyingthefirstradiobuttoninthejoinIDparameter.Subsequentradiobuttonsareadded,eachspecifyingapreviousmemberofthegroupinthejoinIDparameter.
Thexandyparametersspecifythelower-leftcorneroftheradiobutton(unlessalignmentissettoGUI.RIGHT,inwhichcasetheyspecifythelower-rightcorneroftheradiobutton).Iftheseareboth1andjoinIDisnotzero,thenthebuttonwillbeplaceddirectlybelowthepreviousradiobuttoninthegroup.Thetextparameterspecifiesthetext(orlabel)besidetheradiobutton.ThejoinIDparameterspecifiesamemberoftheradiogroupthatthiswidgetshouldjoin.AjoinIDof0sepecifiesthisradiobuttonisnota
![Page 362: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/362.jpg)
memberofanygroup.TheactionProcparameteristhenameofaprocedurethatiscalledwhentheradiobuttonisselected.InGUI.CreateRadioButton,theradiobutton'stextisalwaystotherightoftheactualradiobutton.InGUI.CreateRadioButtonFull,thetextcanbesettotherightorleftoftheradiobuttonwiththealignmentparameter.
ForGUI.CreateRadioButtonFull,thealignmentparameterspecifiesthepositionoftheradiobuttoninrelationtothetextaswellasthemeaningofthexandyparameters.Thealignmentparameterisoneof0,GUI.LEFT,orGUI.RIGHT.Analignmentof0isthedefaultandisthesameasGUI.LEFT.GUI.LEFTmeanstheactualboxinthecheckboxappearstotheleftofthecheckbox'slabeland(x,y)specifythelower-leftcorner.AnalignmentofGUI.RIGHTmeansthattheactualboxappearstotherightoftheradiobutton'slabeland(x,y)specifythelower-rightcorneroftheradiobutton.Theshortcutparameteristhekeystroketobeusedasthebutton'sshortcut.
Aradiobutton'ssizeisnotspecifiedduringcreation.Itisdeterminedbasedonthesizeofthetext.Insteadtheuserspecifiesthelower-leftcorneroftheradiobutton(orthelower-rightiftheradiobuttonisrightjustified).
Thefollowingprogramcreatessixradiobuttonsintwogroups.
importGUI
View.Set("graphics:350;80")
varradio:array1..6ofint%TheradiobuttonIDs.
procedureRadioPressed
Text.Locate(1,1)
put"RadioButton"..
fori:1..6
ifradio(i)=GUI.GetEventWidgetIDthen
puti..
endif
endfor
put"Selected"
endRadioPressed
radio(1):=GUI.CreateRadioButton(15,maxy35,
![Page 363: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/363.jpg)
Example "RadioButton1",0,RadioPressed)
radio(2):=GUI.CreateRadioButton(1,1,"RadioButton2",
radio(1),RadioPressed)
radio(3):=GUI.CreateRadioButton(1,1,"RadioButton3",
radio(2),RadioPressed)
radio(4):=GUI.CreateRadioButtonFull(maxx15,
"RadioButtonA(Shortcut:'a')",0,RadioPressed
GUI.RIGHT,'a')
radio(5):=GUI.CreateRadioButtonFull(1,1,
"RadioButtonB(Shortcut:'b')",radio(4),
GUI.RIGHT,'b')
radio(6):=GUI.CreateRadioButtonFull(1,1,
"RadioButtonC(Shortcut:'c')",radio(5),
GUI.RIGHT,'c')
loop
exitwhenGUI.ProcessEvent
endloop
Execute
Details
Whenagroupofradiobuttonsisselected,thefirstradiobuttoncreatedinthegroupwillbetheselectedone.YoucanchangethisbyusingtheGUI.SelectRadioproceduretoselectadifferentone.
WhenGUI.CreateRadioButtonorGUI.CreateRadioButtonFulliscalled,thenewlycreatedpicturewillbedisplayedimmediatelyunlessGUI.DisplayWhenCreatedhasbeencalledwiththedisplayparametersettofalse.
Whenaradiobuttonisnotenabled,theradiobuttonisgrayedoutandtheradiobuttonnolongerrespondstoanymouseclicksorkeystrokesuntilthebuttonisenabledagain.
ThefollowingGUIsubprogramscanbecalledwitharadiobuttonasthewidgetIDparameter:
![Page 364: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/364.jpg)
Details
GUI.Show,GUI.Hide,GUI.Enable,GUI.Disable,GUI.Dispose,GUI.GetX,GUI.GetY,GUI.GetWidth,GUI.GetHeight,GUI.SetPosition,GUI.SetSize,GUI.SetPositionAndSize,GUI.SetLabel,GUI.SelectRadio
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.CreateRadioButton,notbycallingCreateRadioButton.
SeealsoGUI.SelectRadioforselectingaradiobuttoninaprogram.SeealsoGUI.SetLabelforchangingtheradiobutton'stext.
![Page 365: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/365.jpg)
GUI.CreateTextBox[Full] PartofGUImodule
Syntax
GUI.CreateTextBox(x,y,width,height:int):int
GUI.CreateTextBoxFull(x,y,width,height:int,border,fontID:int):int
Description
Createsatextboxandreturnsthetextbox'swidgetID.
Atextboxisaboxusedfordisplayingtext.Ithasscrollbarsthatactivatewhentextappearsoutsidetheborderofthetextbox.Theusercannotdirectlyselect,editormodifythetextinthetextbox.
Thexandyparametersspecifythelower-leftcorneroftheareainwhichthetextwillbedrawn.ThewidthandheightparametersspecifythewidthandheightofthetextdrawingareaThetextboxborderisjustoutsidethetextdrawingarea.Becauseofthis,GUI.GetXandGUI.GetYwillreturnavalueslightlysmallerthanxandyandGUI.GetWidthandGUI.GetHeightreturnvaluesslightlylargerthanwidthandheight.
ForGUI.CreateTextBox,theborderaroundthetextboxisalwaysaline.ForGUI.CreateTextBoxFull,thetypeofborderisspecifiedbytheborderparameter.Theborderparameterisoneof0,GUI.LINE,GUI.INDENTGUI.EXDENT.Aborderof0isthedefaultandisthesameasGUI.LINEGUI.INDENTandGUI.EXDENTonlydisplayproperlyifthebackgroundcolourhasbeensettograyusingGUI.SetBackgroundColor.GUI.INDENTmakesthetextboxappearindentedorrecessed.GUI.EXDENTmakesthetextboxappeartostandoutfromthewindow.ThefontIDparameterspecifiesthefontIDofthefonttobeusedinthetextbox.ThefontIDisreceivedfromaFont.Newcall.DonotcallFont.FreeforthisfontIDuntilthelabelhasbeendisposedofbycallingGUI.Dispose.
ByusingthefondIDparameter,textboxescanhaveanysizeortypeface.
![Page 366: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/366.jpg)
Atextboxdisplayingthecontentsofafile.
Example
Thefollowingprogramdisplaysthecontentsofafileinatextbox.
importGUI
View.Set("graphics:300;300")
constfileNameToBeViewed:string:="TextBxs.DEM"
vartextBox:int%TheTextFieldID.
vartitle:int%Thelabelforthetitle.
varf:int%Thestreamnumberofthefile.
varline:string%Linestobereadfromthefile.
%Openthefile.
open:f,fileNameToBeViewed,get
iff=0then
put"Unabletoopen"+fileNameToBeViewed+":",
return
endif
%Setbackgroundcolortograyforindentedtextbox.
GUI.SetBackgroundColor(gray)
%Createthetitlelabelandtextbox.
title:=GUI.CreateLabelFull(20,280,fileNameToBeViewed
GUI.CENTER,0)
textBox:=GUI.CreateTextBoxFull(10,10,280,265,
GUI.INDENT,0)
%Readthefileandplaceitinthetextbox.
![Page 367: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/367.jpg)
loop
exitwheneof(f)
get:f,line:*
GUI.AddLine(textBox,line)
endloop
close:f%Closethefile.
loop
exitwhenGUI.ProcessEvent
endloop
Execute
Details
WhenGUI.CreateTextBoxorGUI.CreateTextBoxFulliscalled,thenewlycreatedpicturewillbedisplayedimmediatelyunlessGUI.DisplayWhenCreatedhasbeencalledwiththedisplayparametersettofalse.
Atextboxwidgetisapassivewidgetandcannotbeenabledordisabled.
Details
ThefollowingGUIsubprogramscanbecalledwithatextboxastheparameter:
GUI.Show,GUI.Hide,GUI.Dispose,GUI.GetX,GUI.GetYGUI.GetWidth,GUI.GetHeight,GUI.SetPosition,GUI.SetSizeGUI.SetPositionAndSize,GUI.AddLine,GUI.AddText,GUI.ClearText,GUI.SetTopLine,GUI.SetScrollOnAdd
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.CreateTextBoxnotbycallingCreateTextBox.
GUI.AddLine,GUI.AddTextforaddingtexttothetextbox.Seealso
![Page 368: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/368.jpg)
Seealso GUI.SetTopLinetosetthetoplineoftextinthetextbox.SeealsoGUI.SetScrollOnAddtosetstopthetextboxfromscrollingwhentexttothetextbox.SeealsoGUI.ClearTextforclearingthetextbox.
![Page 369: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/369.jpg)
GUI.CreateTextBoxChoice PartofGUImodule
SyntaxGUI.CreateTextBoxChoice(x,y,width,height:int,border,fontID:int,actionProc:procedurex(line:int
Description
Createsatextboxthatcanbeusedforselectingindividualitemsandreturnsthetextbox'swidgetID.
Atextboxisaboxusedfordisplayingtext.ByusingGUI.AddLinetheprogramcanthenwaitfortheusertodoubleclickonlinesinthetextbox.highlightswhentheuserclicksthelineonce,andcallstheactionprocedurewhentheuserclicksthehighlightedlineasecondtime.Likeatextbox,thetextboxchoicehasscrollbarsthatactivatewhentextappearsoutsidetheborderofthetextbox.Theusercannotdirectlyeditormodifythetextinthetextboxchoice.
Thexandyparametersspecifythelower-leftcorneroftheareainwhichthetextwillbedrawn.ThewidthandheightparametersspecifythewidthandheightofthetextdrawingareaThetextboxborderisjustoutsidethetextdrawingarea.Becauseofthis,GUI.GetXandGUI.GetYwillreturnavalueslightlysmallerthanGUI.GetWidthandGUI.GetHeightwillreturnvaluesslightlylargerthanheight.
ForGUI.CreateTextBox,theborderaroundthetextboxisalwaysaline.ForGUI.CreateTextBoxFull,thetypeofborderisspecifiedbytheborderborderparameterisoneof0,GUI.LINE,GUI.INDENT,orGUI.EXDENTisthedefaultandisthesameasGUI.LINE.GUI.INDENTandGUI.EXDENTdisplayproperlyifthebackgroundcolourhasbeensettograyusingGUI.SetBackgroundColor.GUI.INDENTmakesthetextboxappearindentedorrecessed.GUI.EXDENTmakesthetextboxappeartostandoutfromthewindow.ThefontIDparameterspecifiesthefontIDofthefonttobeusedinthetextbox.TheisreceivedfromaFont.Newcall.DonotcallFont.FreeforthisfontIDuntilthelabelhasbeendisposedofbycallingGUI.Dispose.
ByusingthefontIDparameter,textboxescanhaveanysizeortypeface.
![Page 370: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/370.jpg)
Atextboxchoiceafterauserdoubleclickedaline.
Example
Thefollowingprogramdisplaysthecontentsofafileinatextbox.
importGUI
procedureChoseLine(line:int)
location(1,1)
put"Theuserchose",line
endChoseLine
varx:int:=GUI.CreateTextBoxChoice(20,20,200,100,0,0,
GUI.AddLine(x,"ChooseA")
GUI.AddLine(x,"ChooseB")
GUI.AddLine(x,"ChooseC")
GUI.AddLine(x,"ChooseD")
GUI.AddLine(x,"ChooseE")
GUI.AddLine(x,"ChooseF")
GUI.AddLine(x,"ChooseG")
GUI.AddLine(x,"ChooseH")
GUI.AddLine(x,"ChooseI")
GUI.AddLine(x,"ChooseJ")
loop
exitwhenGUI.ProcessEvent
endloop
Execute
![Page 371: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/371.jpg)
Details
WhenGUI.CreateTextBoxorGUI.CreateTextBoxFulliscalled,thenewlycreatedtextboxchoicewillbedisplayedimmediatelyunlessGUI.DisplayWhenCreatedbeencalledwiththedisplayparametersettofalse.
Details
ThefollowingGUIsubprogramscanbecalledwithatextboxastheparameter:
GUI.Show,GUI.Hide,GUI.Dispose,GUI.GetX,GUI.GetYGUI.GetHeight,GUI.SetPosition,GUI.SetSize,GUI.SetPositionAndSizeGUI.AddLine,GUI.AddText,GUI.ClearText,GUI.SetTopLineGUI.SetScrollOnAdd
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.CreateTextBoxChoicenotbycallingCreateTextBoxChoice.
Seealso
GUI.AddLineforaddingtexttothetextbox.SeealsoGUI.SetTopLinelineoftextinthetextbox.SeealsoGUI.SetScrollOnAddtosetstopthetextboxfromscrollingwhentextisaddedtothetextbox.SeealsoGUI.ClearTexttextbox.
![Page 372: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/372.jpg)
GUI.CreateTextField[Full] PartofGUImodule
Syntax
GUI.CreateTextField(x,y,width:int,text:string,actionProc:procedurex(text:string)):int
GUI.CreateTextFieldFull(x,y,width:int,text:string,actionProc:procedurex(text:string),border,fontID,inputKind:int):int
Description
Createsatextfieldandreturnsthetextfield'swidgetID.
Atextfieldisusedtocreatealineoftextthatcanbeeditedbytheuser.Theusercanusethemousetoselectpartofthetextandcanentertextintothetextfield.
Ifoneormoretextfieldsareenabledinawindow,thenoneofthetextfieldswillbeactive.Thismeansthatwhenanykeystrokesareenteredintothewindow,theactivetextfieldwillreceivethekeystrokes.TheactivetextfieldcanbechangedusingtheGUI.SetActiveprocedure.
Thexandyparametersspecifythelower-leftcorneroftheareainwhichthetextwillbedrawn.Thetextfieldborderisjustoutsidethetextdrawingarea.Thewidthparameterspecifiesthewidthofthetextdrawingarea.Theheightofthetextfieldisdeterminedbytheheightofthefontusedbythetextfield.Theborderofthetextfieldisjustoutsidethetextdrawingarea,soGUI.GetWidthwillreturnvaluesslightlylargerthanwidth.TheactionProcparameterspecifiesthenameoftheproceduretobecalledwhentheuserpressesENTER(RETURNonaMacintosh)whenthetextfieldisactive.Theparameteristhecurrenttextinthetextfield.
ForGUI.CreateTextField,theborderaroundthetextfieldisalwaysaline.ForGUI.CreateTextFieldFull,thetypeofborderisspecifiedbytheparameter.Theborderparameterisoneof0,GUI.LINE,GUI.INDENTGUI.EXDENT.Aborderof0isthedefaultandisthesameasGUI.LINEGUI.INDENTandGUI.EXDENTonlydisplayproperlyifthebackgroundcolourhasbeensettograyusingGUI.SetBackgroundColor.GUI.INDENTmakesthetextfieldappearindentedorrecessed.GUI.EXDENTmakesthetextfieldappeartostandoutfromthewindow.ThefontIDparameterspecifiesthe
![Page 373: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/373.jpg)
fontIDofthefonttobeusedinthetextfield.ThefontIDisreceivedfromaFont.Newcall.DonotcallFont.FreeforthisfontIDuntilthelabelhasbeendisposedofbycallingGUI.Dispose.TheinputKindparameterspecifiesthetypeofinputacceptedbythetextfield.Thisisoneof0,GUI.ANY,orGUI.REAL.Aninputtypeof0isthedefaultandisthesameasGUI.ANYGUI.ANYallowsanytypeofinputinthetextfield.GUI.INTEGERpositiveintegerinputinthetextfield.GUI.REALallowsanyrealnumberinputinthetextfield.Notethatusing
GUI.INTEGERorGUI.REALdoesnotguaranteethatthetextfieldstringcanbeconvertedtoanintegerorareal.Thetextcouldbeanullstring,andforGUI.REALcouldbepartofanumbersuchasthestring""or"1.25E"bothofwhichareillegalnumbers.(Tochecktheconversion,usethestrintokstrrealokfunctionsbeforecallingstrintorstrreal.)
TwoTextFields
Example
ThefollowingprogramcreatesatextfieldandechoesitonthescreenwhentheuserpressesENTER.
importGUI
View.Set("graphics:200;100")
varnameTextField,addressTextField:int%TheTextFieldIDs.
procedureNameEntered(text:string)
GUI.SetSelection(addressTextField,0,0)
GUI.SetActive(addressTextField)
endNameEntered
procedureAddressEntered(text:string)
GUI.SetSelection(nameTextField,0,0)
GUI.SetActive(nameTextField)
endAddressEntered
GUI.SetBackgroundColor(gray)
varquitButton:=GUI.CreateButton(52,5,100,"Quit",
![Page 374: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/374.jpg)
nameTextField:=GUI.CreateTextFieldFull(50,70,100,"",
NameEntered,GUI.INDENT,0,0)
addressTextField:=GUI.CreateTextFieldFull(50,40,100,"",
AddressEntered,GUI.INDENT,0,0)
varnameLabel:=GUI.CreateLabelFull(45,70,"Name",0,0,
GUI.RIGHT,0)
varaddressLabel:=GUI.CreateLabelFull(45,40,"Address",0,0,
GUI.RIGHT,0)
loop
exitwhenGUI.ProcessEvent
endloop
GUI.Dispose(quitButton)
colorback(gray)
Text.Locate(maxrow-1,1)
put"Name=",GUI.GetText(nameTextField)
put"Address=",GUI.GetText(addressTextField)..
Execute
Details
Onlyonetextfieldisactiveatatime.Theactivetextfieldhasablinkingcursor(oritsselectionhighlighted).Ifakeystrokeoccurswhenawindowhasanactivetextfieldinit,thekeystrokewillbedirectedtotheactivetextfield.YoucanchangewhichtextfieldisactivewiththeGUI.SetActiveprocedureorbysimplyclickingonanothertextfieldwiththemouse.
Whenmultipletextfieldsarecreatedinawindow,thefirsttextfieldcreatedisactivewhentheprogrambegins.
Thecurrentversionofthetextfielddoesnotsupportcutandpasteorkeyboardcommandstoextendtheselection.
Becausestringsareamaximumof255characters,thisisthemaximumnumberofcharactersinatextfield.
TheTABcharactercyclesbetweendifferenttextfieldsinawindow.Itcyclesthroughthetextfieldsintheorderinwhichtheywerecreated.BACKTAB
![Page 375: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/375.jpg)
(shift+TAB)cyclesthroughthefieldsinreverseorder.
Details
WhenGUI.CreateTextFieldorGUI.CreateTextFieldFulliscalled,thenewlycreatedpicturewillbedisplayedimmediatelyunlessGUI.DisplayWhenCreatedhasbeencalledwiththedisplayparametersettofalse.
Whenatextfieldisnotenabled,thetextfieldcannotbemadeactiveandthetextinthefieldcannotbeedited.
Details
ThefollowingGUIsubprogramscanbecalledwithatextboxastheparameter:
GUI.Show,GUI.Hide,GUI.Dispose,GUI.GetX,GUI.GetYGUI.GetWidth,GUI.GetHeight,GUI.SetPosition,GUI.SetSizeGUI.SetPositionAndSize,GUI.GetText,GUI.SetText,GUI.SetSelection,GUI.SetActive,GUI.SetEchoChar
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.CreateTextField,notbycallingCreateTextField.
Seealso
GUI.GetTextandGUI.SetTextforreadingandsettingthetextinthetextfield.SeealsoGUI.SetEchoCharforsettingthecharacterechoedwhentheuserentersacharacterinatextfield(oftenusedforenteringpasswords).alsoGUI.SetSelectionforsettingtheselectedareaofthetext.SeealsoGUI.SetActiveformakingthetextfieldactive.
![Page 376: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/376.jpg)
GUI.CreateVerticalScrollBar[Full] PartofGUImodule
Syntax
GUI.CreateVerticalScrollBar(x,y,size:int,min,max,start:int,actionProc:procedurex(value:int)):int
GUI.CreateVerticalScrollBarFull(x,y,size:int,min,max,start:int,actionProc:procedurex(value:int),arrowInc,pageInc,thumbSize:int):int
Createsavertical(up-down)scrollbarandreturnsthescrollbar'swidgetID.
Ascrollbarisawidgetthatallowsuserstoseeapieceofadocumentthatcannotbedisplayedonthescreeninitsentirety.Thepicturebelowshowsaverticalscrollbar.Tocontrolascrollbar,thereareafewchoices:theusercanclickonthethumb(theboxinthescrollbar)andslideitupanddown,ortheusercanclickinthescrollbaritselfaboveorbelowthethumb(inwhichcasethethumbismovedupordownone"page"),ortheusercanclickontheupordownarrowsattheendsofthescrollbar(inwhichcasethethumbismovedupordownone"arrowincrement"or"line").
AVerticalScrollBar
![Page 377: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/377.jpg)
DescriptionTheprogrammerdefinesapageoranarrowincrement.Whenthevalueofthescrollbarchanges,theactionprocedureofthescrollbariscalledwiththenewvalueasaparameter.Theactionprocedureshouldthenredrawthecontentsusingthenewvalueofthescrollbar.
TherangeofvaluesthatthescrollbarwillgiveisdeterminedbytheminandmaxparametersintheCreatecall.Theleftsideofthescrollbarrepresentstheminimumvalue,whiletherightrepresentsthemaximumvalue.Thereisalsothe"thumbsize".Thisrepresentstherangeofvaluesthatcanbeseenatonceonthescreen.
Bydefault,thearrowincrement(theamountthevalueischangedwhenthescrollingarrowsarepressed)issettoone.Thepageincrement(theamountthevalueischangedwhentheuserclicksinthebartotherightorleftofthethumb)issettoonequarterthedifferencebetweentheminimumandthemaximum.The"thumbsize"issettozero(seethedescriptionofscrollbarsforanexplanationofthethumbsize).
Thexandyparametersspecifythelower-leftcornerofthescrollbar.Thesizeparameterspecifiesthelengthofthescrollbar(includingthearrows)inpixels.Theminandmaxparametersaretheminimumandmaximumvaliesreturnedbythescrollbar.Thestartparameteristheinitialvalueofthescrollbarandshouldbebetweenminandmaxinclusive.TheactionProcparameteristhenameofaprocedurethatiscalledwhenthevalueofthescrollbarischanged.Theparametertotheactionprocedureisthecurrentvalueofthescrollbar.
Thefollowingprogramcreatesaverticalscrollbar.Wheneverthescrollbar'svalueischanged,amessageisdisplayedinthewindow.
importGUI
View.Set("graphics:125;200,nobuttonbar")
varscrollBar:int
![Page 378: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/378.jpg)
ExampleprocedureScrollBarMoved(value:int)
Text.Locate(9,7)
put"Scroll"
Text.Locate(10,8)
put"Bar"
Text.Locate(11,8)
putvalue:3
endScrollBarMoved
scrollBar:=GUI.CreateVerticalScrollBar(10,10,180,
50,150,50,ScrollBarMoved)
loop
exitwhenGUI.ProcessEvent
endloop
Execute
Description
ForGUI.CreateVerticalScrollBarFull,thearrowIncparameterspecifiesthearrowincrement(theamountthescrollbar'svalueischangedwhenthescrollarrowsarepressed).ThepageIncspecifiesthepageincrement(theamountthescrollbar'svalueischangedwhentheuserclicksinthepageleft/rightsectionofthescrollbar).ThethumbSizeparameterspecifiesthe"thumbsize".Seethescrollbarexplanationformoredetailonascrollbar's"thumbsize".
Forexample,ifyouhaveawindowthatcandisplay20linesoftextatonceandthereare100linesoftext,youwouldsetminto1,maxto100andthumbSizeto20.Thevaluereturnedbythescrollbarwouldthenbethelinenumberofthefirstlineonthescreentobedisplayed.Whenthescrollbarwasatitsmaximumvalue,itwouldreturn81,sincebydoingso,lines81-100wouldbedisplayed.
ExampleForanexampleprogramthatscrollsalargepictureoverasmallerwindow,seeGUI.CreateHorizontalScrollBar.
![Page 379: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/379.jpg)
Details
Insomeinstances,youwillwantthetheminimumandmaximumvaluesofthescrollbartobereversed(right/topisminimum).Inthatcase,calltheGUI.SetSliderReverseproceduretoflipthevaluesofthescrollbar.
Scrollbarsalwayshaveafixedheight(forhorizontalscrollbars)orwidth(forverticalscrollbars).Togetthescrollbar'swidth,usetheGUI.GetScrollBarWidthfunction.
WhenGUI.CreateVerticalScrollBarorGUI.CreateVerticalScrollBarFulliscalled,thenewlycreatedscrollbarwillbedisplayedimmediatelyunlessGUI.DisplayWhenCreatedhasbeencalledwiththedisplayparametersettofalse.
Whenascrollbarisnotenabled,thegrayinthebarissettowhiteandthethumbisnotdisplayed.Thescrollbarnolongerrespondstoanymouseclicksuntilthescrollbarisenabledagain.
Details
ThefollowingGUIsubprogramscanbecalledwithascrollbarasthewidgetIDparameter:
GUI.Show,GUI.Hide,GUI.Enable,GUI.Disable,GUI.Dispose,GUI.GetX,GUI.GetY,GUI.GetWidth,GUI.GetHeight,GUI.SetPosition,GUI.SetSize,GUI.SetPositionAndSize,GUI.GetSliderValue,GUI.SetSliderValue,GUI.SetSliderMinMax,GUI.SetSliderSize,GUI.SetSliderReverse,GUI.SetScrollAmount
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.CreateVerticalScrollBar,notbycallingCreateVerticalScrollBar.
GUI.GetSliderValueandGUI.SetSliderValueforreadingandsettingthevalueofascrollbar,GUI.SetSliderMinMaxfor
![Page 380: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/380.jpg)
Seealsochangingtheminimumandmaximumvaluesofascrollbar,andGUI.SetScrollAmountforchangingthescrollingincrementsandthumbsizeofascrollbar.SeealsoGUI.SetSliderSizeforsettingthelengthofascrollbarandGUI.SetSliderReverseforreversingthesenseofascrollbar.
![Page 381: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/381.jpg)
GUI.CreateVerticalSlider PartofGUImodule
Syntax
GUI.CreateVerticalSlider(x,y,length:int,min,max,start:int,actionProc:procedurex(value:int)):int
Description
Createsavertical(up-down)sliderandreturnstheslider'swidgetID.
Asliderisawidgetthatallowstheusertosetacontinuoussetofvalues.Ithasareal-lifeequivalentinthingssuchasastereovolumecontrol.
AVerticalSlider
Tocontrolaslider,theuserclicksonthesliderboxanddragsitbackandforth.Everytimethevaluechanges,aprocedureiscalledwiththenewvalueasaparameter.
TherangeofvaluesthatthesliderwillgiveisdeterminedbytheminandmaxparametersintheCreatecall.Theleftsideofthesliderrepresentstheminimumvalue,whiletherightrepresentsthemaximumvalue.
Thexandyparametersspecifythelower-leftcorneroftheslidertrack.Thismeansthattheslideractuallyextendsaboveandbelowthispoint(andslightlytotheleftofittotakeintoaccounttheroundedendofthetrack).Thelengthparameterspecifiesthe
![Page 382: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/382.jpg)
lengthofthetrackinpixels.(YoucanuseGUI.GetX,GetY,GetWidth,andGetHeighttogettheexactdimensionsoftheslider.)Theminandmaxparametersaretheminimumandmaximumvaliesreturnedbytheslider.Thestartparameteristheinitialvalueofthesliderandshouldbebetweenminandmaxinclusive.TheactionProcparameteristhenameofaprocedurethatiscalledwhenthevalueofthesliderischanged.Theparametertotheactionprocedureisthecurrentvalueoftheslider.
Example
Thefollowingprogramcreatesaverticalslider.Whenevertheslider'svalueischanged,amessageisdisplayedinthewindow.
importGUI
View.Set("graphics:125;200,nobuttonbar")
varslider:int
procedureSliderMoved(value:int)
Text.Locate(9,7)
put"Slider"
Text.Locate(10,9)
putvalue:3
endSliderMoved
slider:=GUI.CreateVerticalSlider(20,10,180,
50,150,50,SliderMoved)
loop
exitwhenGUI.ProcessEvent
endloop
Execute
Insomeinstances,youwillwantthetheminimumandmaximumvaluesoftheslidertobereversed(rightisminimum).Inthatcase,calltheGUI.SetSliderReverseproceduretoflipthevaluesoftheslider.
![Page 383: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/383.jpg)
Details
Slidersalwayshaveafixedheight(forhorizontalsliders)orwidth(forverticalsliders).
WhenGUI.CreateVerticalSliderorGUI.CreateVerticalSliderFulliscalled,thenewlycreatedsliderwillbedisplayedimmediatelyunlessGUI.DisplayWhenCreatedhasbeencalledwiththedisplayparametersettofalse.
Whenasliderisnotenabled,theappearancedoesnotchange.However,theslidernolongerrespondstoanymouseclicksuntilitisenabledagain.
Details
ThefollowingGUIsubprogramscanbecalledwithasliderasthewidgetIDparameter:
GUI.Show,GUI.Hide,GUI.Enable,GUI.Disable,GUI.Dispose,GUI.GetX,GUI.GetY,GUI.GetWidth,GUI.GetHeight,GUI.SetPosition,GUI.SetSize,GUI.SetPositionAndSize,GUI.GetSliderValue,GUI.SetSliderValue,GUI.SetSliderMinMax,GUI.SetSliderSize,GUI.SetSliderReverse
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.CreateVerticalSlider,notbycallingCreateVerticalSlider.
Seealso
GUI.GetSliderValueandGUI.SetSliderValueforreadingandsettingthevalueofaslider,GUI.SetSliderMinMaxforchangingtheminimumandmaximumvaluesofaslider.SeealsoGUI.SetSliderSizeforsettingthelengthofasliderandGUI.SetSliderReverseforreversingthesenseofaslider.
![Page 384: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/384.jpg)
GUI.Disable PartofGUImodule
Syntax GUI.Disable(widgetID:int)
Description
DisablesawidgetspecifiedbywidgetID.
UsedinconjunctionwithGUI.Enabletoenableanddisablewidgets.
Disabledwidgetsgenerallyare"grayedout"tovisuallydepicttheirdisabledstatus.
Disabledwidgetsdonotrespondtokeystrokesormouseclicks.
Example
Thethreecolorradiobuttonsareenabledonlywhenthecolorcheckboxisselected.
importGUIin"%oot/lib/GUI"
View.Set("graphics:100;100")
varcolorCheckBox,redRadio,greenRadio,blueRadio
procedureDoNothing
endDoNothing
procedureColorCheckBoxProc(filled:boolean)
iffilledthen
GUI.Enable(redRadio)
GUI.Enable(greenRadio)
GUI.Enable(blueRadio)
else
GUI.Disable(redRadio)
GUI.Disable(greenRadio)
GUI.Disable(blueRadio)
endif
endColorCheckBoxProc
colorCheckBox:=GUI.CreateCheckBox(10,80,
"UseColor",ColorCheckBoxProc)
redRadio:=GUI.CreateRadioButton(33,60,"Red",0,
greenRadio:=GUI.CreateRadioButton(1,1,"Green",
redRadio,DoNothing)
blueRadio:=GUI.CreateRadioButton(1,1,"Blue",
greenRadio,DoNothing)
ColorCheckBoxProc(false)
![Page 385: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/385.jpg)
loop
exitwhenGUI.ProcessEvent
endloop
Details
Thefollowingtypesofwidgetscanbeenabledordisabled:
Buttons,CheckBoxes,RadioButtons,PictureButtons,
PictureRadioButtons,HorizontalScrollBars,HorizontalSliders,Canvases,TextFields,VerticalScrollBars,VerticalSliders
Status
Exportedqualified.
ThismeansthatyoucanonlycalltheprocedurebycallingGUI.DisablenotbycallingDisable.
Seealso GUI.Enable.
![Page 386: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/386.jpg)
GUI.Dispose PartofGUImodule
Syntax GUI.Dispose(widgetID:int)
Description
EliminatesthewidgetspecifiedbywidgetID.
Ifthewidgetisvisible,itisimmediatelymadeinvisiblebeforebeingdeleted.Itshouldbecalledinordertofreeupanymemorythatthewidgetmighthaveallocated.Notethatyoucannotusethewidgetafterithasbeendisposedof.Ifyouwishtotemporarilygetridofawidget,considerusingtheHidemethodandthentheShowmethodwhenyouwanttouseitagain.
Example
ThefollowingprogramwaitsfortheQuitbuttontobepressed.Whenitis,theQuitbuttonisdeletedandamessageisdisplayedinthecenterofthescreen.
importGUIin"%oot/lib/GUI"
View.Set("graphics:150;100")
varbutton,message:int
button:=GUI.CreateButton(20,40,0,"Quit",GUI.Quit
loop
exitwhenGUI.ProcessEvent
endloop
GUI.Dispose(button)
message:=GUI.CreateLabelFull(0,0,"Done",maxx
GUI.CENTER+GUI.MIDDLE,0)
Status
Exportedqualified.
ThismeansthatyoucanonlycalltheprocedurebycallingGUI.Dispose,notbycallingDispose.
![Page 387: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/387.jpg)
GUI.Draw... PartofGUImodule
Syntax
GUI.DrawArc(widgetID,x,y,xRadius,yRadius:int,initialAngle,finalAngle,Color:int)
GUI.DrawBox(widgetID,x1,y1,x2,y2,Color:int)
GUI.DrawCls(widgetID:int)
GUI.DrawDot(widgetID,x,y,Color:int)
GUI.DrawFill(widgetID,x,y:int,fillColor,borderColor:int)
GUI.DrawFillArc(widgetID,x,y:int,xRadius,yRadius:int,initialAngle,finalAngle,Color:int)
GUI.DrawFillBox(widgetID,x1,y1,x2,y2:int,Color:int)
GUI.DrawFillMapleLeaf(widgetID,x1,y1:int,x2,y2,Color:int)
GUI.DrawFillOval(widgetID,x,y:int,xRadius,yRadius:int,Color:int)
GUI.DrawFillPolygon(widgetID:int,x,y:array1..*ofint,n:int,Color:int)
GUI.DrawFillStar(widgetID,x1,y1,x2,y2:int,Color:int)
GUI.DrawLine(widgetID,x1,y1,x2,y2,Color:int)
GUI.DrawMapleLeaf(widgetID,x1,y1,x2,y2:int,Color:int)
GUI.DrawOval(widgetID,x,y:int,
![Page 388: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/388.jpg)
xRadius,yRadius,Color:int)
GUI.DrawPolygon(widgetID:int,x,y:array1..*ofint,n:int,Color:int)
GUI.DrawStar(widgetID,x1,y1,x2,y2,Color:int)
GUI.DrawText(widgetID:int,textStr:string,x,y:int,fontID,Color:int)
Description
PerformsaDraw…commandtothecanvasspecifiedbywidgetID.
Alloftheseroutinesareessentiallythesameasthesimilarly-namedproceduresintheDrawmodule.Allcoordinatesarebasedonthecanvasandalldrawingisclippedtothecanvasdrawingsurface.Ifthecanvasisin"xormode",allthedrawingwillbedonewith"xor"set.(SeeView.Setformoreinformationabout"xor".)
ThewidgetIDmustspecifyacanvaswidget.
Example SeeGUI.CreateCanvasforanexampleofGUI.DrawFillOval.
Status
Exportedqualified.
ThismeansthatyoucanonlycalltheproceduresbycallingGUI.Draw…,notbycallingDraw….
Seealso GUI.CreateCanvas.
![Page 389: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/389.jpg)
GUI.Enable PartofGUImodule
Syntax GUI.Enable(widgetID:int)
Description
EnablesadisabledwidgetspecifiedbywidgetID.
UsedinconjunctionwithGUI.Disabletoenableanddisablewidgets.
Disabledwidgetsgenerallyare"grayedout"tovisuallydepicttheirdisabledstatus.
Disabledwidgetsdonotrespondtokeystrokesormouseclicks.
ExampleSeeGUI.DisableforanexampleofGUI.Enable.
Details
Thefollowingtypesofwidgetscanbeenabledordisabled:
Buttons,CheckBoxes,RadioButtons,PictureButtons,
PictureRadioButtons,HorizontalScrollBars,HorizontalSliders,Canvases,TextFields,VerticalScrollBars,VerticalSliders
StatusExportedqualified.
ThismeansthatyoucanonlycalltheprocedurebycallingGUI.Enable,notbycallingEnable.
SeealsoGUI.Disable.
![Page 390: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/390.jpg)
GUI.FontDraw PartofGUImodule
SyntaxGUI.FontDraw(widgetID:int,textStr:string,x,y,fontID,Color:int)
Description
PerformsaFont.DrawcommandtothecanvasspecifiedbywidgetID.
ThisroutineisessentiallythesameastheFont.DrawprocedureintheFontmodule.Allcoordinatesarebasedonthecanvasandalldrawingisclippedtothecanvasdrawingsurface.Ifthecanvasisin"xormode",allthedrawingwillbedonewith"xor"set.(SeeView.Setformoreinformationabout"xor".)
ThewidgetIDmustspecifyacanvaswidget.
Status
Exportedqualified.
ThismeansthatyoucanonlycalltheprocedurebycallingGUI.FontDraw,notbycallingFontDraw.
Seealso GUI.CreateCanvas.
![Page 391: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/391.jpg)
GUI.GetCheckBox PartofGUImodule
Syntax GUI.GetCheckBox(widgetID:int):boolean
Description
ReturnsthestatusofthecheckboxspecifiedbywidgetID.Ifthecheckboxisset(hasanXinit),GetCheckBoxreturnstrue,otherwiseitreturnsfalse.
ExampleSeeGUI.CreateCheckBoxforanexampleofGUI.GetCheckBox.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.GetCheckBox,notbycallingGetCheckBox.
Seealso GUI.CreateCheckBox.
![Page 392: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/392.jpg)
GUI.GetEventTime PartofGUImodule
Syntax GUI.GetEventTime:int
Description
Returnsthetimeinmillisecondswhentheevent(mousebuttonorkeystroke)tookplace.ThisvalueisthesamevalueasTime.Elapsedreturnsifcalledwhentheeventwasprocessed.Thisfunctionshouldonlybecalledinanactionproceduredefaultmouse,keystroke,ornulleventhandler,asitwillreturn1whenthereisnoeventbeingprocessed.
Thiseventcanbeusedasatimerforvariousfunctionssuchasdeterminingwhetherasingleclickoradoubleclickofthemousebuttontookplaceorfortimingkeyboardinput.
Example
Thefollowingprogramtimestheintervalbetweentwobuttonpresses.
importGUIin"%oot/lib/GUI"
View.Set("graphics:300;100")
varstartTime,startButton,finishButton:int
procedureStart
startTime:=GUI.GetEventTime
endStart
procedureFinish
Text.Locate(1,1)
put"Thetimebetweenbuttonpressedis",
GUI.GetEventTimestartTime,"msecs"
GUI.Quit
endFinish
startButton:=GUI.CreateButton(10,10,110,"ClickFirst",
finishButton:=GUI.CreateButton(180,10,110,"ClickSecond",
loop
exitwhenGUI.ProcessEvent
endloop
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.GetEventTimebycallingGetEventTime.
![Page 393: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/393.jpg)
Seealso GUI.ProcessEvent.
![Page 394: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/394.jpg)
GUI.GetEventWidgetID PartofGUImodule
Syntax GUI.GetEventWidgetID:int
Description
ReturnsthewidgetIDofthewidgetthatwasactivatedbythemousebuttonpressorthekeystroke.Thisfunctionshouldonlybecalledinanactionprocedure,asitwillreturn1whenthereisnoeventthatactivatedawidgetbeingprocessed.
Thisfunctionisusedwhenaseveralbuttonsusethesameactionproceduretodeterminewhichbuttonwaspressed.
Example
Thefollowingprogramprintsamessagestatingwhichbuttonwasselected.
importGUIin"%oot/lib/GUI"
View.Set("graphics:150;210")
varbuttonNames:array1..5ofstring:=init
"Blue","Yellow","Purple")
varbuttons:array1..5ofint
procedureButtonPush
fori:1..5
ifGUI.GetEventWidgetID=buttons(i)then
Text.Locate(1,1)
putbuttonNames(i),"selected"
endif
endfor
endButtonPush
fori:1..5
buttons(i):=GUI.CreateButton(10,21040*
buttonNames(i),ButtonPush)
endfor
loop
exitwhenGUI.ProcessEvent
endloop
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.GetEventWidgetID,notbycallingGetEventWidgetID.
![Page 395: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/395.jpg)
Seealso GUI.ProcessEvent.
![Page 396: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/396.jpg)
GUI.GetEventWindow PartofGUImodule
Syntax GUI.GetEventWindow:int
Description
ReturnsthewindowIDofthewindowinwhichtheevent(mousebuttonorkeystroke)tookplace.Thisfunctionshouldonlybecalledinanactionprocedureorinadefaultmouseorkeystrokeeventhandler,asitwillreturn1whenthereisnoeventbeingprocessed.
Thisfunctioniscommonlyusedwhenseveralwindowssharethesamelayout.Thesamebuttonsineachwindowpointtothesameactionproceduresdeterminewhichbuttonwasactuallypressed,thefunctioniscalledtogetthewindow.
Example
Thefollowingprogramcreatesfourwindowsinarow,eachwithabuttonthat,whenpressed,causesastartobedrawninthatwindow.
importGUIin"%oot/lib/GUI"
procedureDrawStar
varwindowID:int:=GUI.GetEventWindow
Window.Select(windowID)
Draw.FillStar(25,40,175,190,Rand.Int(10,15))
endDrawStar
fori:0..3
varwindow:int:=Window.Open("graphics:200;200")
%Placewindowabovetaskbar,acrossfrompreviousone.
Window.SetPosition(window,220*i,27)
varbutton:int:=GUI.CreateButton(5,5,190,"DrawStar",
DrawStar)
endfor
loop
exitwhenGUI.ProcessEvent
endloop
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.GetEventWindow,notbycallingGetEventWindow.
![Page 397: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/397.jpg)
Seealso GUI.ProcessEvent.
![Page 398: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/398.jpg)
GUI.GetHeight PartofGUImodule
Syntax GUI.GetHeight(widgetID:int):int
Description
Returnstheactualheightofawidget.NotethatthismaybedifferentfromtheheightspecifiedintheCreatecall(especiallysincemanywidgetsdonotspecifyaheight.TheGUImoduledeterminestheactualheight).
ThisfunctionisusedinconjunctionwithGUI.GetX,GUI.GetYandGUI.GetWidthtodeterminetheboundsofawidget.Theentirewidgetshouldalwaysfitinthebox(GUI.GetX,GUI.GetY)-(GUI.GetX+GUI.GetWidth1,GUI.GetY+GUI.GetHeight1)
Thepositionandsizeofawidgetisknownonlyafterithasbeendrawntothescreen.Attemptingtogetthelocationordimesionsofthewidgetmaycauseanuninitializedvariableerror.
Example
ThefollowingproceduredrawsaredboxaroundthewidgetspecifiedbywidgetID.
importGUIin"%oot/lib/GUI"
procedureBoxWidget(widgetID:int)
varx,y,width,height:int
x:=GUI.GetX(widgetID)
y:=GUI.GetY(widgetID)
width:=GUI.GetWidth(widgetID)
height:=GUI.GetHeight(widgetID)
Draw.Box(x1,x1,x+width,y+height,
Draw.Box(x2,x2,x+width+1,y+height
endBoxWidget
vartitle:int:=GUI.CreateLabel(20,20,"FrameThis!")
BoxWidget(title)
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.GetHeight,notbycallingGetHeight.
![Page 399: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/399.jpg)
Seealso GUI.GetX,GUI.GetY,andGUI.GetWidth.
![Page 400: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/400.jpg)
GUI.GetMenuBarHeight PartofGUImodule
Syntax GUI.GetMenuBarHeight:int
Description
Returnstheheightofthemenubar.Usefulwhendrawingorplacingwidgetstomakecertainthattheydon'toverlapthemenubar.
Example
Thefollowingprogramdrawsaredboxinthewindowjustbelowethemenubar.
importGUIin"%oot/lib/GUI"
varmenu:int:=GUI.CreateMenu("File")
varitem:int:=GUI.CreateMenuItem("Quit",GUI.Quit
Draw.FillBox(0,0,maxx,maxyGUI.GetMenuBarHeight
brightred)
loop
exitwhenGUI.ProcessEvent
endloop
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.GetMenuBarHeight,notbycallingGetMenuBarHeight.
Seealso GUI.CreateMenu.
![Page 401: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/401.jpg)
GUI.GetScrollBarWidth PartofGUImodule
Syntax GUI.GetScrollBarWidth:int
DescriptionReturnsthewidthofascrollbar.Usefulwhenplacingascrollbarwidgetbeneathorbesideanotherwidgetorobject.
Example
SeetheScrollPicprograminGUI.CreateHorizontalScrollBarFullforanexampleofGUI.GetScrollBarWidth.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.GetScrollBarWidth,notbycallingGetScrollBarWidth.
SeealsoGUI.CreateHorizontalScrollBarandGUI.CreateVerticalScrollBar.
![Page 402: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/402.jpg)
GUI.GetSliderValue PartofGUImodule
Syntax GUI.GetSliderValue(widgetID:int):int
Description
ReturnsthecurrentvalueofasliderorscrollbarspecifiedbywidgetID.ThewidgetIDmustspecifyeitherscrollbaroraslider(horizontalorvertical).
Example
SeetheScrollPicprograminGUI.CreateHorizontalScrollBarFullforanexampleofGUI.GetSliderValue.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.GetSliderValue,notbycallingGetSliderValue.
Seealso
GUI.SetSliderValueforsettingasliderorscrollbar'svalue.SeealsoGUI.CreateHorizontalScrollBar,GUI.CreateVerticalScrollBar,GUI.CreateHorizontalSlider,andGUI.CreateVerticalSlider.
![Page 403: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/403.jpg)
GUI.GetText PartofGUImodule
Syntax GUI.GetText(widgetID:int):string
DescriptionReturnsthecurrenttextofatextfieldspecifiedbywidgetID.ThewidgetIDmustspecifyatextfieldwidget.
Example SeeGUI.CreateTextFieldforanexampleofGUI.GetText.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.GetText,notbycallingGetText.
SeealsoGUI.SetTextforsettingthetextinatextfield.SeealsoGUI.CreateTextField.
![Page 404: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/404.jpg)
GUI.GetVersion PartofGUImodule
Syntax GUI.GetVersion:int
Description
ReturnsthecurrentversionoftheGUIProcedureLibrary.BecausetheGUIProcedureLibraryisexpectedtogrow,newversionswillprobablybemadeavailableatourwebsitehttp://www.holtsoft.com/turing.Ifyouwishtousefeaturesthatdonotappearinearlierversionsofthelibrary,youcanhaveyourprogramcheckthatthecurrentavailableversionmeetstheprogramsneeds.GUI.GetVersionreturnsanintegerfrom100-999andisreadas1.00to9.99.
Example
ThefollowingprogramfragmentimmediatelyexitsifOOTdoesnotsupportversion1.1oftheGUIProcedureLibrary
importGUIin"%oot/lib/GUI"
ifGUI.GetVersion<110then
put"Youmustupdatetoatleastversion1.1ofthe"
put"GUIProcedureLibrarytousethisprogram."
return
endif
DetailsInversion1.00(shippedwithMacOOT1.5),GUI.GetVersiondidnotexist.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.GetVersion,notbycallingGetVersion.
![Page 405: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/405.jpg)
GUI.GetWidth PartofGUImodule
Syntax GUI.GetWidth(widgetID:int):int
Description
Returnstheactualwidthofawidget.NotethatthismaybedifferentfromthewidthspecifiedintheCreatecall(especiallysincesomewidgetsdonotspecifyawidth.TheGUImoduledeterminestheactualwidth).
ThisfunctionisusedinconjunctionwithGUI.GetX,GUI.GetYandGUI.GetHeighttodeterminetheboundsofawidget.Theentirewidgetshouldalwaysfitinthebox(GUI.GetX,GUI.GetY)-(GUI.GetX+GUI.GetWidth1,GUI.GetY+GUI.GetHeight1)
Thepositionandsizeofawidgetisknownonlyafterithasbeendrawntothescreen.Attemptingtogetthelocationordimesionsofthewidgetmaycauseanuninitializedvariableerror.
Example
ThefollowingproceduredrawsaredboxaroundthewidgetspecifiedbywidgetID.
importGUIin"%oot/lib/GUI"
procedureBoxWidget(widgetID:int)
varx,y,width,height:int
x:=GUI.GetX(widgetID)
y:=GUI.GetY(widgetID)
width:=GUI.GetWidth(widgetID)
height:=GUI.GetHeight(widgetID)
Draw.Box(x1,x1,x+width,y+height,
Draw.Box(x2,x2,x+width+1,y+height
endBoxWidget
vartitle:int:=GUI.CreateLabel(20,20,"FrameThis!")
BoxWidget(title)
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.GetWidth,notbycallingGetWidth.
Seealso GUI.GetX,GUI.GetY,andGUI.GetHeight.
![Page 406: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/406.jpg)
GUI.Get{X,Y} PartofGUImodule
SyntaxGUI.GetX(widgetID:int):int
GUI.GetY(widgetID:int):int
Description
Returnsthexcoordinateoftheleftedgeofawidget.Notethatthismaybedifferentfromthexcoordinatespecifiedinthewidget'sCreatecall.Forexample,ifaradiobuttoniscreatedwithrightjustification,thexcoordinateintheCreatemethodspecifiestherightedgewhileGUI.GetXwillreturnthexcoordinateoftheleftedge.
ThisfunctionisusedinconjunctionwithGUI.GetWidthandGUI.GetHeighttodeterminetheboundsofawidget.Theentirewidgetshouldalwaysfitinthebox(GUI.GetX,GUI.GetY)-(GUI.GetX+GUI.GetWidth-1,GUI.GetY+GUI.GetHeight-1)
Thepositionandsizeofawidgetisknownonlyafterithasbeendrawntothescreen.Attemptingtogetthelocationordimesionsofthewidgetmaycauseanuninitializedvariableerror.
Example
ThefollowingproceduredrawsaredboxaroundthewidgetspecifiedbywidgetID.
importGUIin"%oot/lib/GUI"
procedureBoxWidget(widgetID:int)
varx,y,width,height:int
x:=GUI.GetX(widgetID)
y:=GUI.GetY(widgetID)
width:=GUI.GetWidth(widgetID)
height:=GUI.GetHeight(widgetID)
Draw.Box(x1,x1,x+width,y+height,
Draw.Box(x2,x2,x+width+1,y+height
endBoxWidget
vartitle:int:=GUI.CreateLabel(20,20,"FrameThis!")
BoxWidget(title)
Exportedqualified.
![Page 407: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/407.jpg)
Status ThismeansthatyoucanonlycallthefunctionbycallingGUI.GetX,notbycallingGetX.
Seealso GUI.GetHeightandGUI.GetWidth.
![Page 408: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/408.jpg)
GUI.Hide PartofGUImodule
Syntax GUI.Hide(widgetID:int)
Description
HidesawidgetspecifiedbywidgetID.UsedinconjunctionwithShowtohideandshowwidgets.Hiddenwidgetscannotgetevents(i.e.respondtokeystrokesormouseclicks).Ifanactivetextfield(seetextfield)ishidden,thenanykeystrokesinthewindowwillbeignored.
Inmostcaseswhereawidgetistoappear,thendisappear,thenappearagain,itisadvisedtocreatethewidgetonceandhideituntilitistoappear,whereuponGUI.Showiscalled.Whentheuserisfinishedwiththewidget,thewidgetishiddenusingGUI.Hide.Thissavestheoverheadofcreatinganddisposingofthesamewidgetseveraltimes.
Example SeeGUI.SetDisplayWhenCreatedforanexampleofGUI.Hide.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.Hide,notbycallingHide.
Seealso GUI.Show.
![Page 409: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/409.jpg)
GUI.HideMenuBar PartofGUImodule
Syntax GUI.HideMenuBar
Description
Hidesthemenubarintheselectedwindow.Nomenuitemscanbeselectedwhenthemenubarishidden.(Menuitemshortcutsareignoredwhilethemenubarishidden.)
ExampleSeeGUI.SetMouseEventHandlerforanexampleofGUI.HideMenuBar.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.HideMenuBar,notbycallingHideMenuBar.
Seealso GUI.ShowMenuBar.SeealsoGUI.CreateMenu.
![Page 410: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/410.jpg)
GUI.HideWindow PartofGUImodule
Syntax GUI.HideWindow(window:int)
Description
Hidesawindowwithwidgetsinit.ThisproceduremakescertainthattheGUILibraryrecognizesthatthewindownolongervisible.ThisprocedurewillcallWindow.Hide,sothereisnoneedfortheusertodoso.
Example
Theprogramopensupawindowwithtwobuttons.Ifthebuttonlabelled"CloseandOpen"ispressed,thewindowisclosedandanewwindowwithtwobuttonsisopenedinarandomlocationonthescreen.
importGUI
varwindowA,windowB:int
varbuttonA,buttonB,buttonQuit:int
varbackToMainA,backToMainB:int
procedureShowWindowA
GUI.HideWindow(defWinID)
GUI.ShowWindow(windowA)
endShowWindowA
procedureShowWindowB
GUI.HideWindow(defWinID)
GUI.ShowWindow(windowB)
endShowWindowB
procedureShowMain
GUI.HideWindow(Window.GetActive)
GUI.ShowWindow(defWinID)
endShowMain
View.Set("graphics:280;100,nobuttonbar")
%Placethebuttonsinthemainwindow
buttonA:=GUI.CreateButton(10,10,0,"ShowWindowA",
buttonB:=GUI.CreateButton(150,10,0,"ShowWindowB",
buttonQuit:=GUI.CreateButton(100,60,0,"Quit",
windowA:=Window.Open("title:WindowA,graphics:150;100,position:bottom;left")
backToMainA:=GUI.CreateButton(20,20,0,"BacktoMain",
Window.Hide(windowA)
windowB:=Window.Open("title:WindowB,graphics:150;100,position:bottom;right")
backToMainB:=GUI.CreateButton(20,20,0,"BacktoMain",
Window.Hide(windowB)
![Page 411: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/411.jpg)
loop
exitwhenGUI.ProcessEvent
endloop
Execute
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.HideWindowbycallingHideWindow.
SeealsoGUI.ShowWindowforshowingawindowwithwidgetsinit.SeealsoGUI.CloseWindowforclosingawindowwithwidgetsinit.
![Page 412: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/412.jpg)
GUI.OpenFile PartofGUImodule
Syntax GUI.OpenFile(title:string):string
Description
Displaysan"OpenFile"dialogboxtoobtainthenameofanalreadyexistingfile.Thecaption(awindowtitleunderMSWindows,astringinaMacintoshdialogbox)isspecifiedbythetitleparameter.Thefunctionusesadialogboxspecifictotheoperatingsystemtheprogramisbeingrunon.
Iftheuserdidnotchooseafile(i.e.hittheCancelbuttoninthedialog),thefunctionreturns""(theemptystring).
Note:ThisfunctionisnotavailableinthecurrentversionoftheGUIProcedureLibrary(shippingwithTuring4.0andMacOOT1.5).ItisdocumentedhereforusewithfutureshippingversionofTuring.ItislikelytobeimplementedintheversionofTuringreleasedinSeptember2002.Checkthereleasenotesthatarefoundintheon-linehelptofindoutifthisfunctionisnowavailable.
Example
Thefollowingprogramaskstheuserforthenameofafileandthenechoesthecontentsofit.
importGUIin"%oot/lib/GUI"
varfileName,line:string
varstreamNumber:int
fileName:=GUI.OpenFile("ChooseaTextFile")
open:streamNumber,fileName,get
assertstreamNumber>0
loop
exitwheneof(streamNumber)
get:streamNumber,line:*
putline
endloop
close:streamNumber
Exportedqualified.
![Page 413: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/413.jpg)
Status ThismeansthatyoucanonlycallthefunctionbycallingGUI.OpenFile,notbycallingOpenFile.
![Page 414: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/414.jpg)
GUI.OpenFileFull PartofGUImodule
SyntaxGUI.OpenFileFull(title,filter:string,startDir:string):string
Description
Displaysan"OpenFile"dialogboxtoobtainthenameofanalreadyexistingfile.Thecaption(awindowtitleunderMSWindows,astringinaMacintoshdialogbox)isspecifiedbythetitleparameter.Thelistoffilesshownisspecifiedbythefilterparameter.Theinitialdirectorytobedisplayedisspecifiedbytheparameter.Thefunctionusesadialogboxspecifictotheoperatingsystemtheprogramisbeingrunon.
Thefilterparameterisafilenamesuffixthatshouldbedisplayed.Multiplesuffixescanbespecifiedbyseparatingthemwithcommas.Iftheuserspecifiestheemptystringforfilter,thenallthefilesinthedirectoryaredisplayed.IfthestartDirparameterisempty,orifitspecifiesanon-existentdirectory,thenthecurrentdirectoryisdisplayedinthe"OpenFile"dialogbox.
Iftheuserdidnotchooseafile(i.e.hittheCancelbuttoninthedialog),thefunctionreturns""(theemptystring).
Note:ThisfunctionisnotavailableinthecurrentversionoftheGUIProcedureLibrary(shippingwithTuring4.0andMacOOT1.5).ItisdocumentedhereforusewithfutureshippingversionofTuring.ItislikelytobeimplementedintheversionofTuringreleasedinSeptember2002.Checkthereleasenotesthatarefoundintheon-linehelptofindoutifthisfunctionisnowavailable.
Example
Thefollowingprogramaskstheusertoselectafileendingin".txt".TheinitialdirectoryistherootdirectoryoftheCdrive.
importGUIin"%oot/lib/GUI"
varfileName:string
fileName:=GUI.OpenFileFull("ChooseaTextFile","txt","C:\\")
DetailsIfasuffixisplacedinsinglequotes,itwillbeignoredonallbuttheAppleMacintosh,whereitwillspecifyaMacintoshfiletype.
Theexamplemakesthedialogboxdisplayallfilesendingin".txt"or".text"on
![Page 415: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/415.jpg)
ExampleallsystemsbuttheMacintosh.OntheAppleMacintosh,onlyfilesoffiletype'TEXT'willbedisplayed.
fileName:=GUI.OpenFileFull("Open","txt,text,'TEXT'","")
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.OpenFileFullbycallingOpenFileFull.
![Page 416: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/416.jpg)
GUI.Pic... PartofGUImodule
Syntax
GUI.PicDraw(widgetID:int,picID,x,y,mode:int)
GUI.PicNew(widgetID:int,x1,y1,x2,y2:int):int
GUI.PicScreenLoad(widgetID:int,fileName:string,x,y,mode:int)
GUI.PicScreenSave(widgetID:int,x1,y1,x2,y2:int,fileName:string)
Description
PerformsaPic…commandtothecanvasspecifiedbywidgetID.
Alloftheseroutinesareessentiallythesameasthesimilarly-namedproceduresinthePicmodule.Allcoordinatesarebasedonthecanvasandalldrawingisclippedtothecanvasdrawingsurface.
Example
SeetheScrollPicprograminGUI.CreateHorizontalScrollBarFullforanexampleofGUI.PicDraw.
Status
Exportedqualified.
ThismeansthatyoucanonlycalltheproceduresbycallingGUI.Pic…,notbycallingPic….
Seealso GUI.CreateCanvas.
![Page 417: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/417.jpg)
GUI.ProcessEvent PartofGUImodule
Syntax GUI.ProcessEvent:boolean
Description
Thisfunctionprocessesasingleevent(amousebuttonpressorakeystroke).Iftheeventactivatesawidget,thentheactionprocedureofthewidgetiscalled.
ThefunctionreturnsfalseuntilGUI.Quitiscalled.Itthenreturnstrue
Inorderforthewidgetstofunctiononceplaced,theGUI.ProcessEventmustbecalledcontinually.WithoutacalltoGUI.ProcessEvent,thewidgetswillappear,butwillnotreacttomouseclicksorkeystrokes.
AlmostallprogramsinvolvingtheGUIProcedureLibraryhavethefollowingcodefragmentintheprogram.Thiscodefragmentisoftencalledtheeventloop
loop
exitwhenGUI.ProcessEvent
endloop
ThelooprunscontinuouslyuntilGUI.Quitiscalled,whereuponGUI.ProcessEventwillreturntrueandtheloopwillexit.Therestoftheprogramisreachedthroughtheactionproceduresthatarecalledwhentheuserinteractswithvariouswidgets.
Details
Itisusuallydesirabletoallowtheusersomewayofquittingtheprogramwithouthavingtoabortit.ThiscanbedonemostsimplybyaddingaQuitbuttonandplacingitinanappropriatelocation.
Example
Hereisprogramthatdoesnothingbutwaitfortheusertopressthequitbutton.
importGUIin"%oot/lib/GUI"
varquitButton:int:=GUI.CreateButton(10,10,0,"Quit",
loop
exitwhenGUI.ProcessEvent
endloop
Tofindoutwhichwidgetwasactivatedandcalledtheactionprocedureifseveralwidgetshavethesameactionprocedure),youcancallGUI.GetEventWidgetID.Togettheexacttimethattheeventoccurred,youcan
![Page 418: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/418.jpg)
Details
callGUI.GetEventTime.Togetthewindowinwhichtheeventtookplace,youcancallGUI.GetEventWindow.
Ifamouseclickoccured,butdidnotactivateanywidget,thenthedefaultmouseeventhandleriscalled.Bydefault,thisdoesnothing.However,ifyouwantyourprogramtorespondtomouseeventsthatdonotaffectawidget,callGUI.SetMouseEventHandlertospecifyyourowndefaultmouseeventhandler.
Ifakeystrokeoccurred,butdidnotactivateanywidget(i.e.itwasn'tashortcutforawidgetandtherearenotextfieldsinthewindow)thenthedefaultkeystrokehandleriscalled.Bydefault,thisdoesnothing.However,ifyouwantyourprogramtorespondtokeystrokeeventsthatdonotaffectawidget,callGUI.SetKeyEventHandlertospecifyyourowndefaultkeyeventhandler.
Ifnoeventoccurred,thenthenulleventhandleriscalled.Bydefault,thisdoesnothing.However,ifyouwantyourprogramtoperformsomeactionrepetetivelywhenitisnotdoinganythingelse,thencallGUI.SetNullEventHandleryourownnulleventhandler.Thenulleventhandlerisoftenusedforsuchthingsasupdatingaclockandmakingcertainthatmusicisplayinginthebackground.
Status
Exportedqualified.
ThismeansthatyoucanonlycalltheproceduresbycallingGUI.PProcessEventnotbycallingProcessEvent.
Seealso
GUI.GetEventWidgetID,GUI.GetEventTime,andGUI.GetEventWindowobtaininginformationaboutaneventinanactionprocedure.SeealsoGUI.SetMouseEventHandler,GUI.SetKeyEventHandlerandGUI.SetNullEventHandlerforhandlingmouse,keyboardandnulleventsintheeventloop.SeealsoGUI.Quitforinformationonexittingtheevent
![Page 419: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/419.jpg)
GUI.Quit PartofGUImodule
Syntax GUI.Quit
Description
ThisprocedurecausesGUI.ProcessEventtoreturntrue.Iftheprogramisstructuredproperlywitha
loop
exitwhenGUI.ProcessEvent
endloop
attheendoftheprogram,thentheprogramwillexittheloopaftercurrentactionprocedure.ThisprocedureisusuallycalledfromtheprocedureofaQuitbuttonorExitmenuitem.
Example
Hereisprogramthatdoesnothingbutwaitfortheusertopressthequitbuttonortypetheletter'Q','q','X',or'x'.
importGUI
procedureKeyHandler(ch:char)
ifch='Q'orch='q'orch='X'orch='x'
GUI.Quit
endif
endKeyHandler
varquitButton:int:=GUI.CreateButton(10,10,0,"Quit",
GUI.SetKeyEventHandler(KeyHandler)
loop
exitwhenGUI.ProcessEvent
endloop
put"Done!"
Status
Exportedqualified.
ThismeansthatyoucanonlycalltheproceduresbycallingGUI.QuitcallingQuit.
SeealsoGUI.ProcessEvent.SeealsoGUI.ResetQuitforresettingthe"quit"flag,sothatasecondeventloopcanbeusedinthesameprogram.
![Page 420: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/420.jpg)
GUI.Refresh PartofGUImodule
Syntax GUI.Refresh
Description
Thisroutineredrawsallthewidgetsinthecurrently-selectedwindow.Thisisusedwhensomeformofdrawingmayhaveoverwrittenthewidgetsinawindow.
Itisoftenusedwhenthereissomepossibilitythatthewidgetsmayhavebeendrawnover.Forexample,aprogramthatplacesbuttonsontopofabackgroundimageshouldcallGUI.Refreshwhentheimageischanged.
DetailsGUI.RefreshisusedbytheGUILibrarytoredrawallthewidgetswhenthebackgroundcolourofawindowhaschanged.
Status
Exportedqualified.
ThismeansthatyoucanonlycalltheproceduresbycallingGUI.Refresh,notbycallingRefresh.
![Page 421: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/421.jpg)
GUI.ResetQuit PartofGUImodule
Syntax GUI.ResetQuit
Description
TheGUI.ResetQuitprocedureresetsthe"quitting"flagthatissetbytheTheGUI.ResetQuitcanbeusedwheneveryouwanttohaveaprogramthatexitsmainprocessingloop,doessomework,andthenreenterstheprocessingloop.
WithoutGUI.ResetQuit,theprogramwillexitthesecondloopimmediatelybecauseGUI.ProcessEventwillreturntrue.
Thisprogramallowstheusertoselectthecolorthatstarsaretobedrawnin.pressesthebutton,theprogramexitsthefirsteventloopanddrawsthestars.anotherbuttonandenteringasecondeventloop,itcallsGUI.ResetQuit
importGUI
varradio:array1..4ofint
varbutton:int
varstarColor:int:=red
%Actionproceduresfortheradiobuttons
procedureRed
starColor:=brightred
endRed
procedureGreen
starColor:=brightgreen
endGreen
procedureBlue
starColor:=brightblue
endBlue
procedureCyan
starColor:=brightcyan
endCyan
%Createtheradiobuttons
radio(1):=GUI.CreateRadioButton(15,maxy-35,"Red",0,
radio(2):=GUI.CreateRadioButton(-1,-1,"Green",
radio(3):=GUI.CreateRadioButton(-1,-1,"Blue",
radio(4):=GUI.CreateRadioButton(-1,-1,"Cyan",
%Createthepushbutton
![Page 422: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/422.jpg)
Example button:=GUI.CreateButton(100,maxy-70,0,"DrawStars",
%Processeventsuntilthe"DrawStars"buttonispressed
loop
exitwhenGUI.ProcessEvent
endloop
%Disposeofalltheradiobuttonsandthepushbutton
fori:1..4
GUI.Dispose(radio(i))
endfor
GUI.Dispose(button)
%Drawabunchofstars-Nomorehandlingofeventsorwidgets
fori:1..100
varx:int:=Rand.Int(0,maxx-20)
vary:int:=Rand.Int(0,maxy-20)
Draw.FillStar(x,y,x+20,y+20,starColor)
endfor
%Createanewbutton
button:=GUI.CreateButton(300,10,0,"Quit",
%Resetthequitflag.Withoutthisstatement,theloopfollowingwould
%exitimmediatelybecausethequitflagwassetinthepreviousloop
GUI.ResetQuit
%Processeventsuntilthe"Quit"buttonispressed
loop
exitwhenGUI.ProcessEvent
endloop
%Closethewindow
GUI.CloseWindow(defWinID)
Execute
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.ResetQuitResetQuit.
![Page 423: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/423.jpg)
GUI.SaveFile PartofGUImodule
Syntax GUI.SaveFile(title:string):string
Description
Displaysan"SaveFile"dialogboxtoobtainthenameofafile.Thecaption(awindowtitleunderMSWindows,astringinaMacintoshdialogbox)isspecifiedbythetitleparameter.Thefunctionusesadialogboxspecifictotheoperatingsystemtheprogramisbeingrunon.
Iftheuserdidnotchooseafile(i.e.hittheCancelbuttoninthedialog),thefunctionreturns""(theemptystring).
Note:ThisfunctionisnotavailableinthecurrentversionoftheGUIProcedureLibrary(shippingwithTuring4.0andMacOOT1.5).ItisdocumentedhereforusewithfutureshippingversionofTuring.Checkthereleasenotesthatarefoundintheon-linehelptofindoutifthisfunctionisnowavailable.
Example
Thefollowingprogramaskstheuserforthenameofafileandthenwritesthenumbers1to10init.
importGUIin"%oot/lib/GUI"
varfileName:string
varstreamNumber:int
fileName:=GUI.SaveFile("ChooseaTextFile")
open:streamNumber,fileName,put
assertstreamNumber>0
fori:1..10
put:streamNumber,i
endloop
close:streamNumber
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.SaveFile,notbycallingSaveFile.
![Page 424: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/424.jpg)
GUI.SaveFileFull PartofGUImodule
SyntaxGUI.SaveFileFull(title,filter:string,startDir:string):string
Description
Displaysan"SaveFile"dialogboxtoobtainthenameofanalreadyexistingfile.Thecaption(awindowtitleunderMSWindows,astringinaMacintoshdialogbox)isspecifiedbythetitleparameter.Thelistoffilesshownisspecifiedbythefilterparameter.TheinitialdirectorytobedisplayedisspecifiedbythestartDirparameter.Thefunctionusesadialogboxspecifictotheoperatingsystemtheprogramisbeingrunon.
Thefilterparameterisafilenamesuffixthatshouldbedisplayed.Multiplesuffixescanbespecifiedbyseparatingthemwithcommas.Iftheuserspecifiestheemptystringforfilter,thenallthefilesinthedirectoryaredisplayed.IfthestartDirparameterisempty,orifitspecifiesanon-existentdirectory,thenthecurrentdirectoryisdisplayedinthe"OpenFile"dialogbox.
Iftheuserdidnotchooseafile(i.e.hittheCancelbuttoninthedialog),thefunctionreturns""(theemptystring).
Note:ThisfunctionisnotavailableinthecurrentversionoftheGUIProcedureLibrary(shippingwithTuring4.0andMacOOT1.5).ItisdocumentedhereforusewithfutureshippingversionofTuring.Checkthereleasenotesthatarefoundintheon-linehelptofindoutifthisfunctionisnowavailable.
Example
Thefollowingprogramsegmentaskstheuserforthenameofafileendingin".txt".TheinitialdirectoryistherootdirectoryoftheCdrive.
varfileName:string:=GUI.SaveFileFull("ChooseaTextFile",
"txt","C:\\")
DetailsIfasuffixisplacedinsinglequotes,itwillbeignoredonallbuttheAppleMacintosh,whereitwillspecifyaMacintoshfiletype.
![Page 425: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/425.jpg)
Example
Thefollowingprogramsegmentaskstheuserforthenameofafile.Itdisplaysfilesoftype'TEXT'.Theinitialdirectoryisthe"TuringPrograms"directoryonthe"MacintoshHD"volume.
varfileName:string:=GUI.SaveFileFull("ChooseaTextFile",
"'TEXT'","MacintoshHD:TuringPrograms")
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.SaveFileFull,notbycallingSaveFileFull.
![Page 426: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/426.jpg)
GUI.SelectRadio PartofGUImodule
Syntax GUI.SelectRadio(widgetID:int)
DescriptionSelectsaradiobuttonspecifiedbywidgetID.Thepreviously-selectedradiobuttonis"de-selected".Theactionprocedureoftheradiobuttoniscalled.
Example
Thefollowingprogramcreatessizradiobuttons.Selectingoneofthebuttonscausethebottomtworadiobuttonstobecomeselected.
importGUIin"%oot/lib/GUI"
View.Set("graphics:350;110")
varradio:array1..6ofint%TheradiobuttonIDs.
procedureRadioPressed
Text.Locate(1,1)
fori:1..6
ifradio(i)=GUI.GetEventWidgetIDthen
put"RadioButton",i,"Selected"
endif
endfor
endRadioPressed
procedureSelect
GUI.SelectRadio(radio(3))
GUI.SelectRadio(radio(6))
endSelect
radio(1):=GUI.CreateRadioButton(15,maxy35,
"RadioButton1",0,RadioPressed)
radio(2):=GUI.CreateRadioButton(1,1,"RadioButton2",
radio(1),RadioPressed)
radio(3):=GUI.CreateRadioButton(1,1,"RadioButton3",
radio(2),RadioPressed)
radio(4):=GUI.CreateRadioButtonFull(maxx15,
"RadioButton4",0,RadioPressed,GUI.RIGHT
radio(5):=GUI.CreateRadioButtonFull(1,1,"RadioButton5",
radio(4),RadioPressed,GUI.RIGHT,GUI.NONE
radio(6):=GUI.CreateRadioButtonFull(1,1,"RadioButton6",
radio(5),RadioPressed,GUI.RIGHT,GUI.NONE
varselectButton:int:=GUI.CreateButton(15,10,100,
"SelectBottomButtons",Select)
varquitButton:int:=GUI.CreateButton(maxx15100,10,100,
"Quit",GUI.Quit)loop
![Page 427: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/427.jpg)
exitwhenGUI.ProcessEvent
endloop
Status
Exportedqualified.
ThismeansthatyoucanonlycalltheproceduresbycallingGUI.SelectRadio,notbycallingSelectRadio.
Seealso GUI.CreateRadioButtonandGUI.CreatePictureRadioButton.
![Page 428: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/428.jpg)
GUI.SetActive PartofGUImodule
Syntax GUI.SetActive(widgetID:int)
Description
MakesatextfieldspecifiedbywidgetIDactive.Ifthetextfieldisnotinanactivewindow,thenthetextfieldwillbecomeactivewhenthewindowdoes.Ifanothertextfieldwasactiveinthewindow,itisdeactivated.
Example SeeGUI.CreateTextFieldforanexampleofGUI.SetActive.
Status
Exportedqualified.
ThismeansthatyoucanonlycalltheproceduresbycallingGUI.SetActive,notbycallingSetActive.
Seealso GUI.CreateTextField.
![Page 429: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/429.jpg)
GUI.SetBackgroundColor PartofGUImodule
Syntax GUI.SetBackgroundColor(Color:int)
Description
Changesthebackgroundcolourofthecurrently-selectedwindowtothecolorspecifiedbyColor.Thisdoesnotchangethevalueofcolor0inthewindow.Insteaditfillstheentirewindowwiththenewbackgroundcolorandthenredrawsallthewidgets.
Forindentedandextendeditems,thebackgroundcolorisassumedtobesettogray.
ThealternatespellingisGUI.SetBackgroundColour
ExampleSeeGUI.CreateFrameforanexampleofGUI.SetBackgroundColour.
Status
Exportedqualified.
ThismeansthatyoucanonlycalltheproceduresbycallingGUI.SetBackgroundColor,notbycallingSetBackgroundColor.
![Page 430: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/430.jpg)
GUI.SetCheckBox PartofGUImodule
Syntax GUI.SetCheckBox(widgetID:int,status:boolean)
Description
SetsthestatusofacheckboxspecifiedbywidgetID.Ifstatusistrue,thecheckboxisfilled(markedwithan'X').Ifstatusisfalse,thecheckboxissetempty.GUI.SetCheckBoxcallsthecheckbox'sactionprocedurewiththenewstatusandredrawsthewidgetwiththenewstatus.
ExampleSeeGUI.CreateCheckBoxforanexampleofGUI.SetCheckBox.
Status
Exportedqualified.
ThismeansthatyoucanonlycalltheproceduresbycallingGUI.SetCheckBox,notbycallingSetCheckBox.
Seealso GUI.CreateCheckBox.
![Page 431: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/431.jpg)
GUI.SetColor PartofGUImodule
Syntax GUI.SetColor(widgetID:int,clrNumber:int)
Description
TheGUI.SetColorprocedureisusedbuttonstochangethecolorofabutton.ThecolorisspecifiedbytheclrNumberparameter.TheedgesofthebuttonareadarkerversionofthecolorspecifiedbyclrNumbergeneralyoushouldusebrightercolorsforbuttons.
Example
Thisprogramdisplaysthreebuttonswithdifferentcolors.
importGUI
procedureDoNothing
endDoNothing
varb1:=GUI.CreateButton(100,100,0,"PushMe",
GUI.SetColor(b1,brightred)
varb2:=GUI.CreateButton(100,140,0,"PushMe",
GUI.SetColor(b2,brightgreen)
varb3:=GUI.CreateButton(100,180,0,"PushMe",
GUI.SetColor(b3,brightblue)
loop
exitwhenGUI.ProcessEvent
endloop
Execute
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.SetColornotbycallingSetColor.
![Page 432: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/432.jpg)
GUI.SetDefault PartofGUImodule
Syntax GUI.SetDefault(widgetID:int,default:boolean)
Description
Setsthe"defaultstatus"ofabuttonspecifiedbywidgetID.Ifabuttonisthedefaultbutton,thenitisdrawnwithaheavyoutlineanditisactivatedwhentheuserpressesENTER.
Onlyonebuttoncanbethedefaultbuttonperwindow.Ifabuttonissettobethedefaultbutton,thenthepreviousdefaultbuttonhasits"defaultstatus"removed.
Status
Exportedqualified.
ThismeansthatyoucanonlycalltheproceduresbycallingGUI.SetDefault,notbycallingSetDefault.
Seealso GUI.CreateButton.
![Page 433: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/433.jpg)
GUI.SetDisplayWhenCreated PartofGUImodule
Syntax GUI.SetDisplayWhenCreated(display:boolean)
Description
Bydefault,wheneverawidgetiscreatedwithaGUI.Create…procedure,thewidgetinstantlyappears.Sometimes,thisisnotthedesiredbehaviour.Forexample,ifseveralwidgetsaretooccupythesamelocationwithonlyonebeingdisplayedatatime,thenitisdesirablenottohavethewidgetappearwhenfirstcreated.
Ifawidgetisnotdisplayedwhencreated,thenGUI.Showmustbecalledtomakethewidgetvisible.
Ifthedisplayparameteristrue,thenwidgetsaredisplayedimmediatelyuponcreation.Ifthedisplayparameterissettofalse,thenthewidgetisnotmadevisibleoncreationandGUI.Showmustbecalledtodisplaythewidget.
Example
Thefollowingprogramtogglesthevisiblilityoftheframewhenthebuttonispushed.Theframestartsoutinvisible.
importGUIin"%oot/lib/GUI"
View.Set("graphics:150;100")
varvisible:boolean:=false
varbutton,frame:int
procedureToggle
ifvisiblethen
GUI.Hide(frame)
else
GUI.Show(frame)
endif
visible:=notvisible
endToggle
button:=GUI.CreateButton(25,40,0,"ToggleFrame",
GUI.SetDisplayWhenCreated(false)
frame:=GUI.CreateFrame(10,10,140,90,0)
loop
exitwhenGUI.ProcessEvent
endloop
![Page 434: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/434.jpg)
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.SetDisplayWhenCreated,notbycallingSetDisplayWhenCreated
![Page 435: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/435.jpg)
GUI.SetEchoChar PartofGUImodule
Syntax GUI.SetEchoChar(widgetID:int,echoChar:char)
Description
TheGUI.SetEchoCharprocedureisusedwithtextfields,especiallywhenusingatextfieldtoinputapassword.WhentheGUI.SetEchoChariscalledwithatextfield,anycharacterenteredintothetextfieldwillappearasthecharacterspecifiedbyinputChar
Thisallowsyoutousethetextfieldtoenterapassword.ThecharactersthattheusertypeswillbeechoedwiththecharacterspecifiedbyinputChar(oftenanasterisk).
Example
Thisprogramdisplaysatextfield.Astheuserenterscharacters,eachcharacterisrepresentedasa'*'.Whentheuserentersreturn,theprogramexitsafterdisplayingtheactualtextenteredintothetextfield.
importGUI
procedureEchoString(s:string)
put"Youentered\"",s,"\""
GUI.Quit
endEchoString
vartf:=GUI.CreateTextField(10,100,100,"",
GUI.SetEchoChar(tf,'*')
loop
exitwhenGUI.ProcessEvent
endloop
Execute
Details
NotethattheechoCharargumenttoGUI.SetEchoCharmustbeacharacter,notastring.Thismeansthecharactershouldbeenclosedinsinglequotemarks('),notdoublequotes(").
![Page 436: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/436.jpg)
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.SetEchoChar,notbycallingSetEchoChar.
![Page 437: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/437.jpg)
GUI.SetKeyEventHandler PartofGUImodule
SyntaxGUI.SetKeyEventHandler(keyEventHandler:procedurex(ch:char))
Description
Setsthenewdefaultkeystrokeeventhandler.ThekeyEventHandlerthenameofaprocedurethatiscalledeverytimeGUI.ProcessEventthereisakeystrokewhichisnothandledbyanywidget.ThechparameterinthekeyEventHandleristhekeystroketypedbytheuser.
Thisprocedureisoftenusedtoallowformorethanoneshortcutcharacterforagivenbutton.
Example
Thefollowingprogramdrawsastarorquitsdepeningonthebutton.TheDrawStarbuttoncanbeactivatedbyclickingonitortyping'D','d','S','s'orCtrl+S.TheQuitbuttoncanbeactivatebytyping'Q','q'orCtrl+Q.TheDrawStarbuttonisalsothedefaultbutton.ItisactivatedwhenevertheuserpressesENTER.
importGUI
View.Set("graphics:220;200")
procedureDrawStar
Draw.FillStar(25,40,175,190,Rand.Int(10,15))
endDrawStar
procedureKeyHandler(ch:char)
ifch='q'orch='^Q'then
Draw.Cls
GUI.Quit
elsifch='d'orch='^d'orch='S'orch
DrawStar
endif
endKeyHandler
GUI.SetKeyEventHandler(KeyHandler)
varbutton:int:=GUI.CreateButtonFull(5,5,100,"DrawStar",
DrawStar,0,'D',true)
varquitButton:int:=GUI.CreateButtonFull(115,5,100,"Quit",
GUI.Quit,0,'Q',false)
loop
exitwhenGUI.ProcessEvent
endloop
Exportedqualified.
![Page 438: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/438.jpg)
StatusThismeansthatyoucanonlycallthefunctionbycallingGUI.SetKeyEventHandler,notbycallingSetKeyEventHandler.
Seealso GUI.ProcessEvent.
![Page 439: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/439.jpg)
GUI.SetLabel PartofGUImodule
Syntax GUI.SetLabel(widgetID:int,text:string)
Description
ChangesthetextofawidgetspecifiedbywidgetIDtotext.Thisprocedurecanacceptabutton,checkbox,radiobutton,label,oralabelledframewidgetasthewidgetIDparameter.
Inmostcases,ifthetextwillnotfitinthewidget'scurrentsize,thewidgetwillberesizedtofitthetext.Ifthewidgetwasmadelargertofitthetextandthenthetextischanged,thewidgetwillberesizedasappropriatefortheoriginalwidthspecifiedandthenewtext.
Example
Thefollowingprogramchangesthetextinthebuttonwheneverakeystrokeoccurs.Whenthetextischangedbackto"Quit",thebuttonassumesawidthof100again.
importGUIin"%oot/lib/GUI"
View.Set("graphics:220;50")
varshort:boolean:=true
varbutton:int
procedureKeyHandler(ch:char)
ifshortthen
GUI.SetLabel(button,"PressThisButtontoQuit")
else
GUI.SetLabel(button,"Quit")
endif
short:=notshort
endKeyHandler
GUI.SetKeyEventHandler(KeyHandler)
button:=GUI.CreateButton(10,5,100,"Quit",
loop
exitwhenGUI.ProcessEvent
endloop
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.SetLabel,notbycallingSetLabel.
![Page 440: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/440.jpg)
Seealso
GUI.CreateButton,GUI.CreateCheckBox,GUI.CreateRadioButton,GUI.CreateLabel,andGUI.CreateLabelledFrame.
![Page 441: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/441.jpg)
GUI.SetMouseEventHandler PartofGUImodule
SyntaxGUI.SetMouseEventHandler(mouseEventHandler:procedurex(mx,my:int))
Description
Setsthenewdefaultmouseeventhandler.ThemouseEventHandlerparameteristhenameofaprocedurethatiscalledeverytimeGUI.ProcessEventiscalledandthereisamousebuttondownwhichisnothandledbyanywidget.ThemxandmyparametersinthemouseEventHandlerarethelocationofmousewhenthebuttonwaspressed.
Thisprocedureisusedbyprogramstoallowformouseinputinaprogramthatuseswidgets.
Thisisaprogramthatallowstheusertoplacestarsonthescreen.Themenubarallowstheusertoquittheprogramatanytime.Theusercanalsotoggletheappearanceofthemenubarbypressinganykey.
importGUI
varstarX,starY,starColor:array1..100ofint
varnumStars:int:=0
varmenuVisible:boolean:=true
procedureDrawStar(i:int)
ifmenuVisiblethen
View.ClipSet(0,0,maxx,
maxyGUI.GetMenuBarHeight)
endif
Draw.FillStar(starX(i)20,starY(i)20,
starY(i)+20,starColor(i))View.ClipOff
endDrawStar
procedureRedraw
fori:1..numStars
DrawStar(i)
endfor
Text.Locate(maxrow,1)
put"Pressanykeytotogglemenubar"..
endRedraw
procedureKeyHandler(ch:char)
![Page 442: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/442.jpg)
Example ifmenuVisiblethen
GUI.HideMenuBarelse
GUI.ShowMenuBar
endif
menuVisible:=notmenuVisible
Redraw
endKeyHandler
procedureMouseHandler(x,y:int)
ifnumStars=100then
Text.Locate(maxrow,1)
put"Maximumnumberofstarsexceeded!"..
return
endif
numStars+=1
starX(numStars):=x
starY(numStars):=y
starColor(numStars):=Rand.Int(9,15)
DrawStar(numStars)
endMouseHandler
varmenu:int:=GUI.CreateMenu("File")
varmenuItem:int:=GUI.CreateMenuItemFull("Quit",
GUI.Quit,'^Q',false)
GUI.SetKeyEventHandler(KeyHandler)
GUI.SetMouseEventHandler(MouseHandler)
Redraw
loop
exitwhenGUI.ProcessEvent
endloop
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.SetMouseEventHandler,notbycallingSetMouseEventHandler.
Seealso GUI.ProcessEvent.
![Page 443: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/443.jpg)
GUI.SetNullEventHandler PartofGUImodule
SyntaxGUI.SetNullEventHandler(nullHandler:procedurex())
Description
Setsthenewnulleventhandler.ThenullHandlerparameteristhenameofaprocedurethatiscalledeverytimeGUI.ProcessEventiscalledandtherearenomousebuttonpressesorkeystrokestobeprocessed.
Thisisusedbyprogramsthatneedtocallsubprogramsoften,butdonotwishtointerrupttheactionofuserwidgets.
Example
ThefollowingprogramhasaQuitbutton.Whennowidgetsarebeingprocessed,aclockinthecornerisupdated.
importGUI
View.Set("graphics:220;50")
varoldTime:string:=""
varbutton:int
procedureNullHandler
varnewTime:string:=Time.Date
newTime:=newTime(11..*)
ifnewTimenot=oldTimethen
Text.Locate(maxrow,maxcol9)
putnewTime..
oldTime:=newTime
endif
endNullHandler
GUI.SetNullEventHandler(NullHandler)
button:=GUI.CreateButton(10,5,100,"Quit",
loop
exitwhenGUI.ProcessEvent
endloop
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.SetNullEventHandler,notbycallingSetNullEventHandler
![Page 444: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/444.jpg)
Seealso GUI.ProcessEvent.
![Page 445: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/445.jpg)
GUI.SetPosition PartofGUImodule
Syntax GUI.SetPosition(widgetID,x,y:int)
Description
MovesawidgetspecifiedbywidgetIDtothelocation(x,y).Ifthewidgetisvisible,itismovedimmediatelytothenewlocation.Ifthewidgetishidden,itwillappearatthenewlocationwhentheShowprocedureiscalled.NotethatthexandyspecifiedherearethesameasintheCreatemethod.Forexample,ifyouhadspecifiedacheckboxtoberightjustifiedintheCreateCheckBoxFullfunction,then(x,y)inacalltoSetPositionwouldspecifythelower-rightcornerasopposedtothelower-leftcorner.
Example
Thefollowingprogrammovesthebuttoneverytimethebuttonispressed.
importGUIin"%oot/lib/GUI"
varbutton:int
procedureMoveButton
varnewX,newY:int
newX:=Rand.Int(0,maxxGUI.GetWidth(button
newY:=Rand.Int(0,maxyGUI.GetHeight(button
GUI.SetPosition(button,newX,newY)
endMoveButton
button:=GUI.CreateButton(100,100,0,"MoveButton",
MoveButton)
loop
exitwhenGUI.ProcessEvent
endloop
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.SetPosition,notbycallingSetPosition.
![Page 446: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/446.jpg)
GUI.SetPositionAndSize PartofGUImodule
SyntaxGUI.SetPositionAndSize(widgetID,x,y:int,width,height:int)
Description
ChangesthepositionandsizeofthewidgetspecifiedbywidgetIDsimultaneously.Thex,y,widthandheightparametershavethesamemeaningasintheGUI.Createfunctionforthatwidget.Anywidgetexceptamenuoramenuitemcanberesized,althoughforsomewidgets,thewidthorheightparametermaybeignored.
GUI.SetPositionAndSizeworksthesamewayastheGUI.SetPositionandGUI.SetSizeprocedures.
Example
Thefollowingprogrammovesandresizesthebuttoneverytimethebuttonispressed.
importGUIin"%oot/lib/GUI"
varbutton,minWidth,minHeight:int
procedureMoveButton
varnewX,newY,newWidth,newHeight:int
newWidth:=max(minWidth,Rand.Int(0,200))
newHeight:=max(minHeight,Rand.Int(0,100))
newX:=Rand.Int(0,maxxnewWidth)
newY:=Rand.Int(0,maxynewHeight)
GUI.SetPositionAndSize(button,newX,newY,
newWidth,newHeight)
endMoveButton
button:=GUI.CreateButton(100,100,0,"MoveButton",
MoveButton)
minHeight:=GUI.GetHeight(button)
minWidth:=GUI.GetWidth(button)
loop
exitwhenGUI.ProcessEvent
endloop
Status
Exportedqualified.
Thismeansthatyoucanonlycallthefunctionbycalling
![Page 447: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/447.jpg)
GUI.SetPositionAndSize,notbycallingSetPositionAndSize.
![Page 448: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/448.jpg)
GUI.SetScrollAmount PartofGUImodule
SyntaxGUI.SetScrollAmount(widgetID:int,arrowInc,pageInc,thumbSize:int)
Description
Setsascrollbar'sarrowincrement,pageincrementandthumbsize.Redrawsthescrollbartotakeintoaccountthenewthumbsize.ThewidgetIDspecifiesthescrollbartobechanged.ThearrowIncparameteristhenewarrowincrement(theamountthescrollbar'svalueischangedwhenthescrollarrowsarepressed).Avalueof1meanstousethepreviously-definedarrowincrementvalue.ThepageIncparameterspecifiesthenewpageincrement(theamountthescrollbar'svalueischangedwhentheuserclicksinthepageup/downsectionofthescrollbar).Avalueof1meanstousethepreviously-definedpageincrementvalue.Thespecifieshenewthumbsize.Seethescrollbarexplanationformoredetailonascrollbar'sthumbsize.Avalueof1meanstousethepreviously-definedthumbsize.
Thefollowingprogramdisplaysanimageinacanvasinawindow.Iftheimageislargerthanthecanvas,scrollbarstothebottomandleftareusedtoallowtheusertoseetheentireimage.Atextfieldallowsuserstoloadadditionalimageswheneverthe"LoadFile"buttonispressed.
%The"ScrollPic2"program.
importGUIin"%oot/lib/GUI"
%Themaximumwidth/heightofthecanvas.
constmaxSize:int:=220
constleftBorder:int:=15%Leftmargin.
constbottomBorder:int:=25%Bottommargin.
varh,v:int%Thescrollbars.
varcanvas:int%Thecanvas.
varpic:int%Thepicture.
varfileNameField:int%Thefilenametextfield.
varerrorLabel:int%Theerrormessagelabel.
varloadButton:int%The"LoadPicture"button.
procedureScrollPic(ignore:int)
%Getthecurrentvalueofthescrollbars.
varx:int:=GUI.GetSliderValue(h)
vary:int:=GUI.GetSliderValue(v)
GUI.PicDraw(canvas,pic,x,y,picCopy)
endScrollPic
procedureLoadFile(fileName:string)
varpicWidth,picHeight,canvasWidth,canvasHeight
varnewPic:int:=Pic.FileNew(fileName)
ifnewPic<=0then
GUI.SetLabel(errorLabel,
![Page 449: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/449.jpg)
Example
"Errorloadingpicture:"+Error.LastMsg
GUI.SetSelection(fileNameField,1,1)
return
else
GUI.SetLabel(errorLabel,"")
pic:=newPic
endif
picWidth:=Pic.GetWidth(pic)
picHeight:=Pic.GetHeight(pic)
canvasWidth:=min(picWidth,maxSize)
canvasHeight:=min(picHeight,maxSize)
%Hidethecanvasandthethreeitems,readjustthem
%andthenshowthem.
GUI.Hide(canvas)
GUI.Hide(h)
GUI.Hide(v)
GUI.SetSize(canvas,canvasWidth,canvasHeight
GUI.SetSliderSize(h,canvasWidth+1)
GUI.SetPosition(v,15+canvasWidth,
bottomBorder+GUI.GetScrollBarWidth-1)
GUI.SetSliderSize(v,canvasHeight+1)
GUI.SetSliderMinMax(h,0,picWidth1)
GUI.SetSliderMinMax(v,0,picHeight1)
GUI.SetScrollAmount(h,3,100,canvasWidth)
GUI.SetScrollAmount(v,3,100,canvasHeight
GUI.SetSliderValue(h,0)
GUI.SetSliderValue(v,picHeight)
GUI.Show(canvas)
GUI.Show(h)
GUI.Show(v)
ScrollPic(0)
endLoadFile
procedureLoadFileButton
varfileName:string:=GUI.GetText(fileNameField
LoadFile(fileName)
endLoadFileButton
View.Set("graphics:265;295")
%Weplacethecanvasfirstandeverythingelseisplaced
%relativetothecanvas.
canvas:=GUI.CreateCanvas(leftBorder,
bottomBorder+GUI.GetScrollBarWidth,maxSize
GUI.GetY(canvas)GUI.GetScrollBarWidth,
GUI.GetWidth(canvas),0,100,0,ScrollPic,3,100,
v:=GUI.CreateVerticalScrollBarFull(
GUI.GetX(canvas)+GUI.GetWidth(canvas),
GUI.GetY(canvas),GUI.GetHeight(canvas),0,100,
100,ScrollPic,3,100,maxSize)
![Page 450: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/450.jpg)
fileNameField:=GUI.CreateTextField(GUI.GetX(
GUI.GetY(canvas)+GUI.GetHeight(canvas)+10,150,"",
LoadFile)
loadButton:=GUI.CreateButton(GUI.GetX(fileNameField
GUI.GetWidth(fileNameField)+20,
GUI.GetY(fileNameField),0,"LoadFile",LoadFileButton
errorLabel:=GUI.CreateLabel(GUI.GetX(canvas),5,"")
%Settheinitialpictureandreturnifitisnotfound.
GUI.SetText(fileNameField,"Forest.bmp")
LoadFileButton
ifpic=0then
return
endif
loop
exitwhenGUI.ProcessEvent
endloop
StatusExportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.SetScrollAmount
Seealso GUI.CreateHorizontalScrollBarandGUI.CreateVerticalScrollBar
![Page 451: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/451.jpg)
GUI.SetScrollOnAdd PartofGUImodule
Syntax GUI.SetScrollOnAdd(widgetID:int,scrollOnAdd:boolean
Description
TheGUI.SetScrollOnAddprocedureallowsyoutospecifywhetheratextboxscrollstothebottomofthetextwhennewtextisadded(thedefaultbehaviour).BycallingthisprocedurewithscrollOnAddsettofalse,thetextboxwillnotscrollunlesstheusermanipulatesthetextbox'sscrollbars.
Example
Thisprogramdisplaysthecontentsofafileinatextbox.Afterthefileisdisplayed,thetoplineinthetextboxwillbethefirstlineinthefile.
importGUI
View.Set("graphics:300;300")
constfileNameToBeViewed:string:="TextBxs.DEM"
vartextBox:int%TheTextFieldID.
vartitle:int%Thelabelforthetitle.
varf:int%Thestreamnumberofthefile.
varline:string%Linestobereadfromthefile.
%Openthefile.
open:f,fileNameToBeViewed,get
iff=0then
put"Unabletoopen"+fileNameToBeViewed+":",
return
endif
%Setbackgroundcolortograyforindentedtextbox.
GUI.SetBackgroundColor(gray)
%Createthetitlelabelandtextbox.
title:=GUI.CreateLabelFull(20,280,fileNameToBeViewed
GUI.CENTER,0)
textBox:=GUI.CreateTextBoxFull(10,10,280,265,
GUI.INDENT,0)
GUI.SetScrollOnAdd(textBox,false)
%Readthefileandplaceitinthetextbox.
loop
exitwheneof(f)
get:f,line:*
GUI.AddLine(textBox,line)
endloop
![Page 452: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/452.jpg)
close:f%Closethefile.
loop
exitwhenGUI.ProcessEvent
endloop
Execute
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.SetScrollOnAdd,notbycallingSetScrollOnAdd.
![Page 453: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/453.jpg)
GUI.SetSelection PartofGUImodule
Syntax GUI.SetSelection(widgetID,fromSel,toSel:int)
Description
SetstheselectedtextinthetextfieldspecifiedbywidgetID.ThevalueofthefromSelandtoSelparametersindicatethecharacterswheretheselectionwillbeginandend.Forexample,ifthetextwas"Hellothere",settingfromSelto2andtoSelto5wouldselect"ell".SettingfromSelandtoSelautomaticallyselectstheentiretext.
ThefromSelparameterspecifiesthestartoftheselection.Thisrangesfrom1(beforethefirstcharacter)tothenumberofcharactersinthetext+1(afterthelastcharacter).Avalueof1forbothfromSelandtoSelselectstheentiretext.
ThetoSelparameterspecifiestheendoftheselection.Thisrangesfrom1(beforethefirstcharacter)tothenumberofcharactersinthetext+1(afterthelastcharacter).Avalueof1forbothfromSelandtoSelselectstheentiretext.
Example
Thefollowingprogramallowstheusertotypeintoatextfield.WhentheuserpressesENTER,itsearchesforanynon-lowercasetextandifitfindsany,selectsittomakeiteasyfortheusertocorrectit.Ifalltheinputislower-casetext,theprogramterminates.
importGUIin"%oot/lib/GUI"
vartextField,lbl:int
procedureCheckInput(s:string)
fori:1..length(s)
if(s(i)<'a'or'z'<s(i))ands(i
GUI.SetSelection(textField,i,i+1)
return
endif
endfor
GUI.Quit
endCheckInput
textField:=GUI.CreateTextField(100,100,200,"",
lbl:=GUI.CreateLabelFull(100+GUI.GetWidth(
100+GUI.GetHeight(textField),
![Page 454: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/454.jpg)
"OnlyAllowsLowerCaseLetters",0,0,
GUI.CENTER+GUI.BOTTOM,0)
loop
exitwhenGUI.ProcessEvent
endloop
GUI.SetLabel(lbl,"ProgramFinished!")
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.SetSelectionnotbycallingSetSelection.
Seealso GUI.CreateTextField.
![Page 455: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/455.jpg)
GUI.SetSize PartofGUImodule
Syntax GUI.SetSize(widgetID,width,height:int)
Description
ChangesthesizeofthewidgetspecifiedbywidgetID.Ifthewidgetisvisible,itssizeischangedimmediately,otherwisethewidgetwillappearinitsnewsizewhenthewidgetisnextmadevisible.Notethatthewidthandheightparametersarenonecessarilytheactualwidthandheightofthewidget.Forexample,theTextFieldwidgetignorestheheightparameter,calculatingthewidget'sactualheightfromtheheightofthetextintheTextField.
Example
Thefollowingprogramresizesthebuttoneverytimethebuttonispressed.
importGUIin"%oot/lib/GUI"
varbutton:int
procedureResizeButton
varnewWidth,newHeight:int
newWidth:=Rand.Int(0,200)
newHeight:=Rand.Int(0,200)
GUI.SetSize(button,newWidth,newHeight)
endResizeButton
button:=GUI.CreateButton(100,100,0,"ResizeButton",
ResizeButton)
loop
exitwhenGUI.ProcessEvent
endloop
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.SetSize,notbycallingSetSize.
![Page 456: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/456.jpg)
GUI.SetSliderMinMax PartofGUImodule
Syntax GUI.SetSliderMinMax(widgetID,min,max:int)
Description
SetstheminimumandmaximumvaluesofthesliderorscrollbarspecifiedbywidgetID.Theminparameterspecifiesthenewminimumvalueofthesliderorscrollbar.Themaxparameterspecifiesthenewmaximumvalueofthesliderorscrollbar.Themaxparametermustbegreaterthantheminparameter.
GUI.SetSliderMinMaxredrawsthethumbtotakeintoaccountthenewminimumandmaximum.Ifthecurrentvalueofthesliderisoutsidethenewminimum/maximum,thenthevalueisadjustedappropriately.
ExampleSeeGUI.SetScrollAmountforanexampleofGUI.SetSliderMinMax.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.SetSliderMinMax,notbycallingSetSliderMinMax.
Seealso
GUI.CreateHorizontalScrollBar,GUI.CreateVerticalScrollBar,GUI.CreateHorizontalSlider,andGUI.CreateVerticalSlider.
![Page 457: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/457.jpg)
GUI.SetSliderReverse PartofGUImodule
Syntax GUI.SetSliderReverse(widgetID:int)
Description
SetsasliderorscrollbarspecifiedbywidgetIDinto(oroutof,ifalreadyinto)"reversemode".Normally,asliderorscrollbarisatitsminimumvaluewhenthethumbisonthelefthandside(bottomforaverticalslider).Thisreversesit,sotheminimumvalueiswhenthethumbisattherighthandside(topforverticalsliders)ofthetrack.Callingthisroutineasecondtimereversesitbacktonormal.Thisprocedureredrawstheslidertomovethethumbtoitsnewlocation.
Example
Thefollowingprogramcreatestwosliders,oneofwhichisreversed.
importGUIin"%oot/lib/GUI"
View.Set("graphics:300;70")
varsBar,sBarLabel,reverseSBar,reverseSBarLabel
procedureSBarMoved(value:int)
GUI.SetLabel(sBarLabel,intstr(value))
endSBarMoved
procedureReverseSBarMoved(value:int)
GUI.SetLabel(reverseSBarLabel,intstr(value
endReverseSBarMoved
sBar:=GUI.CreateHorizontalScrollBar(10,10,250,
50,150,50,SBarMoved)
sBarLabel:=GUI.CreateLabel(
GUI.GetX(sBar)+GUI.GetWidth(sBar)+10,10,"50")
reverseSBar:=GUI.CreateHorizontalScrollBar(10,40,250,
50,150,50,ReverseSBarMoved)
GUI.SetSliderReverse(reverseSBar)
reverseSBarLabel:=GUI.CreateLabel(GUI.GetX(
GUI.GetWidth(reverseSBar)+10,40,"50")
loop
exitwhenGUI.ProcessEvent
endloop
Status
Exportedqualified.
Thismeansthatyoucanonlycallthefunctionbycalling
![Page 458: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/458.jpg)
GUI.SetSliderReverse,notbycallingSetSliderReverse.
SeealsoGUI.CreateHorizontalScrollBar,GUI.CreateVerticalScrollBar,GUI.CreateHorizontalSlider,andGUI.CreateVerticalSlider.
![Page 459: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/459.jpg)
GUI.SetSliderSize PartofGUImodule
Syntax GUI.SetSliderSize(widgetID,length:int)
Description
ChangesthelengthofasliderorscrollbarspecifiedbywidgetIDtothevaluespecifiedbythelengthparameter.Redrawsthesliderorscrollbarandchangesthepositionofthethumbtotakeintoaccountthenewsizeofthesliderorscrollbar.
ExampleSeeGUI.SetScrollAmountforanexampleofGUI.SetSliderSize.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.SetSliderSize,notbycallingSetSliderSize.
Seealso
GUI.CreateHorizontalScrollBar,GUI.CreateVerticalScrollBar,GUI.CreateHorizontalSlider,andGUI.CreateVerticalSlider.
![Page 460: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/460.jpg)
GUI.SetSliderValue PartofGUImodule
Syntax GUI.SetSliderValue(widgetID,value:int)
Description
SetsthevalueofasliderorscrollbarspecifiedbywidgetIDtovalue.Itmovesthethumbonthesliderorscrollbartotheappropriatelocationandcallstheslider'sactionprocedurewiththenewvalue.
ExampleSeeGUI.SetScrollAmountforanexampleofGUI.SetSliderValue.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.SetSliderValue,notbycallingSetSliderValue.
Seealso
GUI.GetSliderValueforreadingasliderorscrollbar'svalue.SeealsoGUI.CreateHorizontalScrollBar,GUI.CreateVerticalScrollBar,GUI.CreateHorizontalSlider,andGUI.CreateVerticalSlider.
![Page 461: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/461.jpg)
GUI.SetText PartofGUImodule
Syntax GUI.SetText(widgetID:int,text:string)
DescriptionSetsthetextofatextfieldspecifiedbywidgetIDtotext.Theselectionissetto1,1(i.e.thecursorisatthebeginningofthetext).
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.SetTextbycallingSetText.
Example
ThefollowingprogramconvertsalllowercaseinputinthetextfieldtouppercasewhentheuserpressesENTER.
importGUI
vartextField,lbl:int
procedureCheckInput(s:string)
varnewString:string:=""
fori:1..length(s)
if'a'<=s(i)ands(i)<='z'then
newString+=chr(ord(s(i))32)
else
newString+=s(i)
endif
endfor
GUI.SetText(textField,newString)
GUI.SetSelection(textField,1,1)
endCheckInput
textField:=GUI.CreateTextField(100,100,200,"",
lbl:=GUI.CreateLabelFull(100+GUI.GetWidth(
100+GUI.GetHeight(textField),"ConvertstoUpperCase",
0,0,GUI.CENTER+GUI.BOTTOM,0)
loop
exitwhenGUI.ProcessEvent
endloop
Exportedqualified.
![Page 462: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/462.jpg)
Status ThismeansthatyoucanonlycallthefunctionbycallingGUI.SetTextbycallingSetText.
Seealso GUI.CreateTextField.
![Page 463: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/463.jpg)
GUI.SetTopLine PartofGUImodule
Syntax GUI.SetTopLine(widgetID:int,lineNum:int)
Description
TheGUI.SetTopLineprocedurescrollsthetextinatextboxsoastoplacethelinenumberspecifiedbylineNumatthetopofthetextbox(ifpossible).Thisisoftenusedtoscrollthetextbacktothebeginningofthetextboxbyassigningavalueof1tolineNum.
Example
Thisprogramdisplays100linesoftextinatextbox,thensetsthetextboxtodisplayline50atthetopofthebox.
importGUI
vartextBox:int%TheTextFieldID.
textBox:=GUI.CreateTextBoxFull(10,10,180,275,
GUI.INDENT,0)
GUI.SetBackgroundColor(gray)
%Readthefileandplaceitinthetextbox.
fori:1..100
GUI.AddLine(textBox,intstr(i))
endfor
GUI.SetTopLine(textBox,50)
loop
exitwhenGUI.ProcessEvent
endloop
Execute
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.SetTopLine,notbycallingSetTopLine.
![Page 464: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/464.jpg)
GUI.SetXOR PartofGUImodule
Syntax GUI.SetXOR(widgetID:int,xor:boolean)
Description
Setsthe"xormode"ofthecanvasspecifiedbywidgetID.Ifthexorparmeterissettotrue,thecanvasissettoxormode.Wheninxormode,alltheDraw...proceduresofacanvasaretreatedasiftheView.Set("xor")statementhadbeenexecutedbeforetheDrawprocedure.
Example
SeeGUI.SetDisplayWhenCreatedforanexampleofGUI.Show.
importGUIin"%oot/lib/GUI"
View.Set("graphics:400;300")
varcanvas1,label1,canvas2,label2:int
canvas1:=GUI.CreateCanvas(10,20,maxxdiv220,
label1:=GUI.CreateLabelFull(10,2,"XOR",maxx
GUI.CENTER,0)
canvas2:=GUI.CreateCanvas(maxxdiv2+10,20,
maxxdiv220,maxy30)
label2:=GUI.CreateLabelFull(maxxdiv2+10,2,"Normal",
maxxdiv220,0,GUI.CENTER,0)
GUI.SetXOR(canvas1,true)
fori:1..20
varx:int:=Rand.Int(0,maxxdiv220)
vary:int:=Rand.Int(0,maxy20)
varc:int:=Rand.Int(1,15)
GUI.DrawFillStar(canvas1,x20,y20,x+20,
endfor
GUI.SetXOR(canvas2,false)
fori:1..20
varx:int:=Rand.Int(0,maxxdiv220)
vary:int:=Rand.Int(0,maxy20)
varc:int:=Rand.Int(1,15)
GUI.DrawFillStar(canvas2,x20,y20,x+20,
endfor
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.SetXOR,notbycallingSetXOR.
![Page 465: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/465.jpg)
Seealso GUI.CreateCanvas.
![Page 466: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/466.jpg)
GUI.Show PartofGUImodule
Syntax GUI.Show(widgetID:int)
Description
ShowsawidgetspecifiedbywidgetID.UsedinconjunctionwithGUI.Hidetoshowandhidewidgets.Hiddenwidgetscannotgetevents(i.e.respondtokeystrokesormouseclicks).Ifanactivetextfield(seetextfield)ishidden,thenanykeystrokesinthewindowwillbeignored.
Inmostcaseswhereawidgetistoappear,thendisappear,thenappearagain,itisadvisedtocreatethewidgetonceandhideituntilitistoappear,whereuponGUI.Showiscalled.Whentheuserisfinishedwiththewidget,thewidgetishiddenusingGUI.Hide.Thissavestheoverheadofcreatinganddisposingofthesamewidgetseveraltimes.
ExampleSeeGUI.SetDisplayWhenCreatedforanexampleofGUI.Show.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.Show,notbycallingShow.
Seealso GUI.Hide.
![Page 467: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/467.jpg)
GUI.ShowMenuBar PartofGUImodule
Syntax GUI.ShowMenuBar
Description Showsthemenubarintheselectedwindow.
ExampleSeeGUI.SetMouseEventHandlerforanexampleofGUI.HideMenuBar.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.ShowMenuBar,notbycallingShowMenuBar.
Seealso GUI.HideMenuBar.SeealsoGUI.CreateMenu.
![Page 468: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/468.jpg)
GUI.ShowWindow PartofGUImodule
Syntax GUI.ShowWindow(window:int)
Description
Hidesawindowwithwidgetsinit.ThisproceduremakescertainthattheGUILibraryrecognizesthatthewindownolongervisible.ThisprocedurewillcallWindow.Hide,sothereisnoneedfortheusertodoso.
Example
Theprogramopensupawindowwithtwobuttons.Ifthebuttonlabelled"CloseandOpen"ispressed,thewindowisclosedandanewwindowwithtwobuttonsisopenedinarandomlocationonthescreen.
importGUI
varwindowA,windowB:int
varbuttonA,buttonB,buttonQuit:int
varbackToMainA,backToMainB:int
procedureShowWindowA
GUI.HideWindow(defWinID)
GUI.ShowWindow(windowA)
endShowWindowA
procedureShowWindowB
GUI.HideWindow(defWinID)
GUI.ShowWindow(windowB)
endShowWindowB
procedureShowMain
GUI.HideWindow(Window.GetActive)
GUI.ShowWindow(defWinID)
endShowMain
View.Set("graphics:280;100,nobuttonbar")
%Placethebuttonsinthemainwindow
buttonA:=GUI.CreateButton(10,10,0,"ShowWindowA",
buttonB:=GUI.CreateButton(150,10,0,"ShowWindowB",
buttonQuit:=GUI.CreateButton(100,60,0,"Quit",
windowA:=Window.Open("title:WindowA,graphics:150;100,position:bottom;left")
backToMainA:=GUI.CreateButton(20,20,0,"BacktoMain",
Window.Hide(windowA)
windowB:=Window.Open("title:WindowB,graphics:150;100,position:bottom;right")
backToMainB:=GUI.CreateButton(20,20,0,"BacktoMain",
Window.Hide(windowB)
![Page 469: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/469.jpg)
loop
exitwhenGUI.ProcessEvent
endloop
Execute
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingGUI.ShowWindowbycallingShowWindow.
SeealsoGUI.HideWindowforhidingawindowwithwidgetsinit.SeealsoGUI.CloseWindowforclosingawindowwithwidgetsinit.
![Page 470: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/470.jpg)
handler exceptionhandler
Dirty
Syntax
AexceptionHandleris:
handler(id) statementsAndDeclarations endhandler
Description
Anexceptionhandlerisanoptionalblockofstatementsanddeclarationsinasubprogram(orprocess).Itisactivatedwhentheprogram(orprocess)fails.Thisoccurs,forexamplewhendividingbyzero.
Example
Thisprogramparsestheinputstreamusingastack.Ifthestackoverflows(itstopexceedsitsmaximum),aquitstatementinthepushprocedureabortstheparsingandgivescontroltotheexceptionhandlerintheparseprocedure.TheparseprocedurecallsparseExpnwhichcallspush.Ifpushoverflowsthestack,itexecutesaquitandcontrolispassedtotheexceptionhandlerintheparseprocedure.Theinterruptedprocedures(parseExpnandpush)areterminatedandtheirlocalvariablesaredeleted.
conststackOverflow:=500
constmaxTop:=100
vartop:0..maxTop:=0
varstack:array1..maxTopofint
procedurepush(i:int)
iftop=maxTopthen
quit:stackOverflow
endif
top:=top+1
stack(top):=i
endpush
…
procedureparse
handler(exceptionNumber)
put"Failurenumber",exceptionNumber
caseexceptionNumberof
![Page 471: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/471.jpg)
labelstackOverflow:
put"Stackhasoverflowed!!"
…otherexceptionshandledhere…
label:%Unexpectedfailures
quit>%Passexceptionfurther
endcase
endhandler
parseExpn%Eventuallypushiscalled
endparse
SeethequitstatementforanexplanationofitsquitReason(stackOverflowinthefirstquitstatementabove)anditsguiltyParty(>inthesecondquitstatement,meaningtheexceptionisduetocausesoutsideofthishandler).
Anexceptionhandlercanappearonlyinthebodyofasubprogram(orprocess),justprecedingthedeclarationsandstatements.Theformofaprocedureis:
procedure[pervasive]id
[([paramDeclaration{,paramDeclaration}])]
[import[[var]id{,[var]id}]]
[pretrueFalseExpn]
[initid:=expn{,id:=expn}]
[posttrueFalseExpn]
[exceptionHandler]
statementsAndDeclarations
endid
Exactlythesamedeclarationsandstatementscanappearinahandlerascanappearinthesubprogrambodyfollowingthehandler.Intheabsenceofexceptions,handlershavenoobservableeffect.Aparticularhandlerisactivated(itbecomesreadytohandleanexception)whenitisencounteredduringexecution.Itremainsactiveuntilthesubprogram(orprocess)containingithascompleted,orthehandlerisgivencontrol.Activationofahandlerwhenaprevioushandlerisalreadyactivewillcauseexceptionstobepassedtothenewly-activatedhandler.Inotherwords,handlershaveadynamicscopethatbeginswhentheexceptionhandlerisencounteredandendswhenthesubprogram(orprocess)containingthehandlerhasterminatedorthehandlerisgivencontrol.
![Page 472: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/472.jpg)
Details
Whenahandlerisgivencontrol,itbecomes,ineffect,areplacementforthedeclarationsandstatementsfollowingit.Ifthehandlerisinafunction,itmustterminatewitharesultstatementorwithaquit.Ifthehandlerisinaprocedure(orprocess),thehandlermustterminatewithareturn,aquit,orbyencounteringtheendofthehandler(whichisequivalenttoareturn).
Whenahandlerterminateswitharesultorreturnstatement(orbyreachingtheendofaprocedure'shandler),thesubprogram'spostcondition(ifany)mustbetrue.Aquitstatementdoesnotneedtoestablishthepostcondition.
Programmingwithexceptionhandlerseasilyleadstoincomprehensiblesoftware,duetothedifficultyofkeepingtrackoftheflowofcontrol.Oneofthemostinsidioussituationsiswhenanexceptionoccursinamodule,classormonitorandispropagatedoutsideoftheunit.Thiscanleavethecontaineddatainaninconsistentstate;inthecaseofamonitor,itisleftlockedforever.Toavoidthispossibility,youcanuseahandlerineachexportedsubprogram.Ifanexceptioninaprocessisnothandled,theentireprogramisaborted.Ifanimplementationallocatesdynamicarraysontheheap,anexceptionmaypreventthedeallocationofsuchanarray.
Withoutexceptionhandling,aprogramexecutesaccordingtothelanguagedefinitionorelseisaborted.Ifanexceptionhandlerisactive,insteadofaborting,controlisgiventothehandler.ThequitNumberforasystem-detectedfailureisimplementation-dependent.Thereisafile"%exceptions"whichliststhesenumbers.Theuserprogramcansimulateasystemexceptionbydoingaquitwiththecorrespondingnumber.
Iftheuserturnsoffcheckingexplicitly,thesystemmaynotdetectfailures.Insomecasesthefailuremayyieldincorrectdataorarbitrarybehavior.
Someexceptionsareunpredictableorimplementation-dependent.Forexample,inx:=24divi+24/i,ifiiszero,theexception
![Page 473: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/473.jpg)
couldbeeitheranintegerorarealdivisionbyzero,becausetheorderorevaluationisimplementation-dependent.
![Page 474: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/474.jpg)
hasch hascharacterfunction
Syntax hasch:boolean
DescriptionThehaschprocedureisusedtodetermineifthereisacharacterthathasbeentypedbutnotyetbeenread.
Example
Thisprogramsimulatestherollingofapairofdiceuntiltheuserpressedthekeyboard.
put"Pressanykeytostopthedicerolling"
vardie1,die2:int
varch:string(1)
loop
exitwhenhasch
randint(die1,1,6)
randint(die2,1,6)
locate(1,1)
put"Yourolled",die1+die2
endloop
getch(ch)%Discardthecharacter
Execute
Details
Thescreenshouldbeina"graphics"mode.Seethesetscreenprocedurefordetails.Ifthescreenisnotin"graphics"mode,itwillautomaticallybesetto"graphics"mode.
Ifthereisthepossibilitythattherearealreadykeystrokesinthekeyboardbuffer,theInput.Flushcommandcanbeusedtoflushthekeyboardbuffer(removeallkeystrokesfromthebuffer)beforeenteringthelooptocheckforinput.
getchandgetchar.
![Page 475: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/475.jpg)
SeealsoSeealsotheInput.Flushcommandforflushingthekeyboardbuffer.
SeealsopredefinedunitInput.
![Page 476: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/476.jpg)
id (identifier)nameofaniteminaprogram
Description
Variables,constants,types,procedures,etc.inTuringprogramsaregivennamessuchasincomeTax,x,andheight.Thesenamesarecalledidentifiers(ids).
Anidentifiermuststartwithaletter(largeorsmall)oranunderscore(_)andcancontainupto50characters,eachofwhichmustbealetter,adigit(0to9)oranunderscore(_).Largeandsmalllettersareconsidereddistinct,sothatAandaaredifferentnames.ThisdiffersfromPascalwherelargeandsmalllettersinnamesareequivalent.
Everycharacterinanameissignificantindistinguishingonenamefromanother.
Byconvention,wordsthatmakeupanidentifierarecapitalized(exceptthefirstone),asinincomeTaxandjustInTime.
AniteminaTuringprogramcannotbegiventhesamenameasakeywordsuchasgetorasareservedwordsuchasindex.SeeAppendixAforalistofkeywordsandreservedwords.Aswell,therearesomeidentifiersthatareusedbytheTuringerrorrecoveryproceduresandarethusunavailableforuseasidentifiers.Specifically,theyare:endif,elseif,endloopandendfor.
![Page 477: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/477.jpg)
#if usedforconditionalcompilation
Syntax
Aconditionalcompilation#ifhastheform:
#ifexpnthen …anysourcetext… {#elsifexpnthen …anysourcetext…} [#else …anysourcetext…] #endif
Description
An#ifconstructsupportscompiletimeselectionofsectionsofsourcetexttomakeupaprogram(orunitofaprogram),inotherwordsconditionalcompilation.Anyarbitrarysourcetext(characters)canbeselected.
Eachoftheselectingexpressions(expns)havetheformofabooleanexpression,withtheuseoftheoperatorsand,orandnot(butnot=>)andparentheses.Theshortforms&and~aresupported.Theoperandsoftheexpressionsmustbepreprocessorflags,whicharesetbyasystem-dependentmechanismnotdescribedhere.Aflagisconsideredtobetrueifitisexplicitlyset.Ifitisnotexplicitlyset,itisconsideredfalse.
Unlikeotherpartsofthelanguage,the#if,#elsif,#elseand#endifconstructsarenotfreeformat.Specifically,theymustbeplacedbythemselvesonasingleline.
Example
Apairofdeclarationsischosenifbothstatsanddebugareset,otherwisetheputstatementisselected.Theselectedpartbecomespartoftheprogramandtheotherpartsareignored.
#ifstatsanddebugthen
varcount:array1..5ofreal
varmessage:string
#else
![Page 478: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/478.jpg)
put"Debuggingmessage"
#endif
![Page 479: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/479.jpg)
if statement
Syntax
AnifStatementis:
iftrueFalseExpnthen statementsAndDeclarations {elsiftrueFalseExpnthen statementsAndDeclarations} [else statementsAndDeclarations] endif
Description
Anifstatementisusedtochooseamongasetofstatements(anddeclarations).Oneset(atmost)ischosenandexecutedandthenexecutioncontinuesjustbeyondendif.
Theexpressions(thetrueFalseExpressions)followingthekeywordifandeachelsifarecheckedoneaftertheotheruntiloneofthemisfoundtobetrue,inwhichcasethestatements(anddeclarations)followingthecorrespondingthenareexecuted.Ifnoneoftheseexpressionsevaluatestotrue,thestatementsfollowingelseareexecuted.Ifnoelseispresentandnoneoftheexpressionsaretrue,nostatementsareexecutedandexecutioncontinuesfollowingtheendif.
Example
Outputamessagebasedonvalueofmark.
ifmark>=50then
put"Youpass"
else
put"Youfail"
endif
OutputA,B,C,DorFdependingonmark.
ifmark>=80then
put"A"
elsifmark>=70then
![Page 480: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/480.jpg)
Exampleput"B"
elsifmark>=60then
put"C"
elsifmark>=50then
put"D"
else
put"F"
endif
Example
Ifxisnegative,changeitssign.
ifx<0then
x:=-x
endif
Example
Ifxislessthanzeroorgreaterthanmaxx,putamessage.
ifx<0orx>maxxthen
put"Outofbounds!"
endif
Example
Ifthebooleanflagistrueandnameis“stop”,putamessageandreturn.
ifflagandname="stop"then
put"Exitingroutine"
return
endif
DetailsSeveralstatementsanddeclarationscanappearafteraparticularthen.
Seealso casestatementsforanotherwaytoselectamongstatements.
![Page 481: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/481.jpg)
implementby clause
Syntax
AnimplementByClauseis:
implementbyimplementByItem
Description
Animplement-byclauseisusedtospecifythatamodule,monitororclassCistobeautomaticallyimplementedbytheimplementByItem.CiscalledtheinterfaceandtheimplementByItem,whichmustcontainanimplementclause,iscalledtheimplementation.Seeimplementclausefordetailsandanexample.
Theimplement-byclausecanonlybeusedinaunit.Seeunitforthedefinitionofaunit.
AnimplementByItemisoneof:
(a) id (b) idinfileName
Thesecondformisusedwhentheimplement-byclauseisforaseparateunitandtheimporteditemisinafilewhosenameisdifferentfromtheitem'sname,asin:
implementbyledgerBodyin"ledgbod.t"
ThefileNamemustbeanexplicitcharacterstring,e.g.,"ledgbod.t".Seealsounit.Parenthesesareallowedaroundtheitemsinanimplement-byclauses,asin:
implementby(ledgerBodyin"ledgbod.t")
![Page 482: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/482.jpg)
implement clause
Syntax
AnimplementClauseis:
implementimplementItem
Description
Animplementclauseisusedtospecifythatthemodule,monitororclasscontainingtheclauseistobetheimplementationofanothermodule,monitororclass.Thisimplementationisaspecialkindofexpansion.Themodule,monitororclasscontainingtheclausegainsaccessto(inherits)allthedeclarationsinsidethetargetitem.Seeinheritclauseforrulesaboutexpansions,whicharealsorulesforimplementations.
Theimplementclausecanonlybeusedinaunit.Seeunitforthedefinitionofaunit.
Example
Hereisastackmodulewhichdefersallofitsexportedsubprograms.Thismoduleisaninterfacebutnotanimplementation.FollowingstackisthestackBodymodulethatimplementsthestackmodule,givingthebodiesforstack'ssubprograms.Anycalltostack'spushorpopprocedures,suchasstack.push("Ed"),willactuallycalltheproceduresgiveninstackBody.
modulestack%Interface
implementbystackBody
%stackBodyhasimplementation
exportpush,pop
deferredprocedurepush(s:string)
deferredprocedurepop(vars:string)
endstack
Nextcomestheexpansionwhichgivesthebodiesforthedeferredprocedurespushandpop.ThestackBodybodyalsoaddsdeclarationsforthetopandcontentsvariables.
modulestackBody%Implementation
implementstack%stackhasinterface
![Page 483: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/483.jpg)
vartop:int:=0
varcontents:array1..100ofstring
bodyprocedurepush%(s:string)
top:=top+1
contents(top):=s
endpush
bodyprocedurepop%(vars:string)
s:=contents(top)
top:=top-1
endpop
endstackBody
Details
Module,monitororclassDcanbeinC'simplement-byclauseif,andonlyif,CisinD'simplementclause.Inotherwords,aninterfacemustapplytoexactlyoneimplementationandviceversa.Amodulecanimplementonlyamodule,amonitoronlyamonitor,andaclassonlyaclass.Classes(butnotmodulesandmonitors)cancontaininheritclauses.Aclasscannotcontainbothaninheritandanimplementclause.
AnimplementItemisoneof:
(a)id
(b)idinfileName
Thesecondformisusedwhentheimplementclauseisforaseparateunitandtheimporteditemisinafilewhosenameisdifferentfromtheitem'sname,asin:
implementledgerin"ledg.t"
ThefileNamemustbeanexplicitcharacterstring,e.g.,"ledg.t".Seealsounit.Parenthesesareallowedaroundtheitemsinimplementclauses,asin:
implement(ledgerin"ledg.t")
Thereisnorestrictiononthedeclarationsthataninterfacemaycontain.Inparticular,aninterface(anymodule,monitororclasscontaininganimplement-byclause),cancontainsubprogrambodiesandvariabledeclarations,exactlyasisthecaseinexpansions.ThisisdifferentfromlanguagessuchasC++inwhichtherearestrictruleslimitingwhatyoucanputinaninterface.
![Page 484: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/484.jpg)
EventhoughDcontainsanimplementclause,Dcanalsocontainanimplement-byclause,whichimpliesfurtherimplementationbyfurtherautomaticexpansion.
SupposeclassDisinclassC'simplement-byclauseandthatpisapointertoclassC:
varp:^C
EventhoughCisimplementedbyD,premainsapointertoclassC.EachcreationofanobjectofclassCactuallycreatesanobjectoftypeD,forexample:
newp%CreatesobjectofclassD
ClassD,whichimplementsC,couldalsohaveanimplement-byclause,whichcausesitsimplementationtobeautomaticallycreatedandsoon.IfanotherclassEinheritsC,thisexpansiondoesnotincludeD.
IfthenewstatementcontainsanexplicitclassnameEthatisadescendantofC(butnotactuallyC),asin
newE,p
theobjectoftheexplicitclassiscreated.IfEhasanimplement-byclause,theexpansioniscreated.
Seealsounit,module,monitorandclass.Seealsoimplementbyclause,inheritclause,exportlist,andimportlist.Seealsodeferredsubprograms.
![Page 485: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/485.jpg)
import list
Syntax
AnimportListis:
import[howImport]importItem {,[howImport]importItem}
Description
Animportlistisusedtospecifythoseitemsthataprocedure,function,module,monitor,oraclassusesfromoutsideofitself.Notethatafunctionorprocedureisnotallowedtohaveanimportlistandthusautomaticallyimportswhicheverfunctionsorproceduresareusedbythefunctionorprocedure.Thecompilerdeterminesthelistautomaticallybylookingtoseewhatitemsareactuallyused.
Example
Inthisexample,thetypeTisimportedintothestackmoduleandusedasthetypethatcanbepushedontoorpoppedoffthestack.Sincenootheritemsareimported,theonlyidentifiersfromoutsideofstackthatcanbeusedinitmustbepredefined,suchassqrt,ordeclaredtobepervasive.
typeT:string
…
modulestack
importT
exportpush,pop
vartop:int:=0
varcontents:array1..100ofT
procedurepush…endpush
procedurepop…endpop
endstack
TheimportItemisoneof:
(a)id (b)idinfileName
ThesecondformisusedinOOTwhenthelististheimportlistforaseparateunit(orthemainprogram),andtheimporteditem
![Page 486: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/486.jpg)
Details
isinafilewhosenameisdifferentfromtheitem'sname,forexample:
importledgerin"newledg.t"
ThefileNamemustbeanexplicitcharacterstring.Seealsounit.
Parenthesesareallowedaroundtheitemsinanimportlists,asin:
import(ledgerin"newledg.t")
Therearevariouswaystoimportitems,asdeterminedbyhowImport.TheformofhowImportisoneof:
(a)var (b)const (c)forward
CommonlythehowImportisomitted,whichmeansthedefaultaccessfortheitemisthesameaccessastheitemhas.Inotherwords,aread-writeitemthatisimportedwithoutahowImportisimportedread-write.Aread-onlysymbolthatisimportedwithoutahowImportisimportedread-only.
IftheimportItemisforward,theimportlistispartofaforwardprocedureorfunctiondeclarationandtheimporteditemisitselfnecessarilyaprocedureorfunction.Seeforwarddeclarationsfordetailsandanexample.
Iftheimportlistofamodule,monitororclassisomitted,theimplementationassumesthatthelistisimport(),meaningthatnoitemsareimported.Forexample,amodulemustexplicitlyimportanyglobalidentifiersthatarenotpredefinedorpervasive.
Circular(recursive)importsarenotallowed.Forexample,ifunitAimportsBthenBcannotimportA.However,circularusageofseparatelycompiledunitsispossiblebyseparatingtheunitsintointerfacesandbodiesandhavingthebodiesimporttheinterfaces.Forexample,ifCistheparentclassofD,DcanimportC,butnotviceversa.
![Page 487: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/487.jpg)
Inanexpansion(orimplementation),theimportlistoftheexpansionaugmentstheimportlistoftheparent.
Anoverridingsubprogram(inanexpansion)ignorestheimportlistofthetargetsubprogramandusesitsownimportlist.
Turinginitializesmodulesandmonitorsinorderofimportation.Initializationbeginswiththemainprogram,whichfirstinitializesitsimportsintheordergiveninitsimportlist,andtheninitializesitself.
Seealsounit,module,monitorandclass.Seealsoexportlist,inheritclause,implementclauseandimplementbyclause.
![Page 488: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/488.jpg)
in memberofaset
Syntax in
Description Theinoperatordeterminesifanelementisinaset.
ExampletyperankSet:setof0..10
varrankings:rankSet:=rankSet(0)%Theset
…
if5inrankingsthen…%Is5intherankingsset?
Description
Thenotinoperatorisexactlytheoppositeofin.Forexample,7notinrankingsmeansthesameasnot(7inrankings).
Theelementisrequiredtobeintheset'sindextype.Intheaboveexamplethisissatisfiedbecauseelement5isintheindextype0..10.
Thekeywordinisalsousedinlistssuchasimportlists.Seeimportlist.
Seealso thesettype,infixoperators,andprecedenceofoperators.
![Page 489: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/489.jpg)
include sourcefiles
Syntax
AnincludeConstructis:
includefileName
Description
AnincludeisusedtocopypartsoffilessothattheybecomepartoftheTuringprogram.Thiscopyingistemporary,thatis,nofilesarechanged.Thefilenamemustbeanexplicitstringconstantsuchas"stdstuff".
Example
OnIBMPCcompatiblecomputers,therearearrowkeysthatproducecharactervaluessuchas200and208.Letussupposethatafilecalledarrowscontainsdefinitionsofthesevalues:
constupArrow:=200
constdownArrow:=208
constrightArrow:=205
constleftArrow:=203
Thesedefinitionscanbeincludedinanyprograminthefollowingmanner:
include"arrows"
…
varch:string(1)
getch(ch)%Readonecharacter
caseord(ch)of
labelupArrow:
…handleuparrow…
labeldownArrow:
…handledownarrow…
labelrightArrow:
…handlerightarrow…
labelleftArrow:
…handleleftarrow…
label:
…handleanyotherkey…
endcase
Anincludefilecanitselfcontainincludeconstructs.Thiscancontinuetoanylevel,althoughacircularpatternofincludes
![Page 490: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/490.jpg)
Detailswouldbeamistake,asitwouldleadtoaninfinitelylongprogram.
Itiscommontosaveprocedures,functionsandmodulesinseparatefiles.Thefilesarecollectedtogetherusinginclude.
Details
Ifthefilenameintheincludestatementstartswitha"%",thenTuringsearchesthesystemdirectoryforthefile.Seetheeditorreferencefortheenvironmenttoseehowtosetthesystemdirectory.Thismethodcanbeusedtoallowthesystemadministratortoeasilysupplyasetofroutinesinafiletoalargenumberofusersbyplacingitinoneeasy-to-findlocation.
Example
Ifthesystemdirectoryissetto"C:\TURING",thentheline
include"%sorting.t"
willincludethefile"C:\TURING\SORTING.T"intheprogram.
Details
UnderOOT,thereareseveralsystemdirectoriesavailable.The"%oot"directoryisthedirectorywherealltheOOTsystemfilesarelocated.The"%home"directoryistheuser'shomedirectory.
Example
Iftheootdirectoryissetto"/usr/local/lib/oot"thentheline
include"%oot/teacher/sorting.t"
willincludethefile"/usr/local/lib/oot/teacher/sorting.t"intheprogram.
![Page 491: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/491.jpg)
index findpatterninstringfunction
Syntax index(s,patt:string):int
DescriptionTheindexfunctionisusedtofindthepositionofpattwithinstrings.Forexample,index("chair","air")is3.
Example
Thisprogramoutputs2,because"ill"isasubstringof"willing",startingatthesecondcharacterof"willing".
varword:string:="willing"
putindex(word,"ill")
Details
Ifthepattern(patt)doesnotappearinthestring(s),indexreturns0(zero).Forexample,hereisanifstatementthatcheckstoseeifstringscontainsablank:
ifindex(s,"")not=0then…
Theindexissometimesusedtoefficientlydetermineifacharacterisoneofagivensetofcharacters.Forexample,hereisanifstatementthatcheckstoseeifch,whichisdeclaredusingvarch:string(1),isadigit:
ifindex("0123456789",ch)not=0then…
Ifastringcontainsmorethatoneoccurrenceofthepattern,theleftmostlocationisreturned.Forexample,index("pingpong","ng")returns3.
Ifpattisthenullstring,theresultis1.
![Page 492: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/492.jpg)
indexType
Syntax
AnindexTypeisoneof:
(a) subrangeType (b) enumeratedType
(c) namedType %Whichisasubrangeorenumeratedtype
(d) char (e) boolean
Description
Anindextypedefinesarangeofvaluesthatcanbeusedasanarraysubscript,asacaseselector,asaselector(tag)forauniontype,orasthebasetypeofasettype.
Example varz:array1..9ofreal%0..9isanindextype
typesmallSet:setof0..2%0..2isanindextype
![Page 493: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/493.jpg)
indirection operator(@)
Dangerous
Syntax targetType@(expn)
Description
Theindirectionoperator@isusedtoaccessvaluesthatlieatabsolutemachineaddressesinthecomputer'smemory.Thisisdangerousandimplementation-dependentandcancausearbitrarycorruptionofdataandprograms.
Example
Copythebytevalueatmemorylocation246intobandthensetthatmemorybytetozero.
varb:nat1%Onebytenaturalnumber
b:=nat1@(246)
nat1@(246):=0
Details
TheformoftargetTypemustbeoneof:
(a)[id.]typeId
(b)int,int1,int2orint4
(c)nat,nat1,nat2ornat4
(d)boolean
(e)char[(numberOfCharacters)]
(f)string[(maximumLength)]
(g)addressint
Inform(a)thebeginningidentifieridmustbethenameofamodule,monitororclassthatexportsthetypeId.EachofnumberOfCharactersandmaximumLengthmustbecompiletimeintegerexpressions.Thesearethesametargettypesasintypecheats.
Theindirectionoperator@takesanintegerasanaddress.Thisvaluemustfitintherangeofaddressint.Seeaddressint.Seealsopointertypesandthe^operator(whichaccessesobjectslocatedbypointers).
Seealsocheat.SeealsoexplicitIntegerConstant(whichexplainshowtowritehexadecimalconstants,whichareoftenusedforaddresses).
![Page 494: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/494.jpg)
infix operator
Syntax
AninfixOperatorisoneof:
(a) + %Integerandrealaddition;setunion;
%stringcatenation
(b) - %Integerandrealsubtraction;setdifference
(c) * %Integerandrealmultiplication;setintersection
(d) / %Realdivision
(e) div %Truncatingintegerdivision
(f) mod %Modulo (g) rem %Remainder
(h) ** %Integerandrealexponentiation
(i) < %Lessthan (j) > %Greaterthan (k) = %Equal
(l) <= %Lessthanorequal;subset
(m) >= %Greaterthanorequal;superset
(n) not= %Notequal
(o) and %And(booleanconjunction)
![Page 495: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/495.jpg)
(p) or %Or(booleandisjunction)
(q) => %Booleanimplication (r) in %Memberofset (s) notin %Notmemberofset (t) shr %Shiftright (u) shl %Shiftleft (v) xor %ExclusiveOR
Aninfixoperatorisplacedbetweentwovaluesoroperandstoproduceathirdvalue.Forexample,theresultof5+7is12.Insomecasesthemeaningoftheoperatorisdeterminedbyitsoperands.Forexample,in"pine"+"apple",the+operatormeansstringcatenationwhilein5+7itmeansintegeraddition.Therearealsoprefixoperators(-,+andnot),whichareplacedinfrontofasinglevalue.Seeprefixoperator.
Inexpressionswithseveraloperators,suchas3+4*5,theprecedencerulesdeterminetheorderinwhichtheoperationisdone(seeprecedenceforalistingoftheserules).Inthisexample,themultiplicationisdonebeforetheaddition,sotheexpressionisequivalentto3+(4*5).
Thenumerical(integerorreal)operatorsare+,-,*,/,div,mod,and**.Alloftheseexceptdivproducearealresultwhenatleastoneoftheiroperandsisreal.Ifbothoperandsareintegers,theresultisanintegerexceptinthecaseofrealdivision(/)whichalwaysproducesarealresultregardlessoftheoperands.
Thedivoperatorislikerealdivision(/),exceptthatitalwaysproducesanintegerresult,truncatinganyfractiontoproducethenearestintegerinthedirectionofzero.
Themodoperatoristhemoduloandtheremoperatoristheremainder.Thesignoftheresultofmodoperatoristhesameasthesignofthesecondoperand.TheremoperatoroperateslikethemodoperatorinTuring(andinmostotherlanguages).It
![Page 496: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/496.jpg)
Descriptionproducestheremainder,whichisthedifferencebetweenrealdivision(/)andintegerdivision(div).Whenbothoperandsarepositive,thisisthemodulo.Forexample,14mod10is4.Ifoneoftheoperandsisnegative,anegativeanswermayresult,forexample,7mod2is1.Seealsotheintandrealtypes.
Thecomparisonoperators(<,>,=,<=,>=,not=)canbeappliedtonumbersaswellastoenumeratedtypes.Theycanalsobeappliedtostringstodeterminetheorderingbetweenstrings(seestringtypefordetails).Arrays,records,unionsandcollectionscannotbecompared.Booleanvalues(trueandfalse)canbecomparedonlyforequality(=andnot=);thesameappliestopointervalues.Setvaluescanbecomparedusing<=and>=,whicharethesubsetandsupersetoperators.Thenot=operatorcanbewrittenas~=.
Stringsaremanipulatedusingcatenation(+)aswellassubstringexpressions(seesubstring)andtheindexfunction(seeindex).Seealsothestringtype.
Theoperatorstocombinetrue/falsevaluesareand,or,and=>(implication),aswellasequality(=andnot=).Seealsothebooleantype.
Thesetoperatorsareunion(+),intersection(*),setdifference(-),subset(<=),superset(>=),andmembership(inandnotin).Seealsothesettype.
Theshr(shiftright),shl(shiftleft)andxor(exclusiveOR)operatorsacceptandproducenaturalnumbers.Seeshr,shl,andxor.
![Page 497: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/497.jpg)
inherit inheritanceclause
Syntax
AninheritClauseis:
inheritinheritItem
Description
Aninheritclausespecifiesthattheclasscontainingtheclauseistobeanexpansionofanotherclass.Thisexpansioniscalledinheritance.Theclasscontainingtheclausegainsaccessto(inherits)allthedeclarationsinsidethetargetitem.Expansionsareusedtoaddnewdeclarationsandexportsandtosupportpolymorphism(overridingsubprograms).
Example
Hereisanexampleofastackclass.Followingit,weshowanotherclass,calledstackWithDepth,thatinheritsstackbyaddingafunctioncalleddepth.
classstack
exportpush,pop
vartop:int:=0
varcontents:array1..100ofstring
procedurepush(s:string)
top:=top+1
contents(top):=s
endpush
procedurepop(vars:string)
s:=contents(top)
top:=top-1
endpop
endstack
Nextcomesanexpansion,whichinheritstheinternaldeclarationsofthestackclassandaddsthedepthfunction.
classstackWithDepth
inheritstack
exportdepth
functiondepth:int
resulttop
endpush
endstackWithDepth
![Page 498: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/498.jpg)
Details
ObjectsoftheinheritedclassstackWithDeptharelikeobjectsoftheparentclassstack,exceptthereisanadditionalexportedfunctionnameddepth
AninheritItemisoneof:
(a)id (b)idinfileName
Thesecondformisusedwhentheinheritclauseisforaseparateunittheimporteditemisinafilewhosenameisdifferentfromtheitem'sname,forexample:
inheritledgerin"newledg.t"
ThefileNamemustbeanexplicitcharacterstring,e.g.,"newledg.t".Parenthesesareallowedaroundtheiteminaninheritclause,asin:
inherit(ledgerin"newledg.t")
Thereisaspecialformofinheritclause,calledanimplementclauseisusedtoseparateaninterfacefromanimplementation.Modulesandmonitors,aswellasclasses,usetheseclauses.Seeimplementclauseandimplementbyclause.
IfclassDinheritsclassC,wesaythatCistheparentandDisthechildClassBissaidtobeanancestorofclassD(andDisthedescendantifBandDarethesameclass,orifBistheparentofD,orifBistheparentoftheparentofD,etc.Wewritethisasfollows:
B<=D%BisanancestorofD
IfBisanancestorofDbutnotthesameasD,wesayBisastrictancestorofD.Wewritethisas:
B<D%BisastrictancestorofD
WealsousethenotationsD>=B,D>BandD=Bwiththeobviousmeanings.Allofthesenotationscanbeusedinaprogram.Theirmainuseisinconjunctionwithobjectclass,whichdeterminestheclassofanobjectlocatedbyapointer.Forexample,ifpisdeclaredtobeapointertoawecanwritethefollowingtoseeifpcurrentlylocatesanobjectwiththe
![Page 499: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/499.jpg)
depthoperation:
%Doestheobjectlocatedbyphavethedepthoperation
ifstackWithDepth<=objectclass(p)then
ApointerthatlocatesanobjectcreatedasclassEcanbeassignedtoapointertoclassB,onlyifBisanancestorofE.Forexample,apointertoanobjectthatisastackWithDepthcanbeassignedtoapointertostacknotviceversa.Thepointernilcanbeassignedtoanypointervariable,butthevaluenil(C)canonlybeassignedtoapointertoanancestorofC.
Anobject(locatedbyapointer)canbeassignedtoanotherobjectonlyiftheywerecreatedasobjectsofthesameclass.However,assignmentofobjectsthataremonitorsorthatcontaindynamicarraysorcollectionsisnotallowed.
Circular(recursive)inheritsarenotallowed.Forexample,ifunitBAthenAcannotinheritB.Onlyoneitemisallowedinaninheritclause;inotherwords,Turingsupportssingleinheritancebutnotmultipleinheritance.
Seeimplementclauseforaspecialkindofexpansionthatseparatesamodule,monitororclass'interfacefromitsimplementation.Seeclassanexampleofpolymorphism,inwhichaninheritingclassoverridessubprogramsofitsparentclass.
Theinitializationofamodule,amonitororanobjectisimmediatelyprecededbytheinitializationoftheitemthatitinheritsorimplements(ifany).Correspondingly,iftheitemhasanimplementbyclause,theimplementationisinitializedimmediatelyaftertheinitializationofthecurrentitem.
WithinaclassC,withancestorB,youcanforceacalltoexportedsubprogrampusingtheformC.p(orB.p).ThiscallsthesubprogramdeclaredinC(orinBinthecaseofB.p),regardlessoftheactualclassoftheobjectandanyoverridingofp.ThisissimilartothenotationCtheC++language.ThisnotationcanonlybeusedinsideclassC.
Seealso
unit,module,monitorandclass.Seealsoexportlist,importlist,implementclause,implementbyclauseanddeferredsubprogram.See
![Page 500: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/500.jpg)
alsoobjectclass.
![Page 501: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/501.jpg)
init arrayinitialization
Syntax init
Description
Theinit(initialization)keywordisusedfortwodifferentpurposesinTuring.Themostcommonisforinitializingarrays,recordsandunions.Thelesscommonisforrecordingparametervaluesinsubprogramsforlateruseinpostconditions.
Example
varmensNames:array1..3ofstring:=
init("Tom","Dick","Harry")
putmensNames(2)%ThisoutputsDick
varnames:array1..2,1..3ofstring:=
init("Tom","Dick","Harry",
"Alice","Barbara","Cathy")
putnames(2,1)%ThisoutputsAlice
Details
Theorderofinitializingvaluesformulti-dimensionalarraysisbasedonvaryingtherightsubscripts(indexes)mostrapidly.Thisiscalledrowmajororder.Initializationofrecordsandunionsisanalogoustoinitializingarrays.Valuesarelistedintheorderinwhichtheyappearinthetype.Seearray,record,anduniontypes.
Example
Thisprocedureissupposedtosetintegervariableitoanintegerapproximationofitssquareroot.Theinitclauserecordstheinitialvalueofiasjsoitcanbeusedinthepostconditiontomakesurethattheapproximationissufficientlyaccurate.Thenamejcanbeusedonlyinthepostconditionandnowhereelseintheprocedure.
procedureintSqrt(vari:int)
prei>=0
initj:=i
postabs(i-sqrt(j))<=1
…statementstoapproximatesquareroot…
endintSqrt
Seealso preandpostassertionsandprocedureandprocessdeclarations.
![Page 502: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/502.jpg)
Input
Description
Thisunitcontainsthepredefinedproceduresthatdealwithhandlinginputonacharacter-by-characterbasis.
AllroutinesintheInputmoduleareexportedunqualified.(Thismeansyoucancalltheentrypointsdirectly.)
EntryPoints
getch Getsthenextcharacterinthekeyboardbuffer(procedurewithastring(1)argument).
hasch Returnstrueiftherearecharacterswaitinginthekeyboardbuffer.
getchar Getsthenextcharacterinthekeyboardbuffer(functionreturningachar).
Pause Waitsforakeytobepressed.KeyDown Detectwhichkeysarecurrentlypressed.Flush Emptythekeyboardbuffer.
![Page 503: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/503.jpg)
Input.getch PartofInputmodule
Syntax getch(varch:string(1))
Description
Thegetchprocedureisusedtoinputasinglecharacterwithoutwaitingfortheendofaline.Theparameterchissettothenextcharacterinthekeyboardbuffer(theoldestnot-yet-readcharacter).
Example
ThisprogramcontainsaprocedurecalledgetKeywhichcausestheprogramtowaituntilakeyispressed.
View.Set("graphics")
proceduregetKey
varch:string(1)
getch(ch)
endgetKey
fori:1..1000
puti:4,"Pausetillakeyispressed"
getKey
endfor
Details
Thescreenshouldbeina"screen"or"graphics"mode.SeetheView.Setprocedurefordetails.Ifthescreenisnotinoneofthesemodes,itwillautomaticallybesetto"screen"mode.
Somekeys,suchastheleftarrowkey,insertkey,deletekey,andfunctionkeysdonotproduceordinarycharactervalues.Thesekeystrokesarereturnedbygetchasspecialvalues.SeeAppendixDforthesevalues.
Status
Exportedunqualified.
ThismeansthatyoucancallthefunctionbycallinggetchorbycallingInput.getch.
Seealsohasch(hascharacter)procedurewhichisusedtoseeifacharacterhasbeentypedbutnotyetread.
![Page 504: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/504.jpg)
Input.getchar PartofInputmodule
Syntax getchar:char
Description
Thegetcharfunctionisusedtoinputasinglecharacterwithoutwaitingfortheendofaline.Thenextcharacterinthekeyboardbuffer(theoldestnot-yet-readcharacter)isreturned.
Example
ThisprogramcontainsaprocedurecalledgetKeywhichcausestheprogramtowaituntilakeyispressed.
View.Set("graphics")
proceduregetKey
varch:char
ch:=getchar
endgetKey
fori:1..1000
puti:4,"Pausetillakeyispressed"
getKey
endfor
Details
Thescreenshouldbeina"screen"or"graphics"mode.SeetheView.Setprocedurefordetails.Ifthescreenisnotinoneofthesemodes,itwillautomaticallybesetto"screen"mode.
Somekeys,suchastheleftarrowkey,insertkey,deletekey,andfunctionkeysdonotproduceordinarycharactervalues.Thesekeystrokesarereturnedbygetchasspecialvalues.SeeAppendixDforthesevalues.
Status
Exportedunqualified.
ThismeansthatyoucancallthefunctionbycallinggetcharorbycallingInput.getchar.
Seealsohasch(hascharacter)procedurewhichisusedtoseeifacharacterhasbeentypedbutnotyetread.
![Page 505: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/505.jpg)
Input.hasch PartofInputmodule
Syntax hasch:boolean
DescriptionThehaschprocedureisusedtodetermineifthereisacharacterthathasbeentypedbutnotyetbeenread.
Example
Theflushproceduregetsridofanycharactersthathavebeentypedbutnotyetread.
procedureflush
varch:string(1)
loop
exitwhennothasch
getch(ch)%Discardthischaracter
endloop
endflush
Details
Thescreenshouldbeina"screen"or"graphics"mode.SeetheView.Setprocedurefordetails.Ifthescreenisnotinoneofthesemodes,itwillautomaticallybesetto"screen"mode.
Status
Exportedunqualified.
ThismeansthatyoucancallthefunctionbycallinghaschorbycallingInput.hasch.
Seealso getchandgetchar.
![Page 506: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/506.jpg)
Input.Flush PartofInputmodule
Syntax Input.Flush
Description
TheInput.Flushprocedureemptiesthekeyboardbuffer.Itisoftenusedtoavoidaccidentallyreadingmultiplekeystrokesbecausetheuserpressedakeyfortoolong,causingautorepeat.
Example
Thisprogramechoesinputfromthekeyboardatarateof10characterspersecond.Ifyouholddownakey,theechoingwillstopassoonasyoustoppressingthekey.WithouttheInput.Flush,theprogramcontinuestoechomanymorekeystrokesthathaveaccumulatedinthekeyboardbuffer.
loop
ifhaschthen
putgetchar..
Input.Flush
delay(100)
endif
endloop
Execute
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingInput.Flush,notbycallingFlush.
![Page 507: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/507.jpg)
Input.KeyDown PartofInputmodule
Syntax Input.KeyDown(varchars:arraycharofboolean)
Description
TheInput.Keydownprocedureallowsaprogramtoreadwhichkeysarecurrentlybeingpressed.Thisprocedureisdifferentfromgetchinthatitallowsaprogramtodetectwhenauserpressesandreleasesabutton.Assuch,itisnottobeusedinconjunctionwithgetch.
Theprocedurecanbeusedingameswhereanactiontakesplacewhileakeyisdepressed.
Example
DetermineiftheTkeyispressed.Notethatwecheckforthelowercaseletter.
varchars:arraycharofboolean
Input.KeyDown(chars)
ifchars('t')then
put"TheTkeyispressed"
endif
Details
Thearrayreturnedisalistofallthecharacters.Akeyiscurrentlypressedifthearrayelementwiththecorrespondingcharacteristrue.Forexample,theakeyispressedischars('a')istrue.Notethateachkeyisindividuallyrepresented,soiftheuserhaspressedShift+atogeta'A',thenInput.KeyDownwouldregisterShiftand'a'aspressed,butnot'A'.
AfulllistofallthepossiblecharactersthatcanbesetwithInput.KeyDowncanbefoundintheKeyCodesappendix.
Details
Thearrayreturnedisalistofallthecharacters.Akeyiscurrentlypressedifthearrayelementwiththecorrespondingcharacteristrue.Forexample,theakeyispressedischars('a')istrue.Notethateachkeyisindividuallyrepresented,soiftheuserhaspressedShift+atogeta'A',thenInput.KeyDownwouldregisterShiftand'a'aspressed,butnot'A'.
![Page 508: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/508.jpg)
Details
Thenumberofkeysthatcanbepressedsimultaneouslyishardwaredependent.Mostkeyboardscandetectaminimumoftwokeys+Shift+Control+Alt.Thismeansthatifyouaredesigningatwoplayergametobeplayedatasinglekeyboardandyouwishtomakecertainthatplayerscannot“hogthekeyboard”byholdingdownkeys,youshouldnotusemorethan6differentkeysandthreeofthemshouldbetheShift,ControlandAltkeys.
Example
Theprogramreadsthekeyboardanddisplaysamessagewhilethearrowkeysarepressed.Itcandetectuptoallfourarrowkeyspressedatonce.
varchars:arraycharofboolean
loop
Input.KeyDown(chars)
locate(1,1)
ifchars(KEY_UP_ARROW)then
put"UpArrowPressed"..
else
put""..
endif
ifchars(KEY_RIGHT_ARROW)then
put"RightArrowPressed"..
else
put""..
endif
ifchars(KEY_LEFT_ARROW)then
put"LeftArrowPressed"..
else
put""..
endif
ifchars(KEY_DOWN_ARROW)then
put"DownArrowPressed"..
else
put""..
endif
endloop
![Page 509: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/509.jpg)
Execute
Example
Anotherexampleisavailablethatchecksforallpossiblekeys.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingInput.KeyDown,notbycallingKeyDown.
![Page 510: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/510.jpg)
Input.Pause PartofInputmodule
Syntax Input.Pause
Description
TheInput.Pauseproceduresimplywaitsforakeytobepressedandthenreturns.Itechoesthekeypressedifechomodeisset.(SeeView.Setforsettingechomode)
Thissubprogramhelpsavoidhavingtodeclareavariabledeclarationandthenmakeacalltogetchorgetchar.
Example
Thisprogrampausesaftereverynamereadfromthefile.
varf:int
varline:string
open:f,"data.txt",get
loop
exitwheneof(f)
get:f,line:*
putname
Input.Pause
endloop
close:f
Execute
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingInput.Pause,notbycallingPause.
![Page 511: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/511.jpg)
int integertype
Syntax int
Description
Theint(integer)typehasthevalues…2,1,0,1,2…Integerscanbecombinedbyvariousoperatorssuchasaddition(+)andmultiplication(*).Integerscanalsobecombinedwithrealnumbers,inwhichcasetheresultisgenerallyarealnumber.Anintegercanalwaysbeassignedtoarealvariable,withimplicitconversionto
Examplevarcounter,i:int
varj:int:=9
vartax:=0%Thetypeisimplicitlyint
Details
SeealsoexplicitIntegerConstant.Therealtypeisusedinsteadofinthavefractionalpartsasin16.837.Seetherealtypefordetails.
Theoperatorsonintegersare+,-,*(multiply),div(truncatingintegerdivision),(integerremainder),**(exponentiation),aswellascomparisons(+,<=).Theoperatorsand,orandxorcanbeappliedtonon-negativeintegervalues.Thebit-wisebooleanresultisproducedasaninteger(actually,asanaturalnumber).Theshr(shiftright)andshl(shiftleft)operatorsarealsointroduced.
Realnumberscanbeconvertedtointegersusingceil(ceiling),floordescriptionsofthesefunctions).Integerscanbeconvertedtorealnumbersusingintreal,butinpracticethisisrarelyused,becauseanintegervalueusedinplaceofarealvaluewillbeautomaticallyconvertedtoreal.
IntegerscanbeconvertedtostringsandbackusingintstrandstrintconvertedtocorrespondingASCII(orEBCDIC)charactersusingchrthedescriptionsofthesefunctions.
Pseudo-randomsequencesofintegerscanbegeneratedusingrandint
IncurrentimplementationsofTuring,therangeofintegersisfrom-2147483647to2147483647.Inotherwords,themaximumsizeofintegeris2**31-1.SeeThisrangeexistsbecauseintegersarestoredin4bytes.Theremainingnegativevalue,-2147483648recordsuninitialization.Thetypesint1,int2andintegersthatfitinto1,2or4bytes.Theintntypes(int1,int2andint4
![Page 512: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/512.jpg)
checkedforinitializationandallowalltheirbitpatternsasnumbers.
Thenaturalnumbertypenatallowsonlythenon-negativevalues:0,1,2,3,…Naturalnumbervaluescanbeusedwheneverintegervaluesareexpectedandviceversa,giventhatthevaluedoesnotexceedtherangeoftheexpectedtype.
Seealso natandintn.
![Page 513: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/513.jpg)
intn n-byteintegertype
Dirty
Syntax (a) int1 %1-byteinteger (b) int2 %2-byteinteger (c) int4 %4-byteinteger
Description
Theintn(n-byteinteger)typesaremachine-dependenttypesthatoccupyaspecifiednumberofbytes.Bycontrast,theinttypeisinprincipleamachine-independentandmathematicaltype(itoverflows,however,whenthevalueistoolargeorsmall,thatis,whenthevaluedoesnotfitinto4bytes).
Examplevarcounter1:int1%Rangeis-128..127
varcounter2:int2%Rangeis-32768..32767
varcounter4:int4%Rangeis-2147483648..2147483647
Details
IncurrentimplementationsofTuring,therangeoftheintis-2147483647to2147483647,whichmeansthattheint4typeallowsonemorevalue,-2147483648.Thisextravalueisusedininttorepresentthestateofbeinginitialized.Theintntypesallowuseofallpossiblevaluesthatfitintonbytesandtherebycannotcheckforinitialization.
TheintntypesareliketheClanguagetypesshortint,int,andlongint,exceptthatthenumberofbytesoccupiedbytheCtypesdependsontheparticularCcompiler.
Seealsothenatntypeswhicharenbytenatural(non-negative)values.Seealsointandnat.
![Page 514: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/514.jpg)
intreal integer-to-realfunction
Syntax intreal(i:int):real
Description
Theintrealfunctionisusedtoconvertanintegertoarealnumber.Thisfunctionisrarelyused,becauseinTuring,anintegervaluecanbeusedwhereeverarealvalueisrequired.Whentheintegervalueisusedwherearealvalueisrequired,theintrealfunctionisimplicitlycalledtodotheconversionfrominttoreal.
Seealso floor,ceilandroundfunctions.
![Page 515: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/515.jpg)
intstr integer-to-stringfunction
Syntax intstr(i:int[,width:int[,base:int]]):string
Description
Theintstrfunctionisusedtoconvertanintegertoastring.Thestringisequivalenttoi,paddedontheleftwithblanksasnecessarytoalengthofwidth,writteninthegivennumberbase.Forexample,intstr(14,4,10)="bb14"wherebrepresentsablank.Thewidthandbaseparametersarebothoptional.Iftheyareomitted,thestringismadejustlongenoughtoholdthevalue,andthenumberbaseis10.Forexample,intstr(14,4)="bb14"andintstr(23)="23".
Thewidthparametermustbenon-negative.Ifwidthisnotlargeenoughtorepresentthevalueofi,thelengthisautomaticallyincreasedasneeded.
Thestringreturnedbyintstrisoftheform:
{blank}[-]digit{digits}
where{blank}meanszeroormoreblanks,[-]meansanoptionalminussign,anddigit{digit}meansoneormoredigits.Theleftmostdigitiseithernon-zeroorelseasinglezerodigit.Inotherwords,leadingzerosaresuppressed.
ThelettersA,B,C…areusedtorepresentthedigitvalues10,11,12,…Thebasemustbeintherange2to36(36becausetherearetendigitsand26letters).Forexample,intstr(255,0,16)="FF".
Theintstrfunctionistheinverseofstrint,soforanyintegeri,
strint(intstr(i))=i.
Seealso
chr,ordandstrintfunctions.Seealsothenatstrandstrnatfunctions.SeealsoexplicitIntegerConstantsforthewaytowritenonbase10valuesinaprogram.
![Page 516: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/516.jpg)
invariant assertion
Syntax
AninvariantAssertionis:
invarianttrueFalseExpn
Description
Aninvariantassertionisaspecialformofanassertstatementthatisusedonlyinloopandforstatementsandinmodules,monitors,andclasses.Itisusedtomakesurethataspecificrequirementismet.ThisrequirementisgivenbythetrueFalseExpn.ThetrueFalseExpnisevaluated.Ifitistrue,alliswellandexecutioncontinues.Ifitisfalse,executionisterminatedwithanappropriatemessage.Seeassert,loopandforstatementsandthemoduledeclarationsformoredetails.
Example
Thisprogramusesaninvariantinaforloop.TheinvariantusesthefunctionnameInListtospecifythatakeyhasnotyetbeenfoundinanarrayofnames.
varname:array1..100ofstring
varkey:string
…inputnameandkey…
functionnameInList(n:int):boolean
fori:1..n
ifkey=name(i)then
resulttrue
endif
endfor
resultfalse
endnameInList
forj:1..100
invariantnotnameInList(j-1)
ifkey=name(j)then
put"Foundnameat",j
exit
endif
endloop
![Page 517: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/517.jpg)
Joystick
Description
ThisunitcontainsthepredefinedsubprogramthatdealwithreadingthejoystickinaTuringprogram.Theroutinesallowyoutogetthecurrentjoystickpositionandwhethereitheroneofthetwobuttonsarepressed.
AllroutinesintheJoystickmoduleareexportedqualified(andthusmustbeprefacedwith"Joystick.").AlltheconstantsareexportedunqualifiedandthusdonotneedtheJoystickprefix.
EntryPoints
joystick1,joystick2 joysticknamecontants(exportedunqualified)
GetInfo Readsthecurrentvalueofajoystickandstatusofthejoystickbuttons.
![Page 518: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/518.jpg)
Joystick.GetInfo PartofJoystickmodule
SyntaxJoystick.GetInfo(joystick:int,varxPos,yPos:int,btn1Pressed,btn2Pressed:boolean)
Description
Readsthepositionandbuttonstatusofthejoystickspecifiedbytheparameter.ThexandyparameterarereturnedinthexPosandyPosIfbutton1orbutton2onthejoystickarecurrentlypressed,btn1Pressedbtn2Pressedwillbesettotrue.Thejoystickparametercanbeeitherorjoystick2.
ThexandypositionsvaryfromjoyMintojoyMax.Tousethemwithrespecttoascreen,thecoordinatesreturnedfromJoystick.GetInfomustbetranslatedintoscreencoordinates.Thefollowingformulacanbeused:
screenX=round(maxx*(xPosjoyMin)/(joyMax
screenY=round(maxy*(yPosjoyMin)/(joyMax
Details
TheJoystickmodulecontainsundocumentedsubprogramsforthosewhoneedtoaccessmorethantwobuttonsoraxesonajoystick.ContactHoltSoftwareifyouneedmoreinformation.
Example
Thefollowingprogramoutputsthecurrentlocationofjoystick#1anddrawsacursoronthescreentopointoutwhereitisshowing.
varjx,jy,x,y,ox,oy:int:=1
varb1,b2,oB1,oB2:boolean:=false
loop
Joystick.GetInfo(joystick1,jx,jy,b1,b2)
%Convertjoystickcoordinatesintoscreencoordinates.
x=round(maxx*(jxjoyMin)/(joyMaxjoyMin
y=round(maxy*(jyjoyMin)/(joyMaxjoyMin
ifxnot=oxorynot=oyorb1not=oB1or
Text.Locate(1,1)
put"x=",x,"y=",y,"b1=",b1
View.Set("xor")
Draw.Line(ox10,oy,ox+10,oy,brightred
Draw.Line(ox,oy10,ox,oy+10,brightred
Draw.Line(x10,y,x+10,y,brightred
Draw.Line(x,y10,x,y+10,brightred
ox:=x
oy:=y
![Page 519: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/519.jpg)
oB1:=b1
oB2:=b2
endif
endloop
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingJoystick.GetInfobycallingGetInfo.
![Page 520: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/520.jpg)
Keyboard
Description
ThisunitcontainsalltheconstantsrepresentingboththecharactersandtheirordinalvaluesforallpossiblekeystrokesthatcanbereadbyTuring.
Constantsbeginningwith“KEY_”arecharvalues.ThesearethevaluesreturnedbygetchandusedasanindexintotheInput.KeyDownarray.TheconstantsthattheconstantsKEY_KEYPAD_5,KEY_SHIFT,KEY_CTRLandKEY_ALTcanonlybeusedinconjunctionwithInput.KeyDown.Thegetchandgetcharsubprogramsdonotreturnthesevalues.AllotherconstantswithwithSHIFT,CTRLandALTaspartofthenamecannotbecheckedforintheInput.KeyDownarray.
Constantsbeginningwith“ORD_”areintvaluesandrepresenttheordinalvalues(valuesreturnedbytheordfunction)forallthepossiblekeystrokes.
Hereisalistofmostoftheconstants
KEY_F1..KEY_F12
KEY_CTRL_A..KEY_CTRL_Z
KEY_SHIFT_F1.. KEY_ALT_A..KEY_ALT_Z
KEY_HOME
![Page 521: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/521.jpg)
KEY_SHIFT_F12KEY_CTRL_F1..KEY_CTRL_F12
KEY_ALT_1..KEY_ALT_0
KEY_ALT_F1..KEY_ALT_F12
KEY_UP_ARROW KEY_CTRL_UP_ARROWKEY_PGUP KEY_CTRL_PGUPKEY_LEFT_ARROW KEY_CTRL_LEFT_ARROWKEY_RIGHT_ARROW KEY_CTRL_RIGHT_ARROWKEY_END KEY_CTRL_ENDKEY_DOWN_ARROW KEY_CTRL_DOWN_ARROWKEY_PGDN KEY_CTRL_PGDNKEY_INSERT KEY_CTRL_INSERTKEY_DELETE KEY_CTRL_DELETEKEY_BACKSPACE KEY_KEYPAD_5*KEY_TAB KEY_SHIFT*KEY_ENTER KEY_CTRL*KEY_ESC KEY_ALT*KEY_CTRL_OPEN_BRACKET KEY_CTRL_BACKSLASHKEY_CTRL_CLOSE_BRACKET KEY_CTRL_CARETKEY_CTRL_UNDERSCORE KEY_CTRL_BACKSPACEKEY_ALT_MINUS KEY_ALT_EQUALSKEY_BACK_TAB KEY_SHIFT_TAB
Aboveconstantswith“ORD_”insteadof“KEY_”
ORD_A..ORD_Z ORD_0..ORD_9ORD_LOWER_A..ORD_LOWER_Z ORD_SPACE ORD_EXCALAMATION_MARKORD_QUOTATION_MARK ORD_HAS_MARKORD_DOLLAR_SIGN ORD_PERCENT_SIGN
![Page 522: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/522.jpg)
ORD_AMPERSAND ORD_SINGLE_QUOTEORD_OPEN_PARENTHESIS ORD_CLOSE_PARENTHESISORD_ASTERISK ORD_PLUSORD_COMMA ORD_MINUSORD_PERIOD ORD_DOTORD_SLASH ORD_COLONORD_SEMICOLON ORD_LESS_THANORD_EQUALS ORD_GREATER_THANORD_QUESTION_MARK ORD_AT_SIGNORD_OPEN_BRACKET ORD_BACKSLASHORD_CLOSE_BRACKET ORD_CARETORD_UNDERSCORE ORD_APOSTROPHEORD_OPEN_BRACE ORD_BARORD_CLOSE_BRACE ORD_TILDE
Charactersmarkedwithanasterisk(*)arekeysthatcanonlybedetectedusingInput.KeyDown.
AllconstantsintheKeyboardmoduleareexportedunqualified.(Thismeansyoucanusetheconstantsdirectlywithouthavingtousethequalifier"Keyboard.".)
Seealsogetch,getchar,andInput.KeyDown.
![Page 523: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/523.jpg)
length ofastringfunction
Syntax length(s:string):int
DescriptionThelengthfunctionreturnsthenumberofcharactersinthestring.Thestringmustbeinitialized.Forexample,length("table")is5.
Example
Thisprograminputsthreewordsandoutputstheirlengths.
varword:string
fori:1..3
getword
putlength(word)
endfor
Ifthewordsare"cat","robin"and"crow",theprogramwilloutput3,5and4.
Details
Thelengthfunctiongivesthecurrentlengthofthestring.Tofindthemaximumlengthofastring,useupper.Forexample,giventhedeclarationvars:string(10),upper(s)returns10.
Seealso upper.
![Page 524: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/524.jpg)
Limits
Description
Thisunitcontainsconstantsandfunctionsusedindeterminingthemathematicalaccuracyofthelanguage.
AllroutinesintheLimitsmoduleareexportedqualified(andthusmustbeprefacedwith"Limits.")exceptmaxint,maxnat,minintandminnat,whichareexportedunqualified(thismeansyoucancallthoseentrypointsdirectly).
EntryPoints
DefaultFW Defaultfractionwidthusedinprintingusingthe"put"statement.
DefaultEW Defaultexponentwidthusedinprintingusingthe"put"statement.
minint TheminimumintegerinTuring(exportedunqualified).
maxint ThemaximumintegerinTuring(exportedunqualified).
minnat TheminimumnaturalnumberinTuring(exportedunqualified).
maxnat ThemaximumnaturalnumberinTuring(exportedunqualified).
RealnumbersarerepresentedinTuringas:f*(radix**e)or0wherefornon-zerof:(1/radix)<=abs(f)andabs(f)<1.0minexp<=eande<=maxexp.
Radix The"radix"(usually2).NumDigits Thenumberofradixdigitsinf.MinExp "minexp"(thesmallestexponentallowed).MaxExp "maxexp"(thelargestexponentallowed).GetExp Functionthatreturnsthevalueof"e".SetExp Procedurethatsetsthevalueof"e".
![Page 525: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/525.jpg)
Rreb Therelativeround-offerrorbound.
![Page 526: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/526.jpg)
ln naturallogarithmfunction
Syntax ln(r:real):real
DescriptionThelnfunctionisusedtofindthenaturallogarithm(basee)ofanumber.Forexample,ln(1)is0.
Example
Thisprogramprintsoutthelogarithmsof1,2,3,…upto100.
fori:1..100
put"Logarithmof",i,"is",ln(i)
endfor
DetailsSeealsotheexp(exponential)function.Youcannottakethelogarithmofzerooranegativenumber.
Note logn(i)=ln(i)/ln(n)
Seealsoexp(theexponentiationfunction).
SeealsopredefinedunitMath.
![Page 527: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/527.jpg)
locate procedure
Syntax locate(row,column:int)
Description
Thelocateprocedureisusedtomovethecursorsothatthenextoutputfromputwillbeatthegivenrowandcolumn.Row1isthetopofthescreenandcolumn1istheleftsideofthescreen.
Example
Thisprogramoutputsstarsofrandomcolorstorandomlocationsonthescreen.Thevariablecolrispurposelyspelleddifferentlyfromthewordcolortoavoidtheprocedureofthatname(usedtosetthecolorofoutput).Therownumberispurposelychosensothatitisonelessthanmaxrow.Thisavoidsthescrollingofthescreenwhichoccurswhenacharacterisplacedinthelastcolumnofthelastrow.
setscreen("screen")
varrow,column,colr:int
loop
randint(row,1,maxrow-1)
randint(column,1,maxcol)
randint(colr,0,maxcolor)
color(colr)
locate(row,column)
put"*"..%Usedot-dottoavoidclearingendofline
endloop
Details
Thelocateprocedureisusedtolocatethenextoutputbasedonrowandcolumnpositions.Seealsothelocatexyprocedurewhichisusedtolocatetheoutputbasedxandypositions,wherex=0,y=0istheleftbottomofthescreen.
Thescreenshouldbeina"screen"or"graphics"mode.Seethesetscreenprocedurefordetails.Ifthescreenisnotinoneofthesemodes,itwillautomaticallybesetto"screen"mode.
Seealsosetscreenanddrawdot.
SeealsopredefinedunitText.
![Page 528: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/528.jpg)
locatexy graphicsprocedure
Syntax locatexy(x,y:int)
Description
Thelocatexyprocedureisusedtomovethecursorsothatthenextoutputfromputwillbeatapproximately(x,y).Theexactlocationmaybesomewhattotheleftofxandbelowytoforcealignmenttoacharacterboundary.
Example
Thisprogramoutputs"Hello"startingatapproximately(100,50)onthescreen.
setscreen("graphics")
locatexy(100,50)
put"Hello"
Details
Thelocatexyprocedureisusedtolocatethenextoutputbasedonxandypositions,wherethepositionx=0,y=0istheleftbottomofthescreen.Seealsothelocateprocedurewhichisusedtolocatetheoutput-basedrowandcolumnpositions,whererow1isthetoprowandcolumn1istheleftcolumn.
Thescreenshouldbeina"graphics"mode.Seethesetscreenprocedurefordetails.Ifthescreenisnotina"graphics"mode,itwillautomaticallybesetto"graphics"mode.
Seealsosetscreenanddrawdot.
SeealsopredefinedunitText.
![Page 529: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/529.jpg)
loop statement
Syntax
AloopStatementis:
loop statementsAndDeclarations endloop
Description
Aloopstatementcausesthestatements(anddeclarations)inittoberepeatedlyexecuted.Thiscontinuesuntilterminatedbyoneofitsenclosedexitstatements(orbyanenclosedreturnorresultstatement).
Example
Outputonseparatelines:Happy,Happy,Happy,etc.
loop
put"Happy"
endloop
Example
ReadwordsuptothewordStop.
varword:string
loop
getword
exitwhenword="Stop"
endloop
Details
Aloopstatementcancontainmorethanoneexit,ornoneatall(inwhichcaseitisaninfiniteloop).Whentheexitwhenisatthebeginningoftheloop,theloopworkslikePascal'sdowhile;whenattheend,theloopworkslikePascal'srepeatuntil.
Justprecedingthestatementsanddeclarations,youareallowedtowritean"invariantclause"oftheform:
invarianttrueFalseExpn
Thisclauseisequivalentto:asserttrueFalseExpn.
![Page 530: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/530.jpg)
lower bound
Syntax lower(reference[,dimension]):int
Description
Thelowerattributeisusedtofindthelowerboundofanarray,string,char(n)ornon-opaquesubrangetype.Sincethelowerboundisnecessarilyknownatcompiletime,lowerisrarelyused.
Seealso upperwhichfindstheupperbound.
![Page 531: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/531.jpg)
Math
Description
Thisunitcontainsallthemathematicalroutines.Therearethreeroutinesthatarepartofthelanguage,butareconceptuallypartoftheMathunit.
AllroutinesintheMathunitexceptMath.DistanceandMath.DistancePointLineareexportedunqualified.(Thismeansyoucancalltheentrypointsdirectly.)Math.DistanceandMath.DistancePointLineareexportedqualified.AllconstantsintheMathunitareexportedqualified.(BothMath.PIandMath.Emustbeprefacedwith"Math.".)
DescriptionsofallthesubprogramsintheMathmodulecanbefoundinthischapter.
ConstantsMath.PI Theconstantp(3.14...).Math.E Thenaturalbasee(2.718...).
EntryPoints
abs* Theabsolutevaluefunction.arccos Thearccosfunction(radians).arccosd Thearccosfunction(degrees).arcsin Thearcsinfunction(radians).arcsind Thearcsinfunction(degrees).arctan Thearctanfunction(radians).arctand Thearctanfunction(degrees).cos Thecosinefunction(radians).cosd Thecosinefunction(degrees).exp Theexponentiationfunction.ln Thenaturallogarithmfunction.max* Themaximumvaluefunction.min* Theminimumvaluefunction.sign Thesignfunction.sin Thesinefunction(radians).sind Thesinefunction(degrees).
![Page 532: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/532.jpg)
tan Thetangentfunction(radians).tand Thetangentfunction(degrees).sqrt Thesquarerootfunction.Distance Thedistancebetweentwopoints.
DistancePointLine Thedistancebetweenapointandalinesegment.
*Partofthelanguage,conceptuallypartoftheMathunit.
![Page 533: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/533.jpg)
Math.Distance PartofMathmodule
Syntax Math.Distance(x1,y1,x2,y2:real):real
Description Math.Distanceisusedtocalculatethedistancebetweentwopoints.(x1,y1)isthelocationofthefirstpoint,and(x2,y2)isthelocationofthesecondpoint.
Details TheparameterstoMath.Distancearereal,butyoucanpassintegervariablesandconstants.
Example Thisprogamdrawstwocircleswithradius75onthescreenandoutputswhethertheytouch.
varx1,y1,x2,y2:int
constRADIUS:int:=75
x1:=Rand.Int(RADIUS,maxx-RADIUS)
y1:=Rand.Int(RADIUS,maxy-RADIUS)
x2:=Rand.Int(RADIUS,maxx-RADIUS)
y2:=Rand.Int(RADIUS,maxy-RADIUS)
Draw.FillOval(x1,y1,RADIUS,RADIUS,brightred
Draw.FillOval(x2,y2,RADIUS,RADIUS,brightgreen
ifMath.Distance(x1,y1,x2,y2)<RADIUS*2then
put"Thetwocirclestouch"
else
put"Thetwocirclesdonottouch"
endif
Execute
Status Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingMath.Distance,notbycallingDistance.
![Page 534: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/534.jpg)
Math.DistancePointLine PartofMathmodule
Syntax Math.DistancePointLine(xp,yp,x1,y1,x2,y2:real):real
Description Math.DistancePointLineisusedtocalculatethedistancebetweenapointandalinesegment.Itisoftenusedingamestodetermineifacollisionhasoccurred.(xp,yp)isthelocationbetweenthepoint.(x1,y1)and(x2aretheendpointsofthelinesegment.
Details TheparameterstoMath.DistancePointLinearereal,butyoucanpassintegervariablesandconstants.Theparametersareinthesameorderasthesubprogramname(thatispoint,thenline).
Example Thisprogamdrawsalinesegmentandacirclewithradius75onthescreenandoutputswhethertheytouch.
varxp,yp,x1,y1,x2,y2:int
constRADIUS:int:=75
xp:=Rand.Int(RADIUS,maxx-RADIUS)
yp:=Rand.Int(RADIUS,maxy-RADIUS)
x1:=Rand.Int(0,maxx)
y1:=Rand.Int(0,maxy)
x2:=Rand.Int(0,maxx)
y2:=Rand.Int(0,maxy)
Draw.FillOval(xp,yp,RADIUS,RADIUS,brightred
Draw.Line(x1,y1,x2,y2,brightgreen)
ifMath.DistancePointLine(xp,yp,x1,y1,x2,y2
put"Thecircletouchestheline"
else
put"Thecircledoesnottouchtheline"
endif
Execute
Status Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingMath.DistancePointLine,notbycallingDistancePointLine.
![Page 535: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/535.jpg)
max maximumfunction
Syntax max(expn,expn)
Description
Themaxfunctionisusedtofindthemaximumoftwonumbers(thetwoexpn's).Forexample,max(5,7)is7.Ifbothnumbersareint,theresultisint.Ifbothnumbersarenat(naturalnumbers),theresultisnat.Butifoneorbothofthenumbersarereal,theresultisreal.Seealsotheminfunction.
Example
Thisprogramoutputs85.72.
varx:real:=74.61
vary:real:=85.72
putmax(x,y)%Outputs85.72
Example
Thisprograminputs10numbersandoutputstheirmaximum.
varm,t:real
getm%Inputfirstnumber
fori:2..10%Handleremaining9numbers
gett
m:=max(m,t)
endfor
put"Themaximumis",m
Seealso SeealsopredefinedunitMath.
![Page 536: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/536.jpg)
maxcol maximumcolumnfunction
Syntax maxcol:int
DescriptionThemaxcolfunctionisusedtodeterminethenumberofcolumnsonthescreen.
ExampleThisprogramoutputsthemaximumcolumnnumber.
put"Numberofcolumnsonthescreenis",maxrow
Details
ForIBMPCcompatiblesaswellasmostUNIXdumbterminals,in"text"or"screen"mode,maxcol=80.ForthedefaultIBMPCcompatible"graphics"mode(CGA),maxcol=40.
Seealso locateprocedureforanexampleoftheuseofmaxcol.
![Page 537: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/537.jpg)
maxcolor graphicsfunction
Syntax maxcolor:int
Description
Themaxcolorfunctionisusedtodeterminethemaximumcolornumberforthecurrentmodeofthescreen.Thealternatespellingismaxcolour.
Example
Thisprogramoutputsthemaximumcolornumber.
setscreen("graphics")
…
put"Themaximumcolornumberis",maxcolor
Details
Thescreenshouldbeina"screen"or"graphics"mode.Ifitisnot,itwillautomaticallybesetto"screen"mode.Seesetscreenfordetails.
ForIBMPCcompatiblesin"screen"mode,maxcolor=15.ForthedefaultIBMPCcompatible"graphics"mode(CGA),maxcolor=3.
Seealso
drawdotandpaletteforexamplesoftheuseofmaxcolor.Seethecolorprocedurewhichisusedforsettingthecurrentlyactivecolor.
![Page 538: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/538.jpg)
maxint maximumintegerfunction
Syntax maxint:int
DescriptionThemaxintfunctionisusedtodeterminethelargestinteger(int)thatcanbeusedinaprogram.
ExampleThisprogramoutputsthemaximuminteger.
put"Thelargestintegerthatcanbeusedis",
Details
IncurrentTuringandOOTimplementations,intvaluesarestoredin4bytes,i.e.,32bits.Thisdeterminesthemaximumintvalue,whichis2**311,equaling2147483647.
Thereisananomalyincomputerarithmeticinthattheabsolutevalueofthelargestnegativeintegerisonelargerthanmaxint.Turingreservesthisextravaluetorepresenttheuninitializedinteger.Thisvaluecanbecomputedbutanyattempttoassignittoanintvariableisdetectedasanoverflow.Youcanusethisextravaluebyusingtheint4typeinsteadofint,butthistypehasnoinitializationchecking.
Seealsomaxnatandminint.
SeealsoOOTpredefinedunitMath.
![Page 539: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/539.jpg)
maxnat maximumnaturalnumberfunction
Syntax maxnat:nat
DescriptionThemaxnatfunctionisusedtodeterminethelargestnaturalnumberthatcanbeusedinaprogram.
ExampleThisprogramoutputsthemaximumnaturalnumber.
put"Thelargestnaturalnumberthatcanbeusedis",
Details
Incurrentimplementations,naturalnumbersarestoredin4bytes,i.e.,32bits.Thisdeterminesthemaximumnaturalnumber,whichis2**32-2,equaling4294967294.
Infourbytesitispossibletorepresentonemorevalue,namely,2**32-1=4294967295.ThisextravalueisusedinTuringtorepresenttheuninitializednaturalnumber.Althoughitcanbecomputed,anyattempttoassignittoavariableisdetectedasanoverflow.Youcanusethisextravaluebyusingthetypeinsteadofnat,butthistypehasnoinitializationchecking.
Seealsomaxintandminnat.
SeealsopredefinedunitLimits.
![Page 540: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/540.jpg)
maxrow maximumrowfunction
Syntax maxrow:int
DescriptionThemaxrowfunctionisusedtodeterminethenumberofrowsonthescreen.
ExampleThisprogramoutputsthemaximumrownumber.
put"Numberofrowsonthescreenis",maxrow
DetailsForIBMPCcompatibles,maxrow=25.FormanyUNIXdumbterminals,maxrow=24.
Seealso locateprocedureforanexampleoftheuseofmaxrow.
![Page 541: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/541.jpg)
maxx graphicsfunction
Syntax maxx:int
DescriptionThemaxxfunctionisusedtodeterminethemaximumvalueofxforthecurrentgraphicsmode.
Example
Thisprogramoutputsthemaximumxvalue.
setscreen("graphics")
…
put"Themaximumxvalueis",maxx
Details
Thescreenshouldbeina"graphics"mode.Ifitisnot,itwillautomaticallybesetto"graphics"mode.Seesetscreenfordetails.
ForthedefaultIBMPCcompatiblegraphicsmode(CGA),maxx=319.
Seealsodrawdotforanexampleoftheuseofmaxxandforadiagramillustratingxandypositions.
![Page 542: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/542.jpg)
maxy graphicsfunction
Syntax maxy:int
DescriptionThemaxyfunctionisusedtodeterminethemaximumvalueofyforthecurrentgraphicsmode.
Example
Thisprogramoutputsthemaximumyvalue.
setscreen("graphics")
…
put"Themaximumyvalueis",maxy
Details
Thescreenshouldbeina"graphics"mode;.Ifitisnot,itwillautomaticallybesetto"graphics"mode.Seesetscreenfordetails.
ForthedefaultIBMPCcompatiblegraphicsmode(CGA),maxy=199.
Seealsodrawdotforanexampleoftheuseofmaxyandforadiagramillustratingxandypositions.
![Page 543: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/543.jpg)
min minimumfunction
Syntax min(expn,expn)
Description
Theminfunctionisusedtofindtheminimumoftwonumbers(thetwoexpn's).Forexample,min(5,7)is5.Ifbothnumbersareint,theresultisint.Ifbothnumbersarenat(naturalnumbers),theresultisnat.Butifoneorbothofthenumbersarereal,theresultisreal.Seealsothemaxfunction.
Example
Thisprogramoutputs74.61.
varx:real:=74.61
vary:real:=85.72
putmin(x,y)%Outputs74.61
Example
Thisprograminputs10numbersandoutputstheirminimum.
varm,t:real
getm%Inputfirstnumber
fori:2..10%Handleremaining9numbers
gett
m:=min(m,t)
endfor
put"Theminimumis",m
Seealso SeealsopredefinedunitMath.
![Page 544: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/544.jpg)
minint minimumintegerfunction
Syntax minint:int
DescriptionTheminintfunctionisusedtodeterminethesmallestinteger(int)thatcanbeusedinaprogram.
ExampleThisprogramoutputsthemaximuminteger.
put"Thesmallestintegerthatcanbeusedis",
Details
Incurrentimplementations,intvaluesarestoredin4bytes,i.e.,32bits.Thisdeterminestheminimumintvalue,whichis-2**31-1,equaling-2147483647.
Thereisananomalyincomputerarithmeticinthattheabsolutevalueofthelargestnegativeintegerisonelargerthanmaxint.Turingreservesthisextravaluetorepresenttheuninitializedinteger.Thisvaluecanbecomputedbutanyattempttoassignittoanintvariableisdetectedasanoverflow.Youcanusethisextravaluebyusingtheint4typeinsteadofbutthistypehasnoinitializationchecking.
Seealsominnatandmaxint.
SeealsopredefinedunitLimits.
![Page 545: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/545.jpg)
minnat minimumnaturalnumberfunction
Syntax minnat:nat
DescriptionTheminnatfunctionisusedtodeterminethesmallestnaturalnumberthatcanbeusedinaprogram.
ExampleThisprogramoutputsthesmallestnaturalnumber.
put"Thesmallestnaturalnumberthatcanbeusedis",
Details
IncurrentTuringandOOTimplementations,naturalnumbersarestoredin4bytes,i.e.,32bits.However,theminimumnaturalnumberinallimplementationsis0.minnatisprovidedforpurposesofsymmetrywithminint,maxint
Infourbytesitispossibletorepresentonemorevalue,namely,2**32-1=4294967295.ThisextravalueisusedinTuringtorepresenttheuninitializednaturalnumber.Althoughitcanbecomputed,anyattempttoassignittoadetectedasanoverflow.Youcanusethisextravaluebyusingthenat4ofnat,butthistypehasnoinitializationchecking.
Seealsominintandmaxnat.
SeealsopredefinedunitLimits.
![Page 546: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/546.jpg)
mod modulooperator
Syntax mod
Description
Themod(modulo)operatorproducesthemoduloofonenumberwithanother.Inotherwords,theresultisalwaysanumberbetween0andthesecondoperand.Ifbothoperandsarepositive,theresultisidenticaltotheremainderoperator.Forexample,7mod2produces1and12mod5produces3.
Example
Inthisexample,hoursisthecurrenttime.Itismovedbackandforthbyarandomamount,butthefinalresultmustalwaysbebetween1and12(themodoperationproducesanumberbetween0and11andthen0becomes12).
varhours:int:=12
varhoursPassed:int
put"Thetimeisnow",hours,"o'clock"
loop
randint(hoursPassed,-12,12)
exitwhenhoursPassed=0
ifhoursPassed<0then
puthoursPassed,"hoursbefore"..
else
puthoursPassed,"hourslater"..
endif
puthours,"o'clock"..
hours:=(hours+hoursPassed)mod12
ifhours=0then
hours=12
endif
put"itwas",hours,"o'clock"
endloop
Details
Ifthesecondoperandispositive,thentheresultisalwaysnon-negative.Likewise,ifthesecondoperandisnegative,thentheresultisalwaysnon-positive.Ifbothoperandsarenegative,theresultisthesameastheremainderoperator.
Seealsoinfixoperators,precedenceofoperatorsandtheremanddivoperators.
![Page 547: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/547.jpg)
module declaration
Syntax
AmoduleDeclarationis:
moduleid [implementimplementItem] [implementbyimplementByItem] [import[var]importItem {,[var]importItem}] [export[howExport]id{,[howExport]id}] statementsAndDeclarations endid
Description
Amoduledeclarationcreatesapackageofvariables,constants,types,subprograms,etc.Thenameofthemodule(id)isgivenintwoplaces,justaftermoduleandjustafterend.Itemsdeclaredinsidethemodulecanbeaccessedoutsideofthemoduleonlyiftheyareexported.Itemsfromoutsidethemodulethataretobeusedinthemoduleneedtobeimported(unlesstheyarepredefinedorpervasive).
Example
Thismoduleimplementsastackofstrings.
modulestack%ImplementsaLIFOlistofstrings
exportpush,pop
vartop:int:=0
varcontents:array1..100ofstring
procedurepush(s:string)
top:=top+1
contents(top):=s
endpush
procedurepop(vars:string)
s:=contents(top)
top:=top-1
endpop
endstack
![Page 548: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/548.jpg)
stack.push("Harvey")
varname:string
stack.pop(name)%ThissetsnametoHarvey
Outsideofthestackmodule,theprocedurespushandpopcanbecalledusingthenotationstack.pushandstack.pop.Thisaccessisallowedbecausepopareexportedfromthemodule.Otheritemsdeclaredinthemodule(contents)cannotbeaccessedfromoutsidebecausetheyarenotexported.
Details
Insomeotherprogramminglanguages,amoduleiscalledapackageobject.
Amoduledeclarationisexecuted(itisinitialized)byexecutingitsdeclarationsandstatements.Forexample,thestackmoduleisinitializedbysettingthevariableto0.Thisinitializationexecutesallthestatementsanddeclarationsinthemodulethatarenotcontainedinproceduresorfunctions.Theinitializationiscompletedbeforeanyprocedureorfunctionofthemodulecanbecalledfromoutsidethemodule.Anexportedsubprogrammustnotbecalleduntilinitializationofthemoduleiscomplete.
Acalltoanexportedprocedureorfunctionfromoutsidethemoduleexecutesthebodyofthatprocedureorfunction(themoduleisnotinitializedwitheachsuchcall).Seealsomonitorandclassdeclarations.
Theimportlistgivesthenamesofitemsdeclaredoutsidethemodulethatcanbeaccessedinsidethemodule.Sincestackhasnoimportlist,itisnotallowedtoaccessanynamesdeclaredoutsideofit.Seealsoimportlists.Separately-compiledunitsthatareimportedareinitializedbeforetheimportingunit.
Theexportlistisusedtoimplementinformationhiding,whichisolatesimplementationdetailsinsidethemodule.Theexportlistgivesthenamesofitemsdeclaredinsidethemodulethatcanbeusedoutsidethemodule.Forexample,pushandpopareexportedfromstack.Eachsuchuseofanexporteditemmustbeprecededbythemodulenameandadot,forexample,(Seeunqualifiedforadviceonhowtoavoidusingtheprefix"stack.thatarenotexported,suchastopandcontents,cannotbeaccessedoutsidethemodule.
Procedures,functions,variables,constantsandtypescanbeexported;modules,monitorsorclassescannotbeexported.
![Page 549: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/549.jpg)
Aclassisessentiallyatemplateforcreatingindividualmodules(objects).Seeclassfordetails.Amonitorisessentiallyamoduleinwhichonlyoneprocesscanbeactiveatatime.Seemonitorandprocessfordetails.
Theopaquekeywordisused(only)inexportliststoprecedeexportedtypenamesthathavedeclarationsinthemodule.Outsideofthemodule,thetypewillbedistinctfromallotherstypes.Thismeans,forexample,thatiftheopaquetypeisarecord,itsfieldscannotbeaccessedoutsideofthemodule.Opaquetypesareusedtoguaranteethatcertainitemsareinspectedandmanipulatedinonlyoneplace,namely,insidethemodule.Thesetypesaresometimescalledabstractdatatypes.Seealsoexportlists,whichalsodescribesunqualifiedandpervasiveexports.
Implementandimplement-bylistsareusedtoseparateamodule'sinterfacefromitsbody.Thisallowsonlyapartofamodule(itsinterface)tobevisibletoitsusers(itsimporters),whilehidingitsimplementation.Seeimplementimplementbylists.
Example
Useanopaquetypetoimplementcomplexarithmetic.
modulecomplex
exportopaquevalue,constant,add,
…otheroperations…
typevalue:
record
realPt,imagPt:real
endrecord
functionconstant(realPt,imagPt:real):
varanswer:value
answer.realPt:=realPt
answer.imagPt:=imagPt
resultanswer
endconstant
functionadd(L,R:value):value
varanswer:value
answer.realPt:=L.realPt+R.realPt
answer.imagPt:=L.imagPt+R.imagPt
resultanswer
endadd
…otheroperationsforcomplexarithmeticgohere…
endcomplex
![Page 550: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/550.jpg)
varc,d:complex.value:=complex.constant(1,5)
%canddbecomethecomplexnumber(1,5)
vare:complex.value:=complex.add(c,d)
%ebecomesthecomplexnumber(2,10)
Details
Moduledeclarationscanbenestedinsideothermodulesbutcannotbenestedinsideproceduresorfunctions.Amodulemustnotcontainabindasoneofits(outermost)declarations.Areturnstatementcannotbeusedasoneofthe(outermost)statementsinamodule.
ThesyntaxofamoduleDeclarationpresentedabovehasbeensimplifiedbyleavingoutpre,invariantandpostclauses;thefullsyntaxis:
moduleid
[implementimplementItem]
[implementbyimplementByItem]
[import[var]importItem{,[var]importItem
[export[howExport]id{,[howExport]id
[pretrueFalseExpn]
statementsAndDeclarations
[invarianttrueFalseExpn]
statementsAndDeclarations
[posttrueFalseExpn]
endid
Thetrue/falseexpressioninthepreandpostclausesmustbetruewheninitializationreacheseachofthem.Afterthat,thesehavenoeffect.Thetrue/falseexpressionintheinvariantmustbetrueanytimethemoduleisexited(whenfinishinginitializationorwhenreturningfromanexternalcalltoanexportedsubprogram)orcalled(viaanexportedsubprogram).Theseclauses(pre,postandinvariant)arenotinheritedbyexpansions.Forexample,ifmoduleBinheritsA,thesubprogramsofBareboundbyB'sclausesandnotbyA's.
Seealsounit,monitorandclass.Seealsoexportlist,importlist,implementimplementbylist,inheritlistanddeferredsubprogram.
![Page 551: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/551.jpg)
monitor declaration
Syntax
AmonitorDeclarationis:
monitorid [implementimplementItem] [implementbyimplementByItem] [import[var]importItem {,[var]importItem}] [export[howExport]id{,[howExport]id}] statementsAndDeclarations endid
Description
Amonitorisaspecialpurposemodule(seemodule)thatisusedwithconcurrentprocesses(seeprocess).Atmost,oneconcurrentprocess(seeprocess)canbeactiveinamonitoratatime.Thismeansthataprocesswillbeblockedifitcallsamonitorthatisalreadyactive.Theprocesswillnotbeallowedtoproceeduntilthemonitorisinactive.Themonitorprovidesmutuallyexclusiveaccesstothemonitor'sinternaldata.
Thismonitorcontrolsaccesstothecountvariablesoitcanbeupdatedbytwoprocesses(theobserverandthereporter)withoutbeingcorruptedbythisconcurrentaccess.Generally,itisnotsafetohaveoneprocessupdateavariablethatotherprocessesaresimultaneouslyaccessing.Theobserverprocessrepeatedlyincrementsthecounterwhenitobservesanevent.Thereporterprocessrepeatedlywritesoutthenumberofeventsthathaveoccurredsincethelastreport,resettingthecountertozero.
monitorcontroller
exportobserve,report
varcounter:int:=0
procedureobserve
counter:=counter+1
![Page 552: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/552.jpg)
Example
endobserve
procedurereport(varn:int)
n:=counter
counter:=0
endreport
endcontroller
processobserver
loop
…observeoneevent…
controller.observe
endloop
endobserver
processreporter
varn:int
loop
controller.report(n)
…reportnevents…
endloop
endreporter
forkobserver%Activatetheobserver
forkreporter%Activatethereporter
Details
Amonitorisessentiallyamoduleinwhichonlyoneprocesscanbeactiveatatime.Seemoduledeclarationsfordetailsaboutinitialization.Initializationisthesameformodulesandmonitors.
Amonitorcancontainwaitstatements(thatputprocessestosleep)andsignalstatements(thatwakethemupagain).Thesestatementsoperateonconditionvariables,whichareessentiallyqueuesofsleepingprocesses.
Aclassisessentiallyatemplateforcreatingindividualmodules(objects).Seeclassfordetails.Iftheclassdeclarationisprecededbythekeywordmonitor,thecreatedmodulesareactuallymonitors.Monitorclassescanonlyinherit(inheritfrom)othermonitorclasses.
Thebodyofamonitorhasthesameformasthatofamodule,exceptthatmodules,monitorsandprocessescannotbedeclaredinsidemonitors,andcertainstatements(waitandsignal)areallowedinmonitors.
![Page 553: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/553.jpg)
Details
ThesyntaxofamonitorDeclarationpresentedabovehasbeensimplifiedbyleavingoutpre,invariantandpostclauses.Seemoduleforanexplanationoftheseextrafeatures.ThereisalsoanoptionalcompilerTimeIntegerExpressioninthefirstline,whichisexplainedbelow.Thefullsyntaxis:
monitorid[:compileTimeIntegerExpn]
[implementimplementItem]
[implementbyimplementByItem]
[import[var]importItem{,[var]importItem
[export[howExport]id{,[howExport]id
[pretrueFalseExpn]
statementsAndDeclarations
[invarianttrueFalseExpn]
statementsAndDeclarations
[posttrueFalseExpn]
endid
IftheoptionalcompileTimeIntegerExpressionispresent,thisisadevicemonitor.Itsexclusiveaccessisenforcedbyanimplementation-dependenttrick,suchasexecutingitatahardwareprioritylevelgivenbytheexpression.Adevicemonitorisrestrictedfromcallingmonitors(directlyorindirectly).Thisrestrictionisimposedtoeliminatethepossibilityofblockingaprocesswithanon-zerohardwarepriority(asthiswouldinadvertentlyallowmultipleentryintoadevicemonitor).Itistheprogrammer'sresponsibilitytomeetthisrestriction;thecompilerwillnotingeneralenforcetherestriction.Thecurrent(1999)implementationignoresthiscompileTimeIntegerExpression.
Anunexportedparameterlessprocedureinamonitorcanbespecifiedtobeaninterrupthandlingprocedurebyspecifyingadeviceinitsheader,usingtheform:
procedureid[:deviceSpecification]
ThedeviceSpecificationisacompiletimenaturalnumberthatdesignates,totheimplementation,theclassofinterruptsthateffectivelycallthisprocedure.Interrupthandlingprocedurescannotbecalledexplicitlywithintheprogram.
![Page 554: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/554.jpg)
Details Therearetworestrictionsthattheprogrammermustfollowwhenusinginterrupthandlingprocedures;theserestrictionswillnotnecessarilybeenforcedbythesoftware.Thefirstisthataninterrupthandlingproceduremustnotexecuteawait,eitherdirectlyorindirectly,bycallinganotherprocedure.Thesecondisthattheinterrupthandlingproceduremustnotdirectlyorindirectlycauseanexception,unlesstheexceptionwillbecaughtbyanexceptionhandlerthatisactivateddirectlyorindirectlybytheinterrupthandlingprocedure.
Details
Declarationsofmonitorswithinmonitorsaredisallowed.Thiswouldberedundantanyway,asonlyoneprocesscanbeinsidetheoutermonitor,sotheinnermonitorisguaranteedtobesuccessful.
Declarationsofclasseswithinmonitorsarealsodisallowed.
Anysubprogramdeclaredwithinasubprogramisnowallowedtobeassignedtoasubprogramvariable,norpassedasaparametricsubprogram.
Seealsounit,moduleandclass.Seealsoexportlist,importlist,implementlist,implementbylistanddeferredsubprogram.
![Page 555: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/555.jpg)
Mouse
Description
ThisunitcontainsthepredefinedsubprogramsthatdealwithusingthemouseinaTuringprogram.Theroutinesallowyoutogetthecurrentmousecursorposition,checkifabuttonhasbeenpressedandgettheinformationifithas.Therearealsoroutinestohideandshowthemouseonsystemswhereitmakessense.(OnGUIbasedsystemsliketheMacintosh,themousecan'tbehiddenasitmaybeneededbyotherapplicationsrunningatthesametime.)
AllroutinesintheMousemoduleareexportedqualified(andthusmustbeprefacedwith"Mouse.").
EntryPoints
Where Getsthecurrentlocationofthemousecursorandstatusofthemousebuttons.
ButtonMoved Checkstoseeifamousebuttonhasbeenpressed.
ButtonWait Getsinformationaboutamousebuttonbeingpressedsuchaswhereitwaspressed,whichbuttonwaspressed,etc.
ButtonChoose Selectsthemodeforthemouse(eithersinglebuttonmodeormulti-buttonmode).
![Page 556: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/556.jpg)
Mouse.ButtonChoose PartofMousemodule
Syntax Mouse.ButtonChoose(choice:string)
Description
TheMouse.ButtonChooseprocedureisusedtochangethemodeofthemouse.InTuring,themousecaneitherbein"single-buttonmode"orin"multi-buttonmode".In"single-buttonmode"themouseistreatedasaonebuttonmouse.Abuttonisconsideredpressedwhenanybuttonispressedandreleasedonlywhenallbuttonshavebeenreleased.
InTuring,themousestartsin"single-buttonmode".
Theparameterchoicecanbeoneof"singlebutton","onebutton"(whichswitchthemouseinto"single-buttonmode")or"multibutton"(whichswitchesthemouseinto"multi-buttonmode").
Example
Aprogramthatdisplaysthestatusofthemouseatthetopleftcornerofthescreen.
Mouse.ButtonChoose("multibutton")
varx,y,button,left,middle,right:int
Mouse.Where(x,y,button)
left:=buttonmod10%left=0or1
middle:=(button-left)mod100%middle=0or10
right:=button-middle-left%right=0or100
ifleft=1then
put"leftbuttondown"
endif
ifmiddle=10then
put"middlebuttondown"
endif
ifright=100then
put"rightbuttondown"
endif
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingMouse.ButtonChoose,notbycallingButtonChoose.
![Page 557: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/557.jpg)
Seealso
Mouse.ButtonMovedandMouse.ButtonWaittogetmouseeventssavedinaqueue.SeealsoMouse.Wheretogetthecurrentstatusofmousebutton(s).
![Page 558: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/558.jpg)
Mouse.ButtonMoved PartofMousemodule
Syntax Mouse.ButtonMoved(motion:string):boolean
Description
TheMouse.ButtonMovedfunctionindicateswhetherthereisamouseeventoftheappropriatetypeonthemousequeue.Eventsareeither"up","down","updown"or"downup"events(althoughthe"downup"and"updown"arethesameevent).
Theparametermotionmustbeoneof"up","down","updown"or"downup".Ifaneventofthetyperequestedisinthequeue,Mouse.ButtonMovedreturnstrue.Iftheeventisnotinthequeue,thenMouse.ButtonMovedreturnsfalse.
In"single-buttonmode"(wherethemouseistreatedlikeaone-buttonmouse),a"down"eventoccurswheneverallthebuttonsareupandabuttonispressed.An"up"eventtakesplacewhenthelastbuttonisreleasedsothatnobuttonsremainpressed.
In"multi-buttonmode",a"down"eventoccurswheneveranybuttonispressed,andan"up"eventoccurswheneveranybuttonisreleased.
Example
Thisprogramdrawsrandomcirclesonthescreenuntiltheuserclicksthemousebutton,whereuponisstartsdrawingrandomboxes.Clickingthemousebuttonswitchesbetweenthetwo.
varcircles:boolean:=true
loop
varx,y,radius,clr:int
ifMouse.ButtonMoved("down")then
varbuttonnumber,buttonupdown:int
Mouse.ButtonWait("down",x,y,buttonnumber
buttonupdown)
circles:=notcircles
endif
x:=Rand.Int(0,maxx)
y:=Rand.Int(0,maxy)
radius:=Rand.Int(0,100)
clr:=Rand.Int(0,maxcolor)
ifcirclesthen
![Page 559: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/559.jpg)
Draw.FillOval(x,y,radius,radius,clr
else
Draw.FillBox(x,y,x+radius,y+radius
endif
endloop
Example
Thisisanexampledemonstratinghowtocheckforbothcharacterandmouseinputatthesametime.
varch:string(1)
varx,y,btnnum,btnupdown:int
loop
ifhaschthen
getch(ch)
Text.Locate(1,1)
put"Thecharacterenteredisa:",ch
endif
ifMouse.ButtonMoved("down")then
Mouse.ButtonWait("down",x,y,btnnum,
Text.Locate(1,1)
put"Thebuttonwasclickedatposition:",
endif
endloop
Details
Mouse.ButtonMovedcanbethoughtofasthemouseequivalentofhaschinthattheybothcheckforsomethinginaqueueandbothreturnimmediately.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingMouse.ButtonMoved,notbycallingButtonMoved.
Seealso
Mouse.ButtonMovedtogetmouseeventssavedinthequeue.SeealsoMouse.ButtonChoosetoswitchbetween"single-buttonmode"and"multi-buttonmode".
![Page 560: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/560.jpg)
Mouse.ButtonWait PartofMousemodule
SyntaxMouse.ButtonWait(motion:string, varx,y,buttonNumber,buttonUpDown:int)
Description
TheMouse.ButtonWaitproceduregetsinformationaboutamouseeventandremovesitfromthequeue.
Theparametermotionmustbeoneof"up","down","updown"or"downup".Ifaneventofthetyperequestedisinthequeue,Mouse.ButtonWaitreturnsinstantly.Ifthereisn'tsuchanevent,Mouse.ButtonWaitwaitsuntilthereisoneandthenreturns(muchlikegetchhandleskeystrokes).
In"single-buttonmode"(wherethemouseistreatedlikeaone-buttonmouse),a"down"eventoccurswheneverallthebuttonsareupandabuttonispressed.An"up"eventtakesplacewhenthelastbuttonisreleasedsothatnobuttonsremainpressed.
In"multi-buttonmode",a"down"eventoccurswheneveranybuttonispressed,andan"up"eventoccurswheneveranybuttonisreleased.
Theparametersxandyaresettothepositionofthemousecursorwhenthebuttonwaspressed.Theparameterbuttonnumberissetto1whenin"single-buttonmode".In"multi-buttonmode",itissetto1iftheleftbuttonwaspressed,2ifthemiddlebuttonwaspressed,and3iftherightbuttonwaspressed.Theparameterbuttonupdownissetto1,ifabuttonwaspressedand0ifabuttonwasreleased.
Thisprogramdrawslines.Itstartsalinewheretheuserpressesdownandcontinuestoupdatethelinewhilethemousebuttonishelddown.Whenthebuttonisreleased,thelineispermanentlydrawandtheusercandrawanotherline.
varx,y,btnNumber,btnUpDown,buttons:int
varnx,ny:int
loop
Mouse.ButtonWait("down",x,y,btnNumber,btnUpDown
![Page 561: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/561.jpg)
Example nx:=x
ny:=y
loop
Draw.Line(x,y,nx,ny,0)%Erasepreviousline
exitwhenMouse.ButtonMoved("up")
Mouse.Where(nx,ny,buttons)
Draw.Line(x,y,nx,ny,1)%Drawlinetoposition
endloop
Mouse.ButtonWait("up",nx,ny,btnNumber,btnUpDown
Draw.Line(x,y,nx,ny,2)%Drawlinetofinalposition
endloop
Example
Thisisanexampledemonstratinghowtocheckforbothcharacterandmouseinputatthesametime.
varch:string(1)
varx,y,btnNum,btnUpDown:int
loop
ifhaschthen
getch(ch)
Text.Locate(1,1)
put"Thecharacterenteredisa:",ch
endif
ifMouse.ButtonMoved("down")then
Mouse.ButtonWait("down",x,y,btnNum,
Text.Locate(1,1)
put"Thebuttonwasclickedatposition:",
endif
endloop
Details
Mouse.ButtonWaitcanbethoughtofasthemouseequivalentofgetchinthattheybothreadsomethinginaqueueandbothwaituntiltheygetthethingthey'relookingfor.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingMouse.ButtonWait,notbycallingButtonWait.
Seealso
Mouse.ButtonWaittoseeifanappropriateeventisinthequeue.SeealsoMouse.ButtonChoosetoswitchbetween"single-buttonmode"and"multi-buttonmode".
![Page 562: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/562.jpg)
Mouse.Where PartofMousemodule
Syntax Mouse.Where(varx,y,button:int)
Description
TheMouse.Whereprocedureisusedtogetcurrentinformationaboutthestatusofthemouse.Theparametersxandyaresettothecurrentlocationofthemousecursor.Iftheprogramisrunningonasystemusingwindows,thecursormaybeoutsidethewindow.Thismeansthatxandymaybesettovaluesoutsideoftheboundsof0tomaxxand0tomaxy.
Theparameterbuttonissetdependingonthecurrentmode.In"single-buttonmode"(wherethemouseistreatedlikeaone-buttonmouse),buttonissetto0ifallthemousebuttonsareup,and1ifanyofthemousebuttonsaredown.In"multi-buttonmode",buttonisassignedthesumof1iftheleftbuttonisdown,10ifthemiddlebuttonisdown,and100iftherightbuttonisdown.Thusifbuttonhasthevalueof101,thenitmeansthattheleftandrightmousebuttonsweredepressed.
Example
Aprogramthatdisplaysthestatusofthemouseatthetopleftcornerofthescreen.
varx,y,button:int
loop
Mouse.Where(x,y,button)
Text.Locate(1,1)
ifbutton=0then
putx:4,"",y:4,"buttonup"
else
putx:4,"",y:4,"buttondown"
endif
endloop
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingMouse.Where,notbycallingWhere.
Mouse.ButtonMovedandMouse.ButtonWaittogetmouse
![Page 563: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/563.jpg)
Seealso eventssavedinaqueue.SeealsoMouse.ButtonChoosetoswitchbetween"single-buttonmode"and"multi-buttonmode".
![Page 564: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/564.jpg)
mousewhere
Syntax mousewhere(varx,y,button:int)
Description
Themousewhereprocedureisusedtogetcurrentinformationaboutthestatusofthemouse.Theparametersxandyaresettothecurrentlocationofthemousecursor.Iftheprogramisrunningonasystemusingwindows,thecursormaybeoutsidethewindow.Thismeansthatxandymaybesettovaluesoutsideoftheboundsof0tomaxxand0tomaxy.
Theparameterbuttonissetdependingonthecurrentmode.In"single-buttonmode"(wherethemouseistreatedlikeaone-buttonmouse),buttonissetto0ifallthemousebuttonsareup,and1ifanyofthemousebuttonsaredown.In"multi-buttonmode",buttonisassignedthesumof1iftheleftbuttonisdown,10ifthemiddlebuttonisdown,and100iftherightbuttonisdown.Thusifbuttonhasthevalueof101,thenitmeansthattheleftandrightmousebuttonsweredepressed.
Example
Aprogramthatdisplaysthestatusofthemouseatthetopleftcornerofthescreen.
varx,y,button:int
loop
mousewhere(x,y,button)
locate(1,1)
ifbutton=0then
putx:4,"",y:4,"buttonup"
else
putx:4,"",y:4,"buttondown"
endif
endloop
Seealso
buttonmovedandbuttonwaittogetmouseeventssavedinaqueue.Seealsobuttonchoosetoswitchbetween"single-buttonmode"and"multi-buttonmode".
![Page 565: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/565.jpg)
Music
Description
Thisunitcontainsthepredefinedsubprogramsthatdealwithsoundandmusic.Someoftheseroutineshavenotbeenimplementedatthetimeofthewritingofthismanualandwillbeimplementedinfuturereleases.
AllroutinesintheMusicmoduleareexportedqualified(andthusmustbeprefacedwith"Music.").
EntryPoints
Play Playsaseriesofnotes.
PlayFile Playsmusicfromafile,returningwhenthefileisfinishedplaying.Filemustbeinanallowableformat.
PlayFileReturn Playsmusicfromafile,returningassoonasthemusicstarts.Filemustbeinanallowableformat.
PlayFileLoop Playsmusicfromafile,loopingoverandover.Returnsassoonasthemusicstarts.Filemustbeinanallowableformat.
PlayFileStop Immediatelyterminatesanyplayingmusicfiles.
Sound Playsaspecifiedfrequencyforaspecifiedduration.
SoundOff Immediatelyterminatesanysoundplaying.
![Page 566: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/566.jpg)
Music.Play PartofMusicmodule
Syntax Music.Play(music:string)
Description
TheMusic.Playprocedureisusedtosoundmusicalnotesonthecomputer.
Soundsareproducedsynchronouslyonaperprocessbasis.ThismeansthatwhenaprocessexecutesaMusic.SoundorMusic.Playcommand,itstopsuntilthecommandisfinished.However,otherprocesseswillcontinuetoexecuting.
ExampleThisprogramsoundsthefirstthreenotesoftheCscale.
Music.Play("cde")
Example
ThisprogramplaysfrommiddleCtooneoctaveabovemiddleCanddownagainin8thnotes.
Music.Play("8cdefgab>c")
Music.Play("<bagfedc")
Execute
Details
Thesyntaxoftheplaystringmaybeenhancedinthefuture.
TheMusic.Playproceduretakesstringscontainingcharactersthatspecifynotes,rests,sharps,flatsandduration.Thenotesarethelettersatog(orAtoG).Arestisp(forpause).Asharpis+andaflatis-.Thedurationsare1(wholenote),2(halfnote),4(quarternote),8(eightnote)and6(sixteenthnote).Thecharacter>raisestothenextoctaveand<lowers.Forexample,thisisthewaytoplayCandthenCsharponeoctaveabove
![Page 567: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/567.jpg)
middleCwitharestbetweenthem,allinsixteenthnotes:Music.Play(">6cpc+").BlankscanbeusedforreadabilityandareignoredbyMusic.Play.
TheMusic.Playprocedurerequiresthatthemachinehaveasoundcardinordertoplaytones.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingMusic.Play,notbycallingPlay.
SeealsotheMusic.Soundprocedure,whichmakesasoundofagivenfrequency(Hertz)andduration(milliseconds).
![Page 568: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/568.jpg)
Music.PlayFile PartofMusicmodule
Syntax Music.PlayFile(fileName:string)
Description
TheMusic.PlayFileprocedureisusedtoplayafileofmusic.Thefilemustbeinoneoftheacceptableformatsandthemachine,musthavetheappropriatehardware.
ThefileNameparametermustgivetheformatofthefile:
WAVfiles "WAV:filename"or"filename.WAV" MP3files "MP3:filename"or"filename.MP3" MIDIfiles "MIDI:filename"or"filename.MIDI"
Soundsareproducedsynchronouslyonaperprocessbasis.ThismeansthatwhenaprocessexecutesaMusic.Sound,Music.PlayorMusic.PlayFilecommand,itstopsuntilthecommandisfinished.However,otherprocesseswillcontinueexecuting.
Details
Toplaymusicwhileperforminganyotheractivity,thecalltoMusic.PlayFilemustbeexecutedinitsownprocess.Theprocessisthencalledusingtheforkcommand.Whenaforkcommandisgiven,executionstartsontheprocess(likeaprocedurecall)andcontinuesfollowingtheforkcommandatthesametime.
Example
Thisprogramplaysthemusicinthefile"branden3.wav"whiledrawingovalsonthescreen.
processDoMusic
loop
Music.PlayFile("branden3.wav")
endloop
endDoMusic
forkDoMusic
varx,y,clr:int
loop
x:=Rand.Int(0,maxx)
y:=Rand.Int(0,maxy)
clr:=Rand.Int(0,maxcolor)
![Page 569: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/569.jpg)
Draw.FillOval(x,y,30,30,clr)
endloop
Execute
DetailsToplayasoundfilerequiresthatthecomputerbeequippedwithasoundcardandspeakers.
Details
TheTuring4.1softwarecanplayfilesinthefollowingaudioformats:WAVE(.wav)files,MIDIfiles(.midior.mid),andMP3files(.mp3).Ingeneral,MIDIfilesarethemostefficientandthusarethepreferredformforlongermusicpieceslikebackgroundmusic.WAVEfilescanrecordanything,notjustmusic,soareoftenusedforsoundeffects.
Details
TheTuring4.1softwarecanalsoplaymusiconacompactdisk.Toplaythecompletecontentsofthecompactdisk,thefilenameis“cd”.Toplayasingletrackfromacompactdisk,thefilenameis“cd:[tracknumber]”.
Music.PlayFile("cd")%PlaytheentireCD
Music.PlayFile("cd:3")%PlaythethirdtrackontheCD
Details
OnthePC,differentformatsofmusiccanplaysimultaneously.ThismeansthataprogrammightuseaMIDIfileasabackgroundsoundtrackandthenuseWAVEfilesforindividualsoundeffects.Thesoundeffectswouldnotinterferewiththebackgroundmusic.Playingasecondmusicfilewiththesameformatasanalreadyplayingpieceimmediatelyhaltsthefirstpieceandstartsthesecond.Thiscanbeusedtostopasingletypeofmusicbyplayingashortsilentpieceofmusic.
Thisprogrambouncesamapleleafaroundthescreenwithbackgroundmusicandasoundeffectwhenthemapleleafhitsanedge.Whentheuserpressesanykey,theprogramimmediatelyexits.
![Page 570: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/570.jpg)
Example
constSTAR_SIZE:int:=80
varpic,x,y,dx,dy:int
varfinished:boolean:=false
%Playsoundeffectonce.
processBoing
Music.PlayFile("boing.wav")
endBoing
%Loopplayingbackgroundmusicuntil'finished'istrue.
processBackgroundMusic
loop
exitwhenfinished
Music.PlayFile("background.mid")
endloop
endBackgroundMusic
%Gettheoriginalpicture
Draw.FillStar(3,3,STAR_SIZE-3,STAR_SIZE-3,
pic:=Pic.New(0,0,STAR_SIZE,STAR_SIZE)
cls
%Settheinitiallocationanddirectionofmovement
x:=Rand.Int(0,maxx-STAR_SIZE)
y:=Rand.Int(0,maxy-STAR_SIZE)
dx:=1
dy:=1
forkBackgroundMusic%Startbackgroundmusicplaying
loop
ifx+dx<0orx+dx>maxx-STAR_SIZEthen
dx:=-dx
forkBoing
endif
ify+dy<0ory+dy>maxy-STAR_SIZEthen
dy:=-dy
forkBoing
endif
x+=dx
y+=dy
Pic.Draw(pic,x,y,picCopy)
exitwhenhasch
Time.Delay(5)
endloop
%Stopthebackgroundmusic.
finished:=true
Music.PlayFileStop
![Page 571: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/571.jpg)
Execute
Seealso
Music.PlayFileStoptohaltamusicfilethatiscurrentplaying,Music.PlayFileReturnforaprocedurethatstartsamusicfileplayingandreturnsimmediately(meaningthatyoudonotneedtouseprocessandforkstatements),andMusic.PlayFileLoopthatstartsamusicfileplayingcontinuouslyuntilitisstoppedwithouttheuseofprocessorfork.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingMusic.PlayFile,notbycallingPlayFile.
![Page 572: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/572.jpg)
Music.PlayFileLoop PartofMusicmodule
Syntax Music.PlayFileLoop(fileName:string)
Description
TheMusic.PlayFileLoopprocedureisusedtoplayafileofmusiccontinuously,loopinguntiltheprogramishaltedortheMusic.PlayFileStopcommandisgiven.Thefilemustbeinoneoftheacceptableformatsandthemachine,musthavetheappropriatehardware.
ThefileNameparametermustgivetheformatofthefile:
WAVfiles "WAV:filename"or"filename.WAV" MP3files "MP3:filename"or"filename.MP3" MIDIfiles "MIDI:filename"or"filename.MIDI"
TheMusic.PlayFileLoopprocedureisusedtoprovidecontinuousbackgroundmusicforaprogram.Whencalled,themusicstartsplaying,andtheprocedurereturnsimmediately.
Details
UnlikeMusic.PlayFile,theMusic.PlayFileLoopproceduredoesnothavetobecalledinaseparateprocess.However,themusicwillnotstopplaying(norwillaprogramthatcallsthisprocedureterminate)untilMusic.PlayFileStop
Example
Thisprogramcontinuouslyplaysthemusicinthefile"branden3.wavdrawingovalsonthescreen.
Music.PlayFileLoop("branden3.wav")
varx,y,clr:int
loop
x:=Rand.Int(0,maxx)
y:=Rand.Int(0,maxy)
clr:=Rand.Int(0,maxcolor)
Draw.FillOval(x,y,30,30,clr)
exitwhenhasch
endloop
Music.PlayFileStop
![Page 573: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/573.jpg)
Execute
DetailsToplayasoundfilerequiresthatthecomputerbeequippedwithasoundcardandspeakers.
Details
TheTuring4.1softwarecanplayfilesinthefollowingaudioformats:WAVE(.wav)files,MIDIfiles(.midior.mid),andMP3files(.mp3).Ingeneral,MIDIfilesarethemostefficientandthusarethepreferredformforlongermusicpieceslikebackgroundmusic.WAVEfilescanrecordanything,notjustmusic,soareoftenusedforsoundeffects.
Details
TheTuring4.1softwarecanalsoplaymusiconacompactdisk.Toplaythecompletecontentsofthecompactdisk,thefilenameis“cd”.Toplayasingletrackfromacompactdisk,thefilenameis“cd:[tracknumber]”.
Music.PlayFileLoop("cd")%PlaytheentireCD
Music.PlayFileLoop("cd:3")%PlaythethirdtrackontheCD
Details
OnthePC,differentformatsofmusiccanplaysimultaneously.ThismeansthataprogrammightuseaMIDIfileasabackgroundsoundtrackandthenuseWAVEfilesforindividualsoundeffects.Thesoundeffectswouldnotinterferewiththebackgroundmusic.Playingasecondmusicfilewiththesameformatasanalreadyplayingpieceimmediatelyhaltsthefirstpieceandstartsthesecond.usedtostopasingletypeofmusicbyplayingashortsilentpieceofmusic.
Thisprogrambouncesamapleleafaroundthescreenwithbackgroundmusicandasoundeffectwhenthemapleleafhitsanedge.Whentheuserpressesanykey,theprogramimmediatelyexits.
constSTAR_SIZE:int:=80
varpic,x,y,dx,dy:int
%Gettheoriginalpicture
Draw.FillStar(3,3,STAR_SIZE-3,STAR_SIZE-3,
![Page 574: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/574.jpg)
Example
pic:=Pic.New(0,0,STAR_SIZE,STAR_SIZE)
cls
%Settheinitiallocationanddirectionofmovement
x:=Rand.Int(0,maxx-STAR_SIZE)
y:=Rand.Int(0,maxy-STAR_SIZE)
dx:=1
dy:=1
Music.PlayFileLoop("background.mid")%Startbackgroundmusicplaying
loop
ifx+dx<0orx+dx>maxx-STAR_SIZEthen
dx:=-dx
Music.PlayFileReturn("boing.wav")
endif
ify+dy<0ory+dy>maxy-STAR_SIZEthen
dy:=-dy
Music.PlayFileReturn("boing.wav")
endif
x+=dx
y+=dy
Pic.Draw(pic,x,y,picCopy)
exitwhenhasch
Time.Delay(5)
endloop
%Stopthebackgroundmusic.
Music.PlayFileStop
Execute
Seealso Music.PlayFileStoptohaltamusicfilethatiscurrentplaying.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingMusic.PlayFileLoopbycallingPlayFileLoop.
![Page 575: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/575.jpg)
Music.PlayFileReturn PartofMusicmodule
Syntax Music.PlayFileReturn(fileName:string)
Description
TheMusic.PlayFileReturnprocedureisusedtoplayafileofmusic.Thefilemustbeinoneoftheacceptableformatsandthemachine,musthavetheappropriatehardware.
ThefileNameparametermustgivetheformatofthefile:
WAVfiles "WAV:filename"or"filename.WAV" MP3files "MP3:filename"or"filename.MP3" MIDIfiles "MIDI:filename"or"filename.MIDI"
UnlikeMusic.PlayFile,theMusic.PlayFileReturnprocedureshouldnotbecalledinaseparateprocess.Instead,theprocedurereturnsimmediately.ThismakesMusic.PlayFileReturneasiertouse,butmakesitunsuitableforplayingasetoffilessequentially.
Example
Thisprogramplaysthemusicinthefile"branden3.wav"oncewhiledrawingovalsonthescreen.Ifthemusichasnotfinishedwhentheuserpressesakey,itishaltedusingMusic.PlayFileStop
Music.PlayFileReturn("branden3.wav")
varx,y,clr:int
loop
x:=Rand.Int(0,maxx)
y:=Rand.Int(0,maxy)
clr:=Rand.Int(0,maxcolor)
Draw.FillOval(x,y,30,30,clr)
exitwhenhasch
endloop
Music.PlayFileStop
Execute
![Page 576: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/576.jpg)
DetailsToplayasoundfilerequiresthatthecomputerbeequippedwithasoundcardandspeakers.
Details
TheTuring4.1softwarecanplayfilesinthefollowingaudioformats:WAVE(.wav)files,MIDIfiles(.midior.mid),andMP3files(.mp3).Ingeneral,MIDIfilesarethemostefficientandthusarethepreferredformforlongermusicpieceslikebackgroundmusic.WAVEfilescanrecordanything,notjustmusic,soareoftenusedforsoundeffects.
Details
TheTuring4.1softwarecanalsoplaymusiconacompactdisk.Toplaythecompletecontentsofthecompactdisk,thefilenameis“cd”.Toplayasingletrackfromacompactdisk,thefilenameis“cd:[tracknumber]”.
Music.PlayFileReturn("cd")%PlaytheentireCD
Music.PlayFileReturn("cd:3")%PlaythethirdtrackontheCD
Details
OnthePC,differentformatsofmusiccanplaysimultaneously.ThismeansthataprogrammightuseaMIDIfileasabackgroundsoundtrackandthenuseWAVEfilesforindividualsoundeffects.Thesoundeffectswouldnotinterferewiththebackgroundmusic.Playingasecondmusicfilewiththesameformatasanalreadyplayingpieceimmediatelyhaltsthefirstpieceandstartsthesecond.usedtostopasingletypeofmusicbyplayingashortsilentpieceofmusic.
Thisprogrambouncesamapleleafaroundthescreenwithbackgroundmusicandasoundeffectwhenthemapleleafhitsanedge.Whentheuserpressesanykey,theprogramimmediatelyexits.
constSTAR_SIZE:int:=80
varpic,x,y,dx,dy:int
%Gettheoriginalpicture
Draw.FillStar(3,3,STAR_SIZE-3,STAR_SIZE-3,
![Page 577: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/577.jpg)
Example
pic:=Pic.New(0,0,STAR_SIZE,STAR_SIZE)
cls
%Settheinitiallocationanddirectionofmovement
x:=Rand.Int(0,maxx-STAR_SIZE)
y:=Rand.Int(0,maxy-STAR_SIZE)
dx:=1
dy:=1
Music.PlayFileLoop("background.mid")%Startbackgroundmusicplaying
loop
ifx+dx<0orx+dx>maxx-STAR_SIZEthen
dx:=-dx
Music.PlayFileReturn("boing.wav")
endif
ify+dy<0ory+dy>maxy-STAR_SIZEthen
dy:=-dy
Music.PlayFileReturn("boing.wav")
endif
x+=dx
y+=dy
Pic.Draw(pic,x,y,picCopy)
exitwhenhasch
Time.Delay(5)
endloop
%Stopthebackgroundmusic.
Music.PlayFileStop
Execute
Seealso Music.PlayFileStoptohaltamusicfilethatiscurrentplaying.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingMusic.PlayFileReturnnotbycallingPlayFileReturn.
![Page 578: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/578.jpg)
Music.PlayFileStop PartofMusicmodule
Syntax Music.PlayFileStop
Description
TheMusic.PlayFileStopprocedureisusedtotostopallmusicfilescurrentlyplaying.ThisincludesprocessesthatareexecutingtheMusic.PlayFileprocedure(theyexitimmediatelyandstartexecutingthenextstatementintheprocess),andtheMusic.PlayFileReturnandMusic.PlayFileLoopstatements,whichsimplystopplayingthemusic.
Details
InTuring,aprogramwillnothaltexecutionuntilallprocesseshaveterminated.Thismeansthatifyouareplayingbackgroundmusic,theprogramwillnotterminate,evenifexecutionreturnsfromthemainprogramunlessthebackgroundmusicishalted.
Example
Thisprogramplaysthebackgroundmusicfor30secondsandthenterminates.Notethatitisimportanttosettheflag(finished)beforecallingMusic.PlayFileStop.IfMusic.PlayFileStopcomesfirst,itispossibleforprocesstoreturnfromMusic.PlayFile,looparound,skipovertheexitwhenandcallMusic.PlayFileagainbeforethefinishedflagisset.
varfinished:boolean:=false
%Loopplayingbackgroundmusicuntil'finished'istrue.
processBackgroundMusic
loop
exitwhenfinished
Music.PlayFile("background.mid")
endloop
endBackgroundMusic
forkBackgroundMusic%Startthebackgroundmusic
Time.Delay(30000)%Waitfor30seconds
%Stopthebackgroundmusic.
finished:=true%Theflagmustbesetfirst
Music.PlayFileStop%Music.PlayFilewillreturnimmediately
![Page 579: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/579.jpg)
Execute
Seealso Music.PlayFileforplayingmusicfilesandalargerexample.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingMusic.PlayFileStop,notbycallingPlayFileStop.
![Page 580: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/580.jpg)
Music.Sound PartofMusicmodule
Syntax Music.Sound(frequency,duration:int)
Description
TheMusic.Soundstatementisusedtocausethecomputertosoundanoteofagivenfrequencyforagiventime.Thefrequencyisincyclespersecond(Hertz).Thetimedurationisinmilliseconds.Forexample,middleAonapianois440Hertz,soMusic.Sound(440,1000)playsmiddleAforonesecond.
Soundsareproducedsynchronouslyonaperprocessbasis.ThismeansthatwhenaprocessexecutesaMusic.SoundorMusic.Playcommand,itstopsuntilthecommandisfinished.However,otherprocesseswillcontinueexecuting.
Example
Thisprogramplaysasirensoundinthebackground.
processsiren
loop
fori:100..3000by100
Music.Sound(i,50)%Soundnote
endfor
fordecreasingi:2900..200by100
Music.Sound(i,50)%Soundnote
endfor
endloop
endsiren
forksiren
…therestoftheprogramgoesherewhilethesirencontinues…
Execute
Exportedqualified.
![Page 581: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/581.jpg)
Status ThismeansthatyoucanonlycallthefunctionbycallingMusic.SoundnotbycallingSound.
SeealsoMusic.Playstatement,whichplaysnotesbasedonmusicalnotation.Forexample,Music.Play("8C")playsaneighthnoteofmiddleC.
![Page 582: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/582.jpg)
Music.SoundOff PartofMusicmodule
Syntax Music.SoundOff
DescriptionTheMusic.SoundOffprocedurestopsanysoundormusicthatiscurrentlyplayingoriswaitingtoplay.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingMusic.SoundOff,notbycallingSoundOff.
SeealsoMusic.Play,Music.PlayFile,andMusic.Soundprocedures,whichmakesoundsthatcanbeturnedoffwithMusic.SoundOff.
![Page 583: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/583.jpg)
named type
Syntax
AnamedTypeisoneof:
(a) typeId (b) moduleId.typeId
DescriptionAtypecanbegivenaname(typeId)andlaterthisnamecanbeusedinsteadofwritingoutthetype.
Example
Inthisexample,phoneRecordisanamedtype.
typephoneRecord:
record
name:string(20)
phoneNumber:int
address:string(50)
endrecord
…
varoneEntry:phoneRecord
varphoneBook:array1..100ofphoneRecord
Details
Form(a)isthemostcommonkindofnamedtype.Form(b)isusedwhenthetypenamehasbeenexportedfromamodule.
Arrayswhoseboundsarenotknownatcompiletimecannotbenamed.
![Page 584: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/584.jpg)
nargs numberofarguments
Syntax nargs:int
Description
Thenargsfunctionisusedtodeterminethenumberofargumentsthathavebeenpassedtoaprogramfromthecommandline.Forexample,iftheprogramisrunfromtheTuringenvironmentusing
:rfile1file2
thennargswillreturn2.Ifaprogramcalledprog.xisrununderUNIXusingthiscommand:
prog.xfile1file2
thevalueofnargswillsimilarlybe2.
Thenargsfunctionisusuallyusedtogetherwiththefetchargfunctiontoaccesstheargumentsthathavebeenpassedtotheprogram.
Seealso fetchargforanexampleoftheuseofnargs.
![Page 585: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/585.jpg)
nat naturalnumbertype
Syntax nat
Description
Thenat(naturalnumber)typehasthevalues0,1,2,3…Naturalnumberscanbecombinedbyvariousoperators,suchasaddition(+)andmultiplication(*).Naturalnumberscanbecombinedwithintegers(typeint),inwhichcasetheresultisaninteger.Naturalnumberscanalsobecombinedwithrealnumbers,inwhichcasetheresultisgenerallyarealnumber.Naturalnumberscanalwaysbeassignedtorealvariables,withimplicitconversiontoreal.
Example varcounter:nat
varj:nat:=9
SeealsoexplicitIntegerConstant.Thenattypeisusedinsteadofintwhenthevaluesareknowntobenon-negative.
TheTuringoperatorsonnaturalnumbersarethesameasthoseforintegers:+,-,*(multiply),div(truncatingintegerdivision),mod(integerremainder),**(exponentiation),aswellascomparisons(+,not=,>,>=,<,<=).Theoperatorsand,orandxortobeappliedtonaturalnumbervalues.Thebit-wisebooleanresultisproducedasanaturalnumber.Theshr(shiftright)andshl(shiftleft)operatorsarealsointroduced.
Inthecurrentimplementation,therangeofnaturalnumbersisfrom0to4294967294.Inotherwords,themaximumvalueofanaturalnumberis2**32-2.Thisrangeexistsbecausenaturalnumbersarestoredin4bytes.Thetypesnat1,nat2andnat4specifynaturalnumbersthatfitinto1,2or4bytes.
Explicitconstantssuchas213and0areconsideredtobeintegers.Asaresultthetypeoftaxinthisdeclarationisint:
vartax:=0%Thetypeisint
Naturalnumbervaluescanbeusedwheneverintegervaluesare
![Page 586: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/586.jpg)
Details
expectedandviceversa,giventhatthevaluedoesnotexceedtherangeoftheexpectedtype.
Whenintegerandnaturalnumbersarecombinedusingabinaryoperatorsuchas+,theresultisaninteger.Thismeans,forexample,thatifcounterisanaturalnumber,counter+1isconsideredtobeaninteger.Aslongastheresultfitsintotherangethatistheintersectionoftherangesofintandnat,theresultwillbeasexpected.Anomaliesoccurwhentheresultis(orwouldbe)greaterthanthelargestinteger(maxint=2147483647).Forexample,ifnaturalnumbernisgreaterthanmaxint,theexpressionn+1willoverflow,becauseitsresultisanint(because1isanint).Toavoidthisproblem,youmustbecarefulthatbothoperandsarenaturalnumbers.
Supposewehavethisdeclaration:
constnatOne:nat:=1
Wecansafelycomputen+natOnebecausebothoperandshavetypenat.
Naturalnumberscanbeconvertedtorealnumbersusingnatreal,butinpracticethisisrarelyused,becauseanaturalvalueusedinplaceofarealvaluewillbeautomaticallyconvertedtoreal.
Naturalnumberscanbeconvertedtostringsandbackusingnatstrandstrnat.
IntheClanguage,anaturalnumberissaidtobe"unsigned".
Seealso maxnat,int,natn,intn,natstr,strnatandnatreal.
![Page 587: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/587.jpg)
natn n-bytenaturalnumbertype
Dirty
Syntax (a) nat1 %1-bytenaturalnumber (b) nat2 %2-bytenaturalnumber (c) nat4 %4-bytenaturalnumber
Description
Thenatn(n-bytenaturalnumber)typesaremachine-dependenttypesthatoccupyaspecifiednumberofbytes.Bycontrast,thenattypeisinprincipleamachine-independentandmathematicaltype(itoverflows,however,whenthevalueistoolargeorsmall,thatis,whenthevaluedoesnotfitinto4bytes).
Examplevarcounter1:nat1%Rangeis0..255
varcounter2:nat2%Rangeis0..65536
varcounter4:nat4%Rangeis0..4294967295
Details
InTuring,therangeofthenatis0to4294967294,whichmeansthatthenat4typeallowsonemorevalue,4294967295.Thisextravalueisusedinnattorepresentthestateofbeinguninitialized.Thenatntypesallowuseofallpossiblevaluesthatfitintonbytesandtherebyeliminatescheckingforinitialization.
ThenatntypesareliketheClanguagetypesshortunsigned,unsigned,andlongunsigned,exceptthatthenumberofbytesoccupiedbytheCtypesdependsontheparticularCcompiler.
Seealsotheintntypeswhicharenbyteintegervalues.Seealsonatandint.
![Page 588: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/588.jpg)
natreal naturalnumbertorealfunction
Syntax natreal(n:nat):real
Description
Thenatrealfunctionisusedtoconvertanaturalnumbertoarealnumber.Thisfunctionisrarelyused,becauseinTuring,anaturalnumbercanbeusedanyplacearealvalueisrequired.Whenthisisdone,thenatrealfunctionisimplicitlycalledtodotheconversionfromnattoreal.Thenatrealfunctionissimilartointreal,exceptthatnatrealhandlesvaluesthatarelargerthanintvaluesanddoesnothandlenegativevalues.
Seealso nat.Seealsotheintreal,floor,ceilandroundfunctions.
![Page 589: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/589.jpg)
natstr natural-number-to-stringfunction
Syntax natstr(n:nat[,width:int[,base:int]]):string
Description
Thenatstrfunctionisusedtoconvertanaturalnumbertoastring.Thestringisequivalentton,paddedontheleftwithblanksasnecessarytoalengthofwidth,writteninthegivennumberbase.Forexample,natstr(14,4,10)="bb14"wherebrepresentsablank.Thewidthandbaseparametersarebothoptional.Ittheyareomitted,thestringismadejustlongenoughtoholdthevalueandthenumberbaseis10.Forexample,natstr(23)="23".
Thewidthparametermustbenon-negative.Ifwidthisnotlargeenoughtorepresentthevalueofi,thelengthisautomaticallyincreasedasneeded.
Thestringreturnedbynatstrisoftheform:
{blank}digit{digits}
where{blank}meanszeroormoreblanksanddigit{digit}meansoneormoredigits.Theleftmostdigitiseithernon-zero,orasinglezerodigit;inotherwords,leadingzerosaresuppressed.
ThelettersA,B,C…areusedtorepresentthedigitvalues10,11,12,…Thebasemustbeintherange2to36(36becausetherearetendigitsand26letters).Forexample,natstr(255,0,16)="FF".
Thenatstrfunctionistheinverseofstrnat,soforanynaturalnumbern,strnat(natstr(n))=n.
Seealso
chr,ordandstrnatfunctions.Seealsotheintstrandstrintfunctions.SeealsoexplicitIntegerConstantforthewaytowritevaluesinbase2andbase16inaprogram.
![Page 590: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/590.jpg)
Net
Description
TheNetmoduleallowsTCP/IPequippedmachinestocommunicate.Inthecurrentimplementation(WinOOT3.0),thisisavailableonlyunderWin32(Windows95,98,NTandlater).
Toallowtwomachinestocommunicate,theremustbeaserver(whichcallsNet,WaitForConnection)andaclient(whichcallsNet.OpenConnection).Theserverwaitsuntilaclientconnectsandthenstartscommunicationbetweenthetwo.Whenaconnectionisestablished,anetstreamisreturnedthatcanbeusedinthesamefashionasafilestream(i.e.usingputsandgets).Oncetheconnectionisfinished,theprogramscallNet.CloseConnection.
Foreaseofreadingwebpages,theNet.OpenURLConnectionopensupaURLforreadingwiththegetstatement.ItisuptotheuserprogramtointerprettheHTMLorfilelocatedattheURL.
AllsubprogramsintheNetunitareexportedqualified(andthusmustbeprefacedwith"Net.").
EntryPoints
WaitForConnection Waitsuntilaclientconnectstoaspecifiedport.
OpenConnection Opensaconnectiontoaspecifiedmachine.
OpenURLConnection OpensaconnectiontoafilespecifiedbyaURL.
CloseConnection Closesaspecifiedconnection.
BytesAvailable Returnsthenumberofbytesavailabletobereadfromanetstream.
CharAvailable Returnstrueifthereisacharacteravailabletobereadfromanetstream.
LineAvailable
Returnstrueifthereisalineoftextavailabletobereadfromanet
![Page 591: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/591.jpg)
stream.
TokenAvailable Returnstrueifthereisatokenavailabletobereadfromanetstream.
HostAddressFromName Returnsahost'saddressgivenitshostname.
HostNameFromAddress Returnsahost'snamegivenitsaddress.
LocalAddress Returnsthehostnameofthelocalmachine.
LocalName ReturnstheTCP/IPaddressofthelocalmachine.
![Page 592: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/592.jpg)
Net.BytesAvailable PartofNetmodule
Syntax Net.BytesAvailable(netStream:int):int
DescriptionReturnsthenumberofbytesavailableforreadingfromthenetstreamspecifiedbythenetStreamparameter.
Details
TheNetmodulerequiresaTCP/IPstacktobeinstalledandoperatinginordertofunction.Itdoesnotcommunicateusinganyotherprotocols
ItispossibleforFirewallstointerferewiththeactionsoftheNetmodule,preventingconnectionsfromtakingplace.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingNet.BytesAvailable,notbycallingBytesAvailable.
SeealsoNet.CharAvailable,Net.LineAvailable,andNet.TokenAvailable.
![Page 593: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/593.jpg)
Net.CharAvailable PartofNetmodule
Syntax Net.CharAvailable(netStream:int):boolean
Description
ReturnstrueifacharacteriswaitingtobereadfromthenetstreamspecifiedbythenetStreamparameter.IfNet.CharAvailablereturnstrue,thenasinglecharactercanbereadfromthestreamwithoutblocking.
Details
TheNetmodulerequiresaTCP/IPstacktobeinstalledandoperatinginordertofunction.Itdoesnotcommunicateusinganyotherprotocols
ItispossibleforFirewallstointerferewiththeactionsoftheNetmodule,preventingconnectionsfromtakingplace.
Example
ThefollowingprogramfragmentreadsacharacterfromnetStreamonlyifthereisonewaitingtoberead.
ifNet.CharAvailable(netStream)then
varch:char
get:netStream,ch
putch..
endif
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingNet.CharAvailable,notbycallingCharAvailable.
SeealsoNet.BytesAvailable,Net.LineAvailable,andNet.TokenAvailable.
![Page 594: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/594.jpg)
Net.CloseConnection PartofNetmodule
Syntax Net.CloseConnection(netStream:int)
Description
ClosesanetworkconnectionmadewithNet.OpenConnectionorNet.WaitForConnection.Aftertheconnectionisclosed,thenetstreamcannotbeusedforanypurposeoneithersideoftheconnection.
Details
TheNetmodulerequiresaTCP/IPstacktobeinstalledandoperatinginordertofunction.Itdoesnotcommunicateusinganyotherprotocols
ItispossibleforFirewallstointerferewiththeactionsoftheNetmodule,preventingconnectionsfromtakingplace.
Example
Thefollowingprogramfragmentconnectstoport5300onthemachinespecifiedbynetAddress,sendstheworkOKtoitandclosestheconnection.
netStream:=Net.OpenConnection(netAddress,chatPort
ifnetStream<=0then
put"Unabletoconnectto",netAddress
return
endif
put:netStream,"OK"
Net.CloseConnection(netStream)
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingNet.CloseConnection,notbycallingCloseConnection.
Seealso Net.OpenConnectionandNet.WaitForConnection.
![Page 595: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/595.jpg)
Net.HostAddressFromName PartofNetmodule
SyntaxNet.HostAddressFromName(hostName:string):string
DescriptionReturnsthenumericTCP/IPaddressofthemachinewhosehostnameisspecifiedbythehostNameparameter.
Details
TheNetmodulerequiresaTCP/IPstacktobeinstalledandoperatinginordertofunction.Itdoesnotcommunicateusinganyotherprotocols
ItispossibleforFirewallstointerferewiththeactionsoftheNetmodule,preventingconnectionsfromtakingplace.
Example
Thefollowingprogramprintsoutthehostnameofthecurrentmachine.
varhostName:string:="www.holtsoft.com"
put"Themachineaddressof",hostName,"is",
Net.HostAddressFromName(hostName)
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingNet.HostAddressFromName,notbycallingHostAddressFromName.
Seealso Net.HostNameFromAddress.
![Page 596: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/596.jpg)
Net.HostNameFromAddress PartofNetmodule
SyntaxNet.HostNameFromAddress(hostAddr:string):string
DescriptionReturnstheTCP/IPhostnameofthemachinewhosenumericaddressisspecifiedbythehostAddrparameter.
Details
TheNetmodulerequiresaTCP/IPstacktobeinstalledandoperatinginordertofunction.Itdoesnotcommunicateusinganyotherprotocols
ItispossibleforFirewallstointerferewiththeactionsoftheNetmodule,preventingconnectionsfromtakingplace.
Example
ThefollowingprogramprintsoutthehostnameofthemachinewhoseTCP/IPnumericaddressis"128.100.5.1".
varhostAddr:string:="128.100.5.1"
put"Themachinenameof",hostAddr,"is",
Net.HostNameFromAddress(hostAddr)
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingNet.HostNameFromAddress,notbycallingLocalName.
Seealso Net.HostAddressFromName.
![Page 597: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/597.jpg)
Net.LineAvailable PartofNetmodule
Syntax Net.LineAvailable(netStream:int):boolean
Description
ReturnstrueifalineofinputiswaitingtobereadfromthenetstreamspecifiedbythenetStreamparameter.IfNet.LineAvailablereturnstrue,thenalineofinputcanbereadfromthestreamwithoutblocking.
Details
TheNetmodulerequiresaTCP/IPstacktobeinstalledandoperatinginordertofunction.Itdoesnotcommunicateusinganyotherprotocols
ItispossibleforFirewallstointerferewiththeactionsoftheNetmodule,preventingconnectionsfromtakingplace.
Example
ThefollowingprogramfragmentreadsacharacterfromnetStreamonlyifthereisonewaitingtoberead.
ifNet.LineAvailable(netStream)then
varline:string
get:netStream,line:*
putline
endif
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingNet.LineAvailable,notbycallingLineAvailable.
SeealsoNet.BytesAvailable,Net.CharAvailable,andNet.TokenAvailable.
![Page 598: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/598.jpg)
Net.LocalAddress PartofNetmodule
Syntax Net.LocalAddress:string
Description
ReturnstheTCP/IPnumericaddressofthemachinetheprogramisrunningon.Thenumericaddressisoftheformxxx.yyy.zzz.wwwwhereeachsegmentisanumberfrom0to255.
Details
TheNetmodulerequiresaTCP/IPstacktobeinstalledandoperatinginordertofunction.Itdoesnotcommunicateusinganyotherprotocols
ItispossibleforFirewallstointerferewiththeactionsoftheNetmodule,preventingconnectionsfromtakingplace.
Example
ThefollowingprogramprintsouttheTCP/IPnumericaddressofthecurrentmachine.
put"Yourmachineaddressis",Net.LocalAddress
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingNet.LocalAddress,notbycallingLocalAddress.
Seealso Net.LocalName.
![Page 599: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/599.jpg)
Net.LocalName PartofNetmodule
Syntax Net.LocalName:string
DescriptionReturnstheTCP/IPhostnameofthemachinetheprogramisrunningon.
Details
TheNetmodulerequiresaTCP/IPstacktobeinstalledandoperatinginordertofunction.Itdoesnotcommunicateusinganyotherprotocols
ItispossibleforFirewallstointerferewiththeactionsoftheNetmodule,preventingconnectionsfromtakingplace.
Example
Thefollowingprogramprintsoutthehostnameofthecurrentmachine.
put"Yourmachinenameis",Net.LocalName
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingNet.LocalName,notbycallingLocalName.
Seealso Net.LocalAddress.
![Page 600: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/600.jpg)
Net.OpenConnection PartofNetmodule
SyntaxNet.OpenConnection(netAddr:string,port:int):int
Description
AttemptstoopenaconnectiontoportspecifiedbytheportparameteronthemachinespecifiedbynetAddrparameter.Theremustbeaprogramlisteningtothatportfortheconnectiontobemade.InOOT,thisisdoneusingtheNet.WaitForConnectionfunction.
Ifsuccessful,Net.OpenConnectionreturnsanetworkstreamdescriptorwhichcanbeusedwiththeput,get,read,andwritestatementsandeoffunctiontosendandreceivedatatothelisteningprogram.ItisalsotheparameterusedfortheNet.CloseConnection,Net.BytesAvailable,Net.CharAvailable,Net.LineAvailable,andNet.TokenAvailablefunctions.
ThenetAddrparameterisastringspecifyingthenetaddressofthemachinetobeconnectedto.Thiscaneitherbethefullhostnameorthenumericaladdress.
Ingeneral,systemprogramlisteninonportswithnumbersbelow1024.Portnumbersabove1024aregenerallyavailableforusebyusercreatedprograms.
Theprogramwillwaitforanindeterminateamountoftimetomaketheconnection.Ifitfails,itwillreturnanon-positivevalue.
Details
TheNetmodulerequiresaTCP/IPstacktobeinstalledandoperatinginordertofunction.Itdoesnotcommunicateusinganyotherprotocols
ItispossibleforFirewallstointerferewiththeactionsoftheNetmodule,preventingconnectionsfromtakingplace.
Thefollowingprogramimplementsa"Chat"program.Oneuserrunstheprogramontheirmachineasaserver,whichwaitsfor
![Page 601: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/601.jpg)
Example
anothermachinetoconnecttoit.Theseconduserspecifiesthemachinetoconnecttoandthenconnects.Thetwocanthentypeateachother.
%The"Chat"program
constchatPort:int:=5055
varchoice:int
loop
put"Enter1torunchatserver"
put"Enter2torunchatsession"
put"Choice:"..
getchoice
exitwhenchoice=1orchoice=2
endloop
varnetStream:int
varnetAddress:string
ifchoice=1then
netStream:=Net.WaitForConnection(chatPort
else
put"Entertheaddresstoconnectto:"..
getnetAddress
netStream:=Net.OpenConnection(netAddress,
ifnetStream<=0then
put"Unabletoconnectto",netAddress
return
endif
endif
Draw.Cls
put"Connectedto",netAddress
varlocalRow:int:=2
varlocalCol:int:=1
varremoteRow:=maxrowdiv2
varremoteCol:int:=1
varch:char
View.Set("noecho")
loop
ifhaschthen
ch:=getchar
put:netStream,ch
ifch='\n'then
localRow:=localRowmod(maxrowdiv
localCol:=1
Text.Locate(localRow,localCol)
put""%Cleartoendofline
Text.Locate(localRow,localCol)
else
![Page 602: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/602.jpg)
Text.Locate(localRow,localCol)
putch..
localCol+=1
endif
endif
ifNet.CharAvailable(netStream)then
get:netStream,ch
ifch='\n'then
remoteRow:=remoteRowmod(maxrowdiv
1+(maxrowdiv2)
remoteCol:=1
Text.Locate(remoteRow,remoteCol)
Text.Locate(remoteRow,remoteCol)
else
Text.Locate(remoteRow,remoteCol)
putch..
remoteCol+=1
endif
endif
endloop
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingNet.OpenConnection,notbycallingOpenConnection.
Seealso Net.WaitForConnectionandNet.CloseConnection.
![Page 603: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/603.jpg)
Net.OpenURLConnection PartofNetmodule
Syntax Net.OpenURLConnection(urlAddr:string):int
Description
AttemptstoopenahttpconnectiontoptheURL(UniversalResourceLocator)specifiedbytheurlAddr.
Ifsuccessful,Net.OpenURLConnectionreturnsanetworkstreamdescriptorwhichcanbeusedwiththegetstatementandeoffunctiontoreadthewebpagelocatedattheURL.
Theprogramwillwaitforanindeterminateamountoftimetomaketheconnection.Ifitfails,itwillreturnanon-positivevalue.
Details
TheNetmodulerequiresaTCP/IPstacktobeinstalledandoperatinginordertofunction.Itdoesnotcommunicateusinganyotherprotocols
ItispossibleforFirewallstointerferewiththeactionsoftheNetmodule,preventingconnectionsfromtakingplace.
Example
Thefollowingprogramprintsoutthecontentsofthefilespecifiedbytheuser.
varurl:string
put"EntertheURLtoload:"..
geturl
varnetStream:int
varline:string
netStream:=Net.OpenURLConnection(url)
ifnetStream<=0then
put"Unabletoconnectto",url
return
endif
loop
exitwheneof(netStream)
get:netStream,line
putline
endloop
Net.CloseConnection(netStream)
![Page 604: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/604.jpg)
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingNet.OpenURLConnection,notbycallingOpenURLConnection.
Seealso Net.CloseConnection.
![Page 605: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/605.jpg)
Net.TokenAvailable PartofNetmodule
Syntax Net.TokenAvailable(netStream:int):boolean
Description
ReturnstrueifalineofinputiswaitingtobereadfromthenetstreamspecifiedbythenetStreamparameter.IfNet.TokenAvailablereturnstrue,thenasingletoken(charactersurroundedbywhitespace)canbereadfromthestreamwithoutblocking.
Details
TheNetmodulerequiresaTCP/IPstacktobeinstalledandoperatinginordertofunction.Itdoesnotcommunicateusinganyotherprotocols
ItispossibleforFirewallstointerferewiththeactionsoftheNetmodule,preventingconnectionsfromtakingplace.
Example
ThefollowingprogramfragmentreadsacharacterfromnetStreamonlyifthereisonewaitingtoberead.
ifNet.TokenAvailable(netStream)then
vartoken:string
get:netStream,token
puttoken
endif
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingNet.TokenAvailable,notbycallingTokenAvailable.
SeealsoNet.BytesAvailable,Net.CharAvailable,andNet.LineAvailable.
![Page 606: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/606.jpg)
Net.WaitForConnection PartofNetmodule
SyntaxNet.WaitForConnection(port:int,varnetAddr:string):int
Description
Listensforaconnectionattheportspecifiedbytheportparameter.Whenanotherprogramconnectstotheport,thenthefunctionreturns.TheaddressoftheconnectingmachineisspecifiedinthenetAddrparameterandtheNet.WaitForConnectionreturnsanetworkstreamdescriptorwhichcanbeusedwiththeput,get,read,andwritestatementsandeoffunctiontosendandreceivedatatotheconnectingprogram.ItisalsotheparameterusedfortheNet.CloseConnection,Net.BytesAvailable,Net.CharAvailable,Net.LineAvailable,andNet.TokenAvailablefunctions.
InOOT,theconnectiontoaportismadewiththeNet.OpenConnectionfunction.
ThenetAddrparameterisastringspecifyingthenetaddressofthemachinethatconnectedtotheport.Itisthemachinesnumericaladdress.
Ingeneral,systemprogramlisteninonportswithnumbersbelow1024.Portnumbersabove1024aregenerallyavailableforusebyusercreatedprograms.
Theprogramwillwaitforindefinitelyforaconnectiontomadetotheport.
Details
TheNetmodulerequiresaTCP/IPstacktobeinstalledandoperatinginordertofunction.Itdoesnotcommunicateusinganyotherprotocols
ItispossibleforFirewallstointerferewiththeactionsoftheNetmodule,preventingconnectionsfromtakingplace.
SeeNet.OpenConnectionforanexampleof
![Page 607: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/607.jpg)
Example Net.WaitForConnection.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingNet.WaitForConnection,notbycallingWaitForConnection.
Seealso Net.OpenConnectionandNet.CloseConnection.
![Page 608: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/608.jpg)
new statement
Syntax
AnewStatementis:
new[collectionOrClassId,]pointerVariableReference
Description
Anewstatementcreates(allocates)anewelementandassignsitslocationtothepointervariable.Thiselementcanbeanobjectofacollectionorclassoravalueofatype.IfthecollectionOrClassIdisomitted,thechoiceofelementisdeterminedbythetypeofthepointer.Forexample,ifthepointeristoclassC,anobjectofclasswillbeallocated.
Example
Usingacollection,declarealistofrecordsandallocateonerecord.
varlist:collectionof
record
contents:string(10)
next:pointertolist%Shortform:next:^list
endrecord
varfirst:pointertolist%Shortform:var
newlist,first%Shortform:newfirst
Example
Usingaclass,createanobjectofthatclass.Theobjectislocatedbythe
classnode
exportvarnext,varname
name:string(25)
next:pointertonode%Shortform:next:^node
endnode
varstart:pointertonode%Shortform:varstart:^node
newnode,start%Shortform:newstart
Example
Usingarecordtype,declarealistofrecordsandallocateonerecord.
typeitem:
record
contents:string(10)
next:pointertoitem%Shortform:next:^item
endrecord
varfirst:pointertoitem%Shortform:var
newfirst
![Page 609: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/609.jpg)
Details
Astheexamplesinthissectionshow,apointercanlocateoneofthreethings:anobjectofacollection,anobjectofaclassoravalueofatype.
Inthenewstatement,thecollectionOrClassIdcanbeomitted.Ifthepointerlocatesatype,itmustbeomitted.Thefreestatementisusedtodeallocateanelement.
Animportedclasscanhaveoneofitsobjectscreated(bythenewstatement)onlyiftheclassisimportedvar.
Ifthereisnomorespacetoallocateanelement,newwillsetthepointertobethevalue,andtheprogramwillcontinueexecuting.
IfthepointerlocatesclassCandCcontainsanimplementbylist,theobjectcreatedbynewistheinheritedobject(throughanynumberoflevelsofimplementpointer,however,remainsapointertoC.
TheformnewpisashortformfornewC,pwhenCistheclassorcollectiongiveninp'stype.
IfpisapointertoclassCandChasadescendant(expansion)classstatementcanbeusedtoallocateanobjectoftypeD,asin:
newD,p%AllocatesanobjectofclassD
IfDhasanimplementbyclause,theexpansioniscreated.
Details
Thenewstatementcanalsobeusedtoresizeaflexiblearray.Ifanarrayhasbeendeclaredflexibleusingthesyntax.
varname:flexiblearrayindexType{,indexType
Theindicesmayhavecompile-timeorrun-timeupperbounds(thelowerboundmustbecompile-time).Theupperboundscanbechangedbyusing:
newname,newUpper1{,newUpper2}
Theexistingarrayentrieswillretaintheirvalues,exceptthatanyindexmadesmallerwillhavethecorrespondingarrayentrieslost.Anyindexmadelargerwillhavethenewarrayentriesuninitialized(ifapplicable).
Additionally,theupperbound(bothinthedeclarationandthenewstatement)canbe
![Page 610: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/610.jpg)
madeonelessthanthelowerbound.Thiseffectivelymakesanarraythatcontains0elements.Itcanlaterbeincreasedinsizewithanothernew.
Inthecurrentimplementation(1999),withamulti-dimensionalarraywithanon-zeronumberoftotalelements,itisarun-timeerrortochangeanybutthefirstdimension(unlessoneofthenewupperboundsisonelessthanthecorrespondinglowerbound,giving0elementsinthearray)asthealgorithmtorearrangetheelementmemorylocationshasnotyetbeenimplemented.
Currently,onlyvariablescanbedeclaredinthisform.Thereisnoflexiblearrayparametertype,althoughaflexiblearraycanbepassedtoanarrayparameterwith"*"astheupperbound.
Example Seearrayforanexampleofflexiblearrays.
Seealso
classandcollectiondeclarations,pointertype,freestatement,nilvalueandimplementbylist.
Forflexiblearrays,seealsoarrayandflexible.
![Page 611: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/611.jpg)
nil pointertoacollection
Syntax nil[(collectionOrClassId)]
Description
Thenilpointerdoesnotlocateanyelement(object).Pointerslocateitemsincollections,classesandtypes.ThecollectionOrClassIdisoptional.
Thisnilpointerisdistinctfrompointerstoactualelements,anditcanbecomparedtothesepointers.Itisalsodistinctfromtheuninitializedpointervalue.
Example
Inthisexample,thepointercalledfirstissettothenilpointerofcollectionc,thatis,tonil(c).
varc:collectionof
record
name:string(50)
next:pointertoc
endrecord
varfirst:pointertoc:=nil(c)
Details
Seealsocollection,classandpointer.WhenniliswrittenwithoutthecollectionOrClassId,itcanbeassignedtoapointertoanycollection,classortype.
ThetypeofnilwithoutthecollectionOrClassIdiseffectivelyapointertoeveryClass,animaginaryclassthathasnoobjectsandisthedescendantofallclasses.Thisimpliesthatitcanbeassignedtoanyotherclasspointer,becauseitisadescendantofallclasses.
Turingallowsyoutowritenil(id)afteraforwarddeclarationofid(thenameofacollection,classortype)before(andafter)theresolutionoftheid.
![Page 612: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/612.jpg)
not true/false(boolean)operator
Syntax not
DescriptionThenot(booleannegation)operatorproducestheoppositeofatrue/falsevalue.Forexample,not(x>y)isequivalenttox<=y.
Examplevarerror:boolean:=false
varsuccess:boolean
…
success:=noterror%successbecomestheoppositeoferror
Details
Thenotoperatortakestrueandproducesfalseandtakesfalseandproducestrue.Thenotoperatorcanbewrittenas~.Seealsothebooleantype,prefixoperators,andprecedenceofoperators.
Thenotoperatorcanbeappliedtosets.
![Page 613: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/613.jpg)
objectclass ofapointer
Syntax objectclass(pointerExpn)
Description
Theobjectclassattributeisusedtofindtheclassofanobjectlocatedbyapointer.ThepointerExpnmustbeanexpressionthatisapointertoaclass.
Example
Seeclassforanexampleofclassesandinheritance,inwhichaclasscalledTextFileisinheritedbyaclasscalledDevice.TheDeviceclassaddsanewexportedprocedurecalledioCtl.Inthepresentexample,objectclassisusedtotesttomakesurethatthetextFilePtrcurrentlylocatesanobjectthatwascreatedasaDevice(orasadescendantofDevice).ThenotationDevice(textFilePtr)convertsthepointertobeapointertoaDevicesothatioCtlcanbecalled.
vartextFilePtr:^TextFile
…
ifobjectclass(textFilePtr)>=Devicethen
%CansafelytreatobjectasaDevice
Device(textFilePtr).ioCtl
…
endif
Details
Thisexampleusestheclasscomparisonoperator>=whichmeans"isadescendantof".Seeclass.
Youcanonlyuseobjectclassinclasscomparisons.Inparticular,objectclasscannotbeusedtodeclarepointers.Forexample,this:
varp:^objectclass(q)
isnotallowed.
![Page 614: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/614.jpg)
opaque type
Description
WhenatypeTisexportedfrommodule,monitororclassMusingthekeywordopaque,thetypeM.Tisdistinctfromallothertypes.OpaquetypesareusedtoguaranteethatupdatestovaluesofthetypearedonewithinM.
Seealso
moduledeclarationsforanexampleofanopaquetypeusedtoimplementcomplexarithmetic.Seealsoequivalenceoftypesforthedefinitionofthetypematchingrulesforopaquetypes.
![Page 615: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/615.jpg)
open filestatement
Syntax
AnopenStatementisoneof:
(a) open:fileNumberVar,fileName,ioCapability {,ioCapability} (b) open:fileNumberVar,argNum,ioCapability {,ioCapability}
Description
Theopenstatementconnectstheprogramtoafilesotheprogramcanperformoperationssuchasreadonthefile.Inform(a),theopenstatementtranslatesafileName,suchas"Master",toafilenumbersuchas5.Form(b),whichisless-commonlyused,opensafilewhosenameisgivenbyaprogramargument.Thisisdescribedbelow.
Thereadstatementusesthefilenumber,notthefilename,toaccessthefile.Whentheprogramisfinishedusingthefile,itdisconnectsfromthefileusingthestatement.EachioCapabilityisthenameofanoperation,suchasreadperformedonthefile.
Example
Thisprogramsillustrateshowtoopen,readandthencloseafile.
varfileName:string:="Master"%Nameoffile
varfileNo:int%Numberoffile
varinputVariable:string(100)
open:fileNo,fileName,read
…
read:fileNo,inputVariable
…
close:fileNo
TheopenstatementalwayssetsthefileNumbertoapositivenumber.Ifthefails(generallybecausethefiledoesnotexist),thefileNumberissettoanon-positivenumber.Itiswisetocheckthatthestreamnumberisgreaterthanzerobeforeusingitfurther.
AnioCapabilityisoneof:
get,put,read,write,seek,mod
![Page 616: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/616.jpg)
Details
Afilecanbeaccessedusingonlythestatementscorrespondingtotheinput/outputcapabilitieswithwhichitwasopened.Note:tellisallowedonlyiftheopenisforseek.
TheopenstatementtruncatesthefiletolengthzeroiftheioCapabilitiesputorwritebutnotmod(whichstandsformodify).Inallothercases,theexistingfileintact.ThemodioCapabilityspecifiesthatthefileistobemodifiedwithoutbeingtruncated.Eachopenpositionstothebeginningofafile.Thereisnomechanismtodeleteafile.
Toopenforappendingtotheendofthefile,onehastoopenforseekwriteorputandthenseektotheendofthefile.Seetheseekstatement.
Mixedmodefiles,whichcombinegetandread(orputandwrite),aresupportedbysomeoperatingsystems,suchasUNIX,butnotbyothers,suchasMicrosoftWindows.
OnMicrosoftWindows,oneshouldnotethatopeningfilesinotherdirectoriesusesthebackslashcharacter.ThisisbecausethebackslashisaspecialcharacterinTuring(asin\tfortaband\nforanewline).Togetasinglebackslash,use\\.
e.g.open:f,"C:\\STUDENTS\\SMITH\\ACCT.DAT",
Form(b)ofthesyntaxallowsyoutoopenafilewhosenameisgivenasaprogramargumentonthecommandline.Forexample,underUNIX,thecommandline:
prog.xinfileoutfile
specifiestoexecuteprog.xwithprogramargumentsinfileandoutfiletheTuringprogrammingenvironment,theruncommandcanacceptprogramarguments.TheargNumberisthepositionoftheargumentonthecommandline.(Thefirstargumentisnumber1.)Thenameofthefiletobeopenedisthecorrespondingprogramargument.Ifthereisnosuchargument,orifthefilecannotbeopenedsuccessfully,fileNumberVariableissettozero.Seealsogivesthenumberofarguments,andfetcharg,whichgivesthen-thargumentstring.
Programargumentfilesreferencedbyargumentnumberandusedinorwritestatementsneednotbeexplicitlyopened,butareimplicitlyopenedwiththecapabilitycorrespondingtotheinput/outputstatementinwhichtheyarefirstused.(ThefileNumbergivesthenumberoftheargument.)
![Page 617: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/617.jpg)
Theoperatingsystemstandardfiles(error,outputandinput)areaccessedusingfilenumbers0,-1,and-2,respectively(althoughthismaybesubjecttochange).Thesefilesarenotopenedexplicitly,butareusedsimplybyusingform(b)withthenumber.Bewareoftheanomalouscaseofafailedopenthatgivesyoufilenumber0.Asubsequentuseofthisnumberinaputwillproduceoutputthatgoestothestandarderrorstream,withnowarningthatthefileyouattemptedtoopenisnotactuallybeingused.
Toappendtoafile,thefilemustbeopenedwiththemodandseekthentheremustbeaseektotheendoffile.Forexample:
varstreamnumber:int
open:streamnumber,"myfile",put,mod,seek
seek:streamnumber,*
put:streamnumber,"Thisappearsattheendofthefile"
Thereisanolderandstillacceptableversionofopenthathasthissyntax:
open(varfileNumber:int,fileName:string,
Themodemustbe"r"(forget)or"w"(forput).
Details
ThepathnamespecifiedintheopenstatementandelsewherecanalwaysbeinUNIXformat(i.e.withforwardslashes,aninitialforwardslashindicatinganabsolutedirectory).OnthePC,absolutepathswouldhavetheform:
a:/dir1/dir2/filename
OntheMacintosh,theywouldhavetheform:
/volumename/directory1/directory2/filename
NotethatinadditiontotheUNIXpathformat,onthePC,youcanalwaysusestandardPCpathnotationandontheMacintosh,youcanusestandardMacintoshpathnotation.OntheMacintoshvolume,directoryandfilenamescanhavespacesinthem.
Allroutines(suchastheFileandDirmoduleroutines)willreturnfilesnamesinUNIXformat,regardlessofthemachinetheprogramisrunon.
Seealso close,get,put,read,write,seekandtellstatements.
![Page 618: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/618.jpg)
or operator
Syntax AorB
Description
Theor(boolean)operatoryieldsaresultoftrueifatleastone(orboth)oftheoperandsistrue.orisashortcircuitoperator.Forexample,ifAistrueinAorBthenBisnotevaluated.
Examplevarsuccess:boolean:=false
varcontinuing:=true%thetypeisboolean
…
continuing:=continuingorsuccess
Details
continuingissettofalse,ifandonlyif,bothcontinuingandsuccessarefalse.SinceTuringusesshortcircuitoperators,oncecontinuingistrue,successwillnotbelookedat.
Theoroperatorcanbeappliedtonaturalnumbers.Theresultisthenaturalnumberthatisthebit-wiseoroftheoperands.Seenat(naturalnumber).
Seealso
boolean(whichdiscussestrue/falsevalues),explicitTrueFalseConstant(whichdiscussesthevaluestrueandfalse),precedenceandexpn(expression).
![Page 619: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/619.jpg)
ord character-to-integerfunction
Syntax ord(ch:char):int
Description
Theordfunctionacceptsanenumeratedvalue,char,orastringoflength1,andreturnsthepositionofthevalueintheenumeration,orofthecharacterintheASCII(orEBCDICforIBMmainframes)sequence.Valuesofanenumeratedtypearenumberedlefttorightstartingatzero.Forexample,ord("A")is65.Theordfunctionistheinverseofchr,soforanycharacterc,chr(ord(c))=c.
Seealso chr,intstrandstrintfunctions.
![Page 620: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/620.jpg)
parallelget parallelportfunction
Syntax parallelget:int
Description
TheparallelgetprocedureisusedonaPCtoreadthevalueofcertainpinsontheparallelport.ThisportcorrespondstotheMS-DOSdevice"LPT1".Thisprocedurecanbeusedtocontrolrobotsandperipherals.
Example
ThisprogramreadsandprintsthevaluesofthefivedatapinsofthePC'sparallelport.
constval:int:=parallelget%Readinthesetofpinvalues
put"Pin10is:",(valdiv64)mod2
put"Pin11is:",(valdiv128)mod2
put"Pin12is:",(valdiv32)mod2
put"Pin13is:",(valdiv16)mod2
put"Pin15is:",(valdiv8)mod2
Details
Thefivepinsthatareusedforparallelinputarepins10-15.Theparallelgetprocedurereturnsthesumof
64 Pin10high 128 Pin11high 32 Pin12high 16 Pin13high 8 Pin15high
Themodanddivoperatorscanbeusedtodeterminewhichpinsarehighorlow.
Seealsotheparallelputprocedureforadiagramofthepins.Thatprocedurevaluesontheparallelport.
![Page 621: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/621.jpg)
parallelput parallelportprocedure
Syntax parallelput(p:int)
Description
TheparallelputprocedureisusedonaPCtosetthevaluesonthedatapinsontheparallelport.ThisportcorrespondstotheMS-DOSdevice"LPT1".Thisprocedurecanbeusedtocontrolrobotsandperipherals.
Example
Thisprogramsetsdatabit0,databit1andsoontodatabit7.
fori:0..7
parallelput(2**i)%Setdatabitiontheparallelport
put"Databit",i,"orPin",i+2,"hasjustbeenset"
endfor
Details
TheparallelputprocedureisusedtosettheeightdatabitsonthePC'sparallelport.Thesedatabits0-7correspondtopins2-9ontheparallelport.
Thevaluesenttoparallelputisthesumofthefollowing:
1 Databit0 16 Databit4 2 Databit1 32 Databit5 4 Databit2 64 Databit6 8 Databit3 128 Databit7
Forexample,thecommandparallelput(97)setsdatabits0,5and6high(97=1+32+64)andsetstheotherdatapinslow.Becausethereareonly8datapinsintheparallelport,thevaluepassedtoparallelputmustbefrom0to255.
Theparallelputprocedureisnotmeantforsendingastreamofcharacterstotheparallelport(forexample,ifyouwanttosendthestring"Hello"totheprinter).Ifyouwanttodothis,openthefile"LPT1"using
![Page 622: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/622.jpg)
theopenstatementandputtothefile.
Seealsotheparallelgetfunction,whichisusedtoreadthevaluesofpinsontheparallelport.
![Page 623: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/623.jpg)
paramDeclaration parameterdeclaration
Syntax
AparamDeclarationisoneof:
(a) [var]id{,id}:typeSpec (b) subprogramHeader
Description
Aparameterdeclaration,whichispartoftheheaderofaprocedureorfunction,specifiesaformalparameter(seealsoprocedureandfunctiondeclarations).Form(a)aboveisthemostcommoncase.Form(b)specifiesproceduresandfunctionsthatarethemselvespassedasparameters.
Example
procedureputTitle(title:string)
%Theparameterdeclarationis:title:string
puttitle
endputTitle
procedurex(vars:array1..*ofstring(*))
%Seteachelementofstothenullstring
fori:1..upper(s)
s(i):=""
endfor
endx
Details
Parameterstoaproceduremaybedeclaredusingvar,whichmeansthattheparametercanbechangedinsidetheprocedure.Forexample,sischangedintheprocedure.Ifaparameterisdeclaredwithoutvar,itcannotbechanged.(ThisdiffersfromPascal,wherenon-varparameterscanbechanged.)Parameterstofunctionscannotbedeclaredtobevar.
Parametersdeclaredvararepassedbyreference,whichmeansthatapointertothevalueispassedtotheprocedure,ratherthanpassingtheactualvalue.Thisimpliesthatinthecallp(a(i)),inwhicharrayelementa(i)ispassedtoprocedurep,achangetoiinpdoesnotchangetheelementreferredtobyp'sactualparameter.Everynon-scalar(notinteger,subrange,real,boolean,enumerated,pointerorthechartype)parameterispassedbyreferencewhetherornotitisdeclaredvar.Inallothercases(scalarnon-varparameters)theparameterispassedbyvalue(theactualvalueiscopiedtotheprocedure).
![Page 624: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/624.jpg)
Theupperboundofanarrayorstringthatisaformalparametermaybespecifiedasanasterisk(*),asisdoneaboveforparametersinprocedurex.Thisspecifiesthatthesizeoftheupperboundisinheritedfromthecorrespondingactualparameter.Parametersdeclaredusingstararecalleddynamicparameters.
Thenamesoftheformalparametersmustbedistinctfromeachother,fromtheprocedureorfunctionname,andfrompervasiveidentifiers.However,theyneednotbedistinctfromnamesoutsideoftheprocedureorfunction.
Example
Findthezerooffunctionf.Thisexampleillustratesform(b),whichisaparameterthatisafunction.SeealsosubprogramHeader.
functionfindZero(functionf(x:real):real
left,right,accuracy:real):
presign(f(left))not=sign(f(right)
andaccuracy>0
varL:real:=left
varR:real:=right
varM:real
constsignLeft:=sign(f(left))
loop
M:=(R+L)/2
exitwhenabs(R-L)<=accuracy
ifsignLeft=sign(f(M))then
L:=M
else
R:=M
endif
endloop
resultM
endfindZero
Details
Form(b)ofparamDeclarationisusedtospecifyformalparametersthatarethemselvesproceduresorfunctions.Forexample,inthefindZerofunction,formalparameterthatisitselfafunction.Thesubprogramtypecanbeusedtoreplaceform(b).Inparticular,theheadertothefindZerofunctioncanbereplacedbythefollowingwithnochangeintheaction.Thenamesgandxservenopurpose,exceptasplaceholdersinthedeclarationoff.
functionfindZero(f:functiong(x:real):
left,right,accuracy:real):
Parametersthataredeclarednonvarshould,inprinciple,beconstant.
![Page 625: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/625.jpg)
Details
Unfortunately,thereisananomaloussituationinwhichthesecanchange.Thisoccurswhentheparameterispassedbyreference,becauseitisanonscalarsuchasastring.Iftheactualparameterischangedwhilethesubprogramisexecuting,theformalparameterwillchangeaswell.
Youcanalsooptionallyusetheregisterkeywordtorequestthatthevariablebeplacedinamachineregister.Thischangesform(a)toallowtheoptionaluseoftheregisterkeyword.Thesyntaxforform(a)isactually:
[var][register]id{,id}:[cheat]typeSpec
Inthecurrent(1999)implementation,programsareruninterpretivelyusingpseudo-code,whichhasnomachineregisters,andtheregisterkeywordisignored.Seeregisterforrestrictionsontheuseofregisterparameters.
Theoptionalkeywordcheatmeansthattheparameterhasatypecheat.SeeAnyvariableorconstantnonscalar(inotherwords,itemspassedbyreference)canbepassedtoatypecheatparameter.Theinternalrepresentationwillbeinterpretedasavalueofthespecifiedtype.Thisisdangerousasitprovidesunconstrainedaccesstotheunderlyingcomputermemory.
Example
Thisprocedureoutputsthevaluesofnbytesstartingattheaddressofformalparametera,usingaparametertypecheat.
proceduredump(a:cheatarray0..10000ofnat1
fori:0..n-1
puti,a(i):4
endfor
enddump
vars:string:="abc"
dump(s,5)%Dumps5bytes,startingwith
![Page 626: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/626.jpg)
pause statement
Syntax
ApauseStatementis:
pauseexpn
Description
Thepausestatementblockstheprogram(orjusttheprocessinthecaseofaconcurrentprogram)foragivennumberofsimulatedtimeunits.Theexpnmustbeanon-negativeintvaluegivingthenumberoftimeunits.Thisisanalogoustothedelaystatement,whichcausesblockingforagivenamountofrealtime(actualphysicaltime).
Theinterpretermaintainsacounterwhichitconsiderstobesimulatedtime.Theonlyexecutionthatcausesthiscountertoincreaseisthepausestatement.Theprocessexecutingthepauseisblockeduntilthecounterhascountedforwardthenumberofunitsgivenbyexpn.Allotherstatements(exceptwait)areconsideredtobeinfinitelyfast.Severalprocessescanbeexecutingpausestatementssimultaneously.
TheuseofsimulatedtimeallowsTuringtobeusedasasimulationlanguageinwhichthepausestatementsimulatesthepassageoftimeinthesimulatedsystem.
![Page 627: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/627.jpg)
PC
Description
ThisunitcontainsthepredefinedsubprogramsthatdealwithdirectaccesstothehardwareundertheIBMPCarchitecture.
AllroutinesinthePCunitareexportedqualified(andthusmustbeprefacedwith"PC.").
EntryPoints
ParallelGet Returnsthevalueofthepinssetontheparallelport.
ParallelPut Setsthevaluesofthepinsontheparallelport.
![Page 628: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/628.jpg)
PC.ParallelGet PartofPCmodule
Syntax PC.ParallelGet(port:int):nat1
Description
ThePC.ParallelGetfunctionisusedtoreadthevalueofcertainpinsonaparallelport.Theportisspecifiedwiththeportparameterwhichcanhavethevalue1,2or3correspondingto"LPT1","LPT2"and"LPT3".Thisprocedurecanbeusedtocontrolrobotsandperipherals.
Example
ThisprogramreadsandprintsthevaluesofthefivedatapinsofthePC'sparallelport.
%ReadinthesetofpinvaluesfromLPT1
constval:int:=PC.ParallelGet(1)
put"Pin10is:",(valdiv64)mod2
put"Pin11is:",(valdiv128)mod2
put"Pin12is:",(valdiv32)mod2
put"Pin13is:",(valdiv16)mod2
put"Pin15is:",(valdiv8)mod2
Details
Thefivepinsthatareusedforparallelinputarepins10-15.ThePC.ParallelGetprocedurereturnsthesumof
64 Pin10high 128 Pin11high 32 Pin12high 16 Pin13high 8 Pin15high
Themodanddivoperatorscanbeusedtodeterminewhichpinsarehighorlow.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingPC.ParallelGet,notbycallingParallelGet.
PC.ParallelPutprocedureforadiagramofthepins.That
![Page 629: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/629.jpg)
Seealso procedureisusedtosetthevaluesontheparallelport.
![Page 630: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/630.jpg)
PC.ParallelPut PartofPCmodule
Syntax PC.ParallelPut(port:int,value:int)
Description
ThePC.ParallelPutprocedureisusedonaPCtosetthevaluesonthedatapinsontheparallelport.Theportisspecifiedwiththeportparameterwhichcanhavethevalue1,2or3correspondingto"LPT1","LPT2"and"LPT3".Thisprocedurecanbeusedtocontrolrobotsandperipherals.
Example
Thisprogramsetsdatabit0,databit1andsoontodatabit7.
fori:0..7
%SetdatabitionparallelportLPT2
PC.ParallelPut(2,2**i)
put"Databit",i,"orPin",i+2,"hasjustbeenset"
endfor
Details
ThePC.ParallelPutprocedureisusedtosettheeightdatabitsonthePC'sparallelport.Thesedatabits0-7correspondtopins2-9ontheparallelport.
ThevaluesenttoPC.ParallelPutisthesumofthefollowing:
1 Databit0 16 Databit4 2 Databit1 32 Databit5 4 Databit2 64 Databit6 8 Databit3 128 Databit7
Forexample,thecommandPC.ParallelPut(97)setsdatabits0,5and6high(97=1+32+64)andsetstheotherdatapinslow.Becausethereareonly8datapinsintheparallelport,thevaluepassedtoPC.ParallelPutmustbefrom0to255.
![Page 631: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/631.jpg)
ThePC.ParallelPutprocedureisnotmeantforsendingastreamofcharacterstotheparallelport(forexample,ifyouwanttosendthestring"Hello"totheprinter).Ifyouwanttodothis,openthefile"LPT1"usingtheopenstatementandputtothefile.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingPC.ParallelPut,notbycallingParallelPut.
SeealsoPC.ParallelGetfunction,whichisusedtoreadthevaluesofpinsontheparallelport.
![Page 632: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/632.jpg)
pervasive declarationmodifier
Description
Whenavariable,constant,typeorsubprogramisdeclared,youcanspecifythatitistobepervasive,whichmeansthatitdoesnotneedtobeexplicitlyimportedintomodules,monitorsorclassesinthecurrentscope.Thekeywordcanbeabbreviatedasanasterisk(*).
Example
varpervasivecounter:int%Shortform:var*count:int
const*maxCounter:int:=100
procedure*p(x:real)
…
endp
DetailsThekeywordpervasiveisalsousedinexportlistsalongwiththekeywordunqualified.Seeexportlistfordetails.
Seealsovardeclaration,constdeclaration,proceduredeclaration,functionsubprogramheaderandexportlistforusesofpervasive.
![Page 633: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/633.jpg)
Pic
Description
Thisunitcontainsthepredefinedsubprogramsthatdealwithtakingpicturesofpartofthescreen,displayingthemandmovingpicturesfromfiletoscreenandback.
AllroutinesinthePicunitareexportedqualified(andthusmustbeprefacedwith"Pic.").
EntryPoints
New Createsapicturefromaspecifiedportionofthescreen.
Draw Drawsapictureonthescreen.
DrawSpecial Drawsapictureonthescreenusingspecialeffects.
DrawSpecialBack Drawsapictureonthescreenwhilecontinuingexecutionusingspecialeffects.
Free FreesupthepicturecreatedbyusingNeworFileNew.
FileNew Createsapicturefromafileinanallowedformat.
Save Savesapictureasafileinanallowedformat.
ScreenLoad Displaysafileinanallowedformatonthescreendirectly.
ScreenSave Savesaspecifiedportionofthescreenasafileinanallowedformat.
Rotate Createsanewpicturebyrotatinganexistingpicture.
Scale Createsanewpicturebyscalinganexistingpicture.
Flip Createsanewpicturebyflippinganexistingpictureupside-down.
Mirror Createsanewmirror-imageofanexistingpicture.Createsanewpicturebyblending
![Page 634: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/634.jpg)
Blend twoexistingpicturestogether.
Blur Createsanewpicturebyblurringanexistingpictures.
Width Returnsthewidthofapicture.Height Returnstheheightofapicture.
Frames Returnsthethenumberofframesinamulti-frameGIFfile.
FileNewFrames Createsanarrayofpicturesfromamulti-frameGIFfile.
DrawFrames Drawsaseriesofpicturesonthescreeninsequencewhilecontinuingexecution.
DrawFramesBack Drawsaseriesofpicturesonthescreeninsequence.
SetTransparentColor SetsthecolortobeignoredwhenusingpicMergemode.
SetTransparentColour SetsthecolortobeignoredwhenusingpicMergemode.
![Page 635: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/635.jpg)
Pic.Blend PartofPicmodule
Syntax Pic.Blend(picID1,picID2,pct:int):int
Description
Pic.Blendisusedtocreateanewpicturebyblendingtwoidenticallysizedpictures.Theresultingpictureiscreatedbytakingpct%ofthefirstpictureandaddingitto(100-pct)%ofthesecondpicture.
Details
Notethattheblendedpictureisanewlycreatedpicture.Whenitisnolongerneeded,itsmemoryshouldbereleasedbyusingPic.Free.
Notethatifpctis100,thentheresultingpicturewillbeidenticaltois0,thentheresultingpicturewillbeidenticaltopicID2.
Example
Theprogramcreatestwoidenticallysizedpictures,blendsthemtogetheranddisplaysallthreepictures.Youcanvarytheblendpercentagetoobtaindifferentresults.
View.Set("graphics:340;140,nobuttonbar")
%Createtheoriginalpictures
varpic1,pic2,picBlended:int
Draw.FillBox(0,0,100,100,brightred)
Draw.FillOval(50,50,50,50,brightblue)
pic1:=Pic.New(0,0,100,100)
cls
Draw.FillStar(10,10,90,90,brightgreen)
Draw.FillMapleLeaf(10,10,90,90,brightred)
pic2:=Pic.New(0,0,100,100)
cls
%Createnewpicturebyblending30%frompic1,70%frompic2
picBlended:=Pic.Blend(pic1,pic2,30)
%Drawthethreeimages
Pic.Draw(pic1,10,10,picCopy)
Pic.Draw(pic2,120,10,picCopy)
Pic.Draw(picBlended,230,10,picCopy)
![Page 636: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/636.jpg)
OutputfromtheProgram
Execute
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingPic.BlendBlend.
![Page 637: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/637.jpg)
Pic.Blur PartofPicmodule
Syntax Pic.Blur(picID,blurAmount:int):int
Description
Pic.Blurisusedtocreateanewpicturebyblurringanexistingpicture.Theresultingpictureiscreatedbymixingpixelsinapicturewithpixelsadjacenttoit.AstheblurAmountincreases,theimagegrowsmoreandmoreblurry.
Details
Notethattheblurredpictureisanewlycreatedpicture.Whenitisnolongerneeded,itsmemoryshouldbereleasedbyusingPic.Free.
NotethatthisisafairlyCPUintensiveroutine.Onslowmachines,toasecondormorewhenblurAmountislarge.Insuchcases,itisbettertoprecomputethepicturesbeforestartingtheprogram.Thesecondexampleshowsthisbeingdone.
Example
Theprogramcreatesapictureandthenprogressivelyblursit.
View.Set("graphics:270;120,nobuttonbar")
%Createtheoriginalpicture
varf:=Font.New("serif:60:bold,italic,noantialias")
Font.Draw("Turing",10,30,f,red)
Draw.FillStar(70,80,90,100,brightgreen)
Draw.FillBox(240,5,270,35,brightblue)
varoldPic:int
oldPic:=Pic.New(0,0,maxx,maxy)
loop
varnewPic:int
%Createthenewpicturebyblurringtheoldpicture
newPic:=Pic.Blur(oldPic,10)
%Freetheoldpicturesowedon'trunoutofmemory
Pic.Free(oldPic)
Pic.Draw(newPic,0,0,picCopy)
delay(300)
oldPic:=newPic
endloop
![Page 638: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/638.jpg)
Outputatstart Afterseveralloops
Execute
Execute
Byprecalculatingandsavingtheresultsoftheblurredpicture,youvisualeffectwhereanobjectseemstocomeintofocus.Theprogrambelowblursanimage,savingeachstep.Itthendrawstheimagesinreverseorder,makingitappearasiftheimageisbecomingsuccessivelysharper.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingPic.Blur,notbycallingBlur.
![Page 639: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/639.jpg)
Pic.Draw PartofPicmodule
Syntax Pic.Draw(picID,x,y,mode:int)
Description
Pic.Drawisusedtodrawapictureonthescreen.Thepictureisdrawnwiththelowerleftcornerat(x,y).
Themodeparameterhasoneofthefollowingvalues:
picCopy Thisdrawsthepictureontopofwhatwasunderneath,obscuringitcompletely.
picXor
ThisdrawsthepictureXORingitwiththebackground.InDOS,youcanusethisfunctiontodoanimation.DrawinganobjectontopofitselfwithXORerasesitandrestoresthebackground.
picMerge
ThisdrawsthepicturelikepicCopyexceptthatanyoccurrenceofthebackgroundcolorinthepictureisnotdrawntothescreen.Thisallowsyoutodrawanirregularly-shapedobjectanddrawittothescreen.
picUnderMerge
Thisdrawsthepicture,butonlywherethebackgroundcolorwasdisplayedunderneathit.Theeffectofthisistomakethepictureappeartobedisplayedbehindthebackground.
Execute
IfthePic.Drawcallfails,Error.Lastwillreturnanon-zerovalueindicatingthereasonforthefailure.Error.LastMsgwillreturnastringwhichcontainsthetextualversionoftheerror.
![Page 640: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/640.jpg)
Details
DisplayModeswithPic.Draw
Example
Theprogramdrawsagraphiconthescreenandthenrepeatsit50timesinrandompositions.
varpicID:int
varx,y:int
Draw.FillBox(50,50,150,150,red)
Draw.FillStar(50,50,150,150,green)
Draw.FillOval(100,100,30,30,blue)
picID:=Pic.New(50,50,150,150)
fori:1..50
x:=Rand.Int(0,maxx)%Randomx
y:=Rand.Int(0,maxy)%Randomy
Pic.Draw(picID,x,y,picCopy)
endfor
Pic.Free(picID)
![Page 641: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/641.jpg)
Execute
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingPic.Draw,notbycallingDraw.
Seealso
View.Updateforinformationonhowtoproducesmoothanimation.
Pic.DrawSpecialforinformationonhowtomakepicturesappearusingspecialeffectssuchaswipesandslides.
Pic.DrawFramesforinformationonhowtodisplaymultipleframeimagessuchasareobtainedfromGIFfiles.
![Page 642: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/642.jpg)
Pic.DrawFrames PartofPicmodule
Syntax
Pic.DrawFrames(picIds:array1..*ofint,x,y,mode:
numFrames,delayBetweenFrames:int,eraseAfterboolean)
Description
Pic.DrawFramesisusedtodrawasetofpicturesstoredinanarrayofpicturesaredisplayedoneatatime,andthereisadelayofdelayBetweenFramesmillisecondsbetweenframes.Thex,y,andmodeparametersarethesameasinPic.Draw.ThenumFramesparameterspecifiesthenumberofframestobedrawn(thepicIdsarraymustbeatleastthisbig).TheeraseAfterparameterspecifieswhetherthelastframeoftheanimationshouldbeleftontheRunwindowwhenthecallfinishes.IferaseAfterissettotrue,thenthebackgroundisrestoredafterthelastpicturehasbeendrawnanddelayBetweenFramesmillisecondshaspassed.
Details
GIFfilescancontainmultipleframes(pictures).AnimatedGIFsfunctionbyeachframeintheGIFoneafteranotherwithadelaybetweenthem.
TuringallowsuserstoloadmultipleframeGIFimagesintoaseriesintoanarrayusingthePic.FileNewFramesprocedure.TheusercandeterminehowmanyframesarefoundintheGIFfileusingPic.Frames.TheframescanbesequentiallydisplayedusingeitherPic.DrawFramesorPic.DrawFramesBackwhichdisplaytheimagesoneatatime.(Pic.DrawFramesreturnsimageshavebeendisplayed,Pic.DrawFramesBackreturnsimmediatelyallowingtheprogramtocontinueexecutionwhiletheframesarebeingdisplayed.
Pic.FramesisafunctionwhichreturnsthenumberofframesfoundintheGIF.itisusedonaGIFthatdoesnotcontainmultipleimages,oronanon-GIFimagefile,itreturns1.
TheprogramloadsamultipleframeGIFcalled"globe.gif"anddisplaysit.
%Determinethenumberofframesin"globe.gif"
varnumFrames:=Pic.Frames("globe.gif")
%Loadthepicture
vardelayTime:int
varpics:array1..numFramesofint
![Page 643: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/643.jpg)
Example Pic.FileNewFrames("globe.gif",pics,delayTime)
Pic.DrawFrames(pics,10,10,picCopy,numFrames
fori:1..numFrames
Pic.Free(pics(i))
endfor
Execute
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingPic.DrawFramesbycallingDrawFrames.
Seealso
Pic.FramesforinformationonhowtodeterminethenumberofframesinaGIFimage.
Pic.FileNewFramesforinformationonhowtoloadaGIFimagewithmultipleframesintoanarrayofints.
Pic.DrawFramesBackforinformationonhowtosequentiallydisplaytheimagesstoredinarrayofpictureswhilecontinuingtoexecutetheprogram.
![Page 644: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/644.jpg)
Pic.DrawFramesBack PartofPicmodule
SyntaxPic.DrawFramesBack(picIds:array1..*ofint,x,y,mode numFrames,delayBetweenFrames:int,eraseAfter
Description
Pic.DrawFramesBackisverysimilartoPic.DrawFrames.TheonlyPic.DrawFramesBackreturnsimmediatelyafterbeingcalledandprogramexecutioncontinueswhiletheframesarebeingdrawn.Thisallowsyoutocontinuetodrawothergraphicsbeingdrawn.
Forexample,thisprocedureisnecessaryifyouwanttohavetwosetsofframesbeingdrawnsimultaneously.
Details
Ifyouarewishtohaveseveralsetsofimagesdisplayedatthesametime,youmustusePic.DrawFramesBacktodisplayeachsetofimagesbutthelastandthenusedisplaythelastsetsothatTuringwillwaituntiltheyarecompletedbefore
Ifyouwanttodrawthesamesetofframescontinuously,donotuse
fori:1..20
Pic.DrawFrames(pics,10,10,picCopy,10,50,false
%DonotusePic.DrawFramesBackinthepreviousstatement
endfor
Ifyoudo,Turingwillattempttoruneachofthecallsatthesametime,andtheanimationwillappeartoonlyrunonce.
Details
GIFfilescancontainmultipleframes(pictures).AnimatedGIFsfunctionbyeachframeintheGIFoneafteranotherwithadelaybetweenthem.
TuringallowsuserstoloadmultipleframeGIFimagesintoaseriesPic.FileNewFramesprocedure.TheusercandeterminehowmanyframesarefoundinusingPic.Frames.TheframescanbesequentiallydisplayedusingeitherPic.DrawFramesBackwhichdisplaytheimagesoneatatime.(Pic.DrawFramesimageshavebeendisplayed,Pic.DrawFramesBackreturnsimmediatelyallowingtheprogramtocontinueexecutionwhiletheframesarebeingdisplayed.
Pic.FramesisafunctionwhichreturnsthenumberofframesfoundintheGIF.thatdoesnotcontainmultipleimages,oronanon-GIFimagefile,
![Page 645: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/645.jpg)
Example
TheprogramloadsamultipleframeGIFcalled"globe.gif"anddisplaysit.
%Determinethenumberofframesin"globe.gif"
varnumFrames:=Pic.Frames("globe.gif")
%Loadthepicture
vardelayTime:int
varpics:array1..numFramesofint
Pic.FileNewFrames("globe.gif",pics,delayTime)
fori:1..50
Pic.DrawFramesBack(pics,10,10,picMerge,
Pic.DrawFramesBack(pics,20+Pic.Width(pics(1)),10,
%All50iterationswillexecuteatonceifthenextcallis
%Pic.DrawFramesBack,andnotPic.DrawFrames
Pic.DrawFrames(pics,30+2*Pic.Width(pics(1)),10,
endfor
fori:1..numFrames
Pic.Free(pics(i))
endfor
Execute
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingPic.DrawFramesDrawFrames.
Seealso
Pic.FramesforinformationonhowtodeterminethenumberofframesinaGIFimage.
Pic.FileNewFramesforinformationonhowtoloadaGIFimagewithmultipleframesintoanarrayofints.
Pic.DrawFramesBackforinformationonhowtosequentiallydisplaytheimagesstoredinarraypictureswhilecontinuingtoexecutetheprogram.
![Page 646: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/646.jpg)
Pic.DrawSpecial PartofPicmodule
Syntax Pic.DrawSpecial(picID,x,y,mode,transition,duration:
Pic.DrawSpecialisusedtodrawapictureonthescreenwithaspecialeffectsuchasawipe,aslide,orafade-in.Thepictureisdrawnwiththelowerleftcorneratdurationspecifieshowlongthetransitionshouldtakeinmilliseconds.fade-incouldbespecifiedtolast1/2asecondbyusingadurationof500.
ThemodeparameteristhesameasinPic.Newandhasoneofthefollowingvalues:
picCopy Thisdrawsthepictureontopofwhatwasunderneath,completely.
picXor ThisdrawsthepictureXORingitwiththebackground.canusethisfunctiontodoanimation.DrawinganobjectontopofitselfwithXORerasesitandrestoresthebackground.
picMerge ThisdrawsthepicturelikepicCopyexceptthatanyoccurrenceofthebackgroundcolorinthepictureisnotdrawntothescreen.Thisallowsyoutodrawanirregularly-shapedobjectanddrawitto
picUnderMerge Thisdrawsthepicture,butonlywherethebackgrounddisplayedunderneathit.Theeffectofthisistomakethepictureappeartobedisplayedbehindthebackground.
Thetransitionparameterindicatesthespecialeffectandhasoneofthefollowingvalues:
picWipeLeftToRight
Thepictureappearsasasolidblackbarsweepsfromlefttoright,"revealing"thenewpictureasthescreenunderneathreplaced.
Inthepicturebelow,"toTuring"isreplacingthe"Welcome"underneathasthebarsweepsfromlefttoright.
picWipeLeftToRight-halfwaythrough
![Page 647: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/647.jpg)
transition
picWipeRightToLeft,picWipeTopToBottom,picWipeBottomToTop
AspicWipeLeftToRight,exceptthebarsweepsindifferentdirections.
picWipeUpperLeftToLowerRight
Thepictureappearsasasolidblackbarsweepsfromtheupperleftcornerdowntothelowerright,"revealing"thenewpictureunderneaththepictureisreplaced.
Inthepicturebelow"toTuring"isreplacingthe"Welcome"underneathasthebarsweepsfromupper-lefttolower-right.
picWipeUpperLeftToLowerRight-halfwaythroughtransition
picWipeUpperRightToLowerLeft,picWipeLowerLeftToUpperRight,picWipeLowerRightToUpperLeft
AspicWipeLeftToRight,exceptthebarsweepsindifferentdirections.
picWipeCentreToEdge,picWipeCenterToEdge
Thepictureappearsinsideanexpandingblackoutlinedboxasitsweepsfromthecentreouttotheedges,"revealing"thenewscreenunderneaththepictureisreplaced.
Inthepicturebelow,"toTuring"isreplacingthe"Welcome"underneathastheboxexpandsfromthecentreout.
picWipeCentreToEdge-halfwaythroughtransition
picWipeLeftToRightNoBar,
![Page 648: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/648.jpg)
Description
picWipeRightToLeftNoBar,picWipeTopToBottomNoBar,picWipeBottomToTopNoBarpicWipeUpperLeftToLowerRightNoBar,picWipeUpperRightToLowerLeftNoBar,picWipeLowerLeftToUpperRightNoBar,picWipeLowerRightToUpperLeftNoBar,picWipeCentreToEdgeNoBar,picWipeCenterToEdgeNoBar
Astheconstantsabove,expectthereisnobartomarkthesweepacross.Thebargenerallylooksbetterwhendisplayingofasimilarone.Nobarisusuallywhentheimagesarecompletelydifferent(asintwophotographs,andsoon).
picSlideLeftToRight
Thepicture"slidesin"fromtheleftasasolidblackbarsweepsfromlefttoright,"pushing"thescreenunderneathofftherightedgeofthedrawingarea.
Inthepicturebelow"toTuring"isreplacingthe"Welcome"originallypresent,"pushing"the"Welcome"totherightslidesinfromtheleft.
picSlideLeftToRight-halfwaythroughtransition
picSlideRightToLeft,picSlideTopToBottom,picSlideBottomToTop
AspicSlideLeftToRight,exceptthebarsweepsindifferentdirections.
picSlideLeftToRightNoBar,picSlideRightToLeftNoBar,picSlideTopToBottomNoBar,picSlideBottomToTopNoBar
Astheconstantsabove,expectthereisnobartomarkthesweepacross.Thebargenerallylooksbetterwhendisplayingofasimilarone.Nobarisoftenwhentheimagesarecompletelydifferent(asintwophotographs,andsoon).
Thepicture"grows"fromtheleftasasolidblackbarsweepsfromlefttoright,"squeezing"thescreenunderneathedgeofthedrawingarea.
![Page 649: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/649.jpg)
picGrowLeftToRight
Inthepicturebelow"toTuring"isreplacingthe"Welcome"originallypresent,"squeezing"the"Welcome"totheright"grows"fromtheleft.
picGrowLeftToRight-halfwaythroughtransition
picGrowRightToLeft,picGrowTopToBottom,picGrowBottomToTop
AspicGrowLeftToRight,exceptthebarsweepsindifferentdirections.
picGrowCentreToEdge,picGrowCenterToEdge
Thepicture"grows"fromthecentreasaoutlinedblackboxsweepsfromoutward,replacingthescreenunderneath.
Inthepicturebelow"toTuring"isreplacingthe"Welcome"originallypresent,as"toTuring"growsforthecentre.
picGrowCentreToEdge-halfwaythroughtransition
picGrowLowerLeftToUpperRight
Thepicture"grows"fromthelower-leftcornerasaoutlinedblackboxsweepsrightandupward,replacingthescreen
Inthepicturebelow"toTuring"isreplacingthe"Welcome"originallypresent,as"toTuring""grows"fromthelower-left.
picGrowLowerLeftToUpperRight-halfwaythroughtransition
![Page 650: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/650.jpg)
picGrowUpperLeftToLowerRight,picGrowLowerRightToUpperLeft,picGrowUpperRightToLowerLeft
AspicGrowLowerLeftToUpperRighttheboxsweepsindifferentdirections.
picGrowLeftToRightNoBar,picGrowRightToLeftNoBar,picGrowTopToBottomNoBar,picGrowBottomToTopNoBarpicGrowUpperLeftToLowerRightNoBar,picGrowLowerLeftToUpperRightNoBar,picGrowUpperRightToLowerLeftNoBar,picGrowLowerRightToUpperLeftNoBar,picGrowCentreToEdgeNoBar,picGrowCenterToEdgeNoBar
Astheconstantsabove,expectthereisnobartomarkthesweepacross.Thebargenerallylooksbetterwhendisplayingofasimilarone.Nobarisusuallywhentheimagesarecompletelydifferent(asintwophotographs,andsoon).
picFadeIn
Thepicture"fadesin"overtopoftheimageunderneathit.Attheendofthetransition,thenewimagecompletelyreplacestheimageunderneathit.
picFadeIn-halfwaythroughtransition
picBlend
Thistransitionissomewhatdifferentbecauseitdoesn'ttakeanytimetoexecute.picBlendcausesthenewimagetobeblendedwiththebackground.Thecanbeusedbyitself,inwhichcase,imageis70%thenewimage,30%theoldimage.Youcanalsoaddanumberfrom1to100topicBlend,inwhichcase,theblendiswhateverwasaddedfrom(1-100)ofimageovertopoftheoldimage.transitionofpicBlend+15woulddisplayanimagethatiscomposedof15%thenewimageand85%theoldimage.)
![Page 651: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/651.jpg)
picBlend-redstarblendedwithbluecircle
Execute
Details
ThePic.DrawSpecialrequiresamoderatelyfastmachinetooperatesuccessfully(PentiumIIIorhigher).ThepicFadeInandpicBlendtransitionsdonotworkwellon8-bit(256color)displays.OnMicrosoftWindowsmachines,youcandeterminetheofthedisplay(thenumberofcolorsavailable)byselectingtheDisplayfromtheStartmenu.Youcanalsousethe
Config.Display(cdNumMaxColors)
functiontodeterminethebit-depthofthedisplay(anythingover256colorswillproduceacceptableresults).
Details
IfthePic.DrawSpecialcallfails,Error.Lastwillreturnanon-zerovalueindicatingthereasonforthefailure.Error.LastMsgwillreturnastringwhichcontainsthetextualversionoftheerror.
Example
Theprogramdrawsabluestaronthescreen,thenaredcircle,thenhavethetworeplaceeachotherwithavarietyoftransitions.
varredID,blueID:int
varx,y:int
Draw.FillStar(50,50,150,150,brightred)
redID:=Pic.New(50,50,150,150)
cls
Draw.FillOval(100,100,50,50,brightblue)
blueID:=Pic.New(50,50,150,150)
Pic.DrawSpecial(redID,50,50,picCopy,picWipeLeftToRight
Pic.DrawSpecial(blueID,50,50,picCopy,picWipeTopToBottom
![Page 652: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/652.jpg)
Pic.DrawSpecial(redID,50,50,picCopy,picSlideLeftToRight
Pic.DrawSpecial(blueID,50,50,picCopy,picSlideTopToBottom
Pic.DrawSpecial(redID,50,50,picCopy,picFadeIn
Pic.DrawSpecial(blueID,50,50,picCopy,picBlend
Pic.Free(redID)
Pic.Free(blueID)
Execute
Execute
Thefollowingprogramdemonstrateseachofthedifferentspecialeffects,firstusingpicturescontainingtext,thenpicturesloadedfromphotographs,thenbothatonce.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingPic.DrawSpecialDrawSpecial.
Seealso
Pic.Drawforinformationonthemeaningofthemodeargument.
Pic.DrawSpecialBackforinformationonhowtocontinueexecutingtheprogramwhileaspecialeffectisoccurring.Thisallowsonetoproduceseveralspecial
![Page 653: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/653.jpg)
Pic.DrawSpecialBack PartofPicmodule
Syntax Pic.DrawSpecialBack(picID,x,y,mode,transition,duration
Description
Pic.DrawSpecialBackisverysimilartoPic.DrawSpecial.TheonlyPic.DrawSpecialBackreturnsimmediatelyafterbeingcalledandprogramexecutioncontinueswhilethespecialeffectcontinues.Thisallowsyoutocontinuetodrawothergraphicseffectiscontinuing.
Forexample,thisprocedureisnecessaryifyouwanttohavetwopicturesbeingdrawnusingspecialeffectssimultaneously.
Details
Ifyouarewishtohaveseveralimagesdisplayedatthesametimeusingspecialeffects,youmustusePic.DrawSpecialBacktodisplayalltheimagesbutthelastandthenusethelastimagesothatTuringwillwaituntilthespecialeffectsarecompletedbeforecontinuingexecution.
Ifyouwanttodrawtheseveralspecialeffectscontinuouslyoverthesamelocation,donotusePic.DrawSpecialBack.
Pic.DrawSpecial(pic1,10,10,picCopy,picWipeLeftToRight
Pic.DrawSpecial(pic2,10,10,picCopy,picFadeIn,1000)
Ifyoudo,Turingwillattempttoruneachofthecallsatthesametime,andmostofthespecialeffectswillnotbeseen.
Description
Pic.DrawSpecialBackisusedtodrawapictureonthescreenwithaspecialeffectsuchasawipe,aslide,orafade-in.NotethatalltheparametersareidenticaltotheparametersofThepictureisdrawnwiththelowerleftcornerat(x,y).Thedurationtransitionshouldtakeinmilliseconds.Forexample,afade-incouldbyusingadurationof500.
ThemodeparameteristhesameasinPic.Newandhasoneofthefollowingvalues:
picCopy Thisdrawsthepictureontopofwhatwasunderneath,
picXor ThisdrawsthepictureXORingitwiththebackground.functiontodoanimation.DrawinganobjectontopofitselfwithXORerasesandrestoresthebackground.
![Page 654: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/654.jpg)
picMerge ThisdrawsthepicturelikepicCopyexceptthatanyoccurrenceofthebackgroundcolorinthepictureisnotdrawntothescreen.Thisallowsyouirregularly-shapedobjectanddrawittothescreen.
picUnderMerge Thisdrawsthepicture,butonlywherethebackgroundunderneathit.Theeffectofthisistomakethepictureappeartobedisplayedbehindthebackground.
SeePic.DrawSpecialforthelistofpossiblevaluesforthetransition
Details
ThePic.DrawSpecialBackrequiresamoderatelyfastmachinetooperatesuccessfully(PentiumIIIorhigher).ThepicFadeInandpicBlendtransitionsdonotworkwellon8-bit(256color)MicrosoftWindowsmachines,youcandeterminethebit-depthofthedisplay(thenumberofcolorsavailable)byselectingtheDisplaycontrolpanelfromtheStartmenu.
Config.Display(cdNumMaxColors)
functiontodeterminethebit-depthofthedisplay(anythingover256colorswillproduceacceptableresults).
DetailsIfthePic.DrawSpecialBackcallfails,Error.Lastwillreturnanon-zerovalueindicatingthereasonforthefailure.Error.LastMsgwillreturnastringwhichcontainsthetextual
Example
Theprogramdrawsabluestaronthescreen,thenaredcircle,thenreplaceeachsimultaneously,side-by-side.
varredID,blueID:int
Draw.FillStar(0,0,100,100,brightred)
redID:=Pic.New(0,0,100,100)
cls
Draw.FillOval(50,50,50,50,brightblue)
blueID:=Pic.New(0,0,100,100)
cls
Pic.DrawSpecialBack(redID,10,10,picCopy,picWipeLeftToRightNoBar
Pic.DrawSpecial(blueID,160,10,picCopy,picWipeRightToLeftNoBar
Pic.DrawSpecialBack(blueID,10,10,picCopy,picSlideLeftToRightNoBar
Pic.DrawSpecial(redID,160,10,picCopy,picSlideRightToLeftNoBar
Pic.DrawSpecialBack(redID,10,10,picCopy,picGrowRightToLeftNoBar
Pic.DrawSpecial(blueID,160,10,picCopy,picGrowLeftToRightNoBar
Pic.DrawSpecialBack(blueID,10,10,picCopy,picWipeTopToBottomNoBar
Pic.DrawSpecial(redID,160,10,picCopy,picWipeTopToBottomNoBar
Pic.DrawSpecialBack(redID,10,10,picCopy,picFadeIn
Pic.DrawSpecial(blueID,160,10,picCopy,picFadeIn
Pic.Free(redID)
![Page 655: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/655.jpg)
Pic.Free(blueID)
Execute
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingPic.DrawSpecialBackDrawSpecialBack.
Seealso
Pic.Drawforinformationonthemeaningofthemodeargument.
Pic.DrawSpecialforinformationonhowtodrawspecialeffectsandwaitforcompletioneffect.
![Page 656: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/656.jpg)
Pic.FileNew PartofPicmodule
Syntax Pic.FileNew(fileName:string):int
Description
Pic.FileNewisusedtoobtainapicturefromafile.ThePic.FileNewprocedureallocatesthememoryforthepicture,whichcanbeverylargeforpicturesoflargeareas.ThememoryisfreedupwhentheprogramcallsPic.FreewiththepictureID.ThepicturecanbeusedwiththePic.DrawandPic.Save.
ThefileNameparametermustgivetheformatofthefile:
GIFfiles "GIF:filename"or"filename.GIF" JPGfiles "JPG:filename"or"filename.JPG" BMPfiles "BMP:filename"or"filename.BMP"
DetailsVariousversionsofTuringcanconvertdifferentformatsoffiles.Turing4.1forWindowscanloadBMP,GIFandJPGfiles.
Details
For,multi-frameGIFfiles(GIFfilesthathaveseveralframesorpicturesandareusedforanimation),Pic.FileNewwillonlyloadthefirstframe.SeethePic.FileNewFramesandPic.Frameforinformationonloadinganddisplayingamulti-frameGIFfile.
Details
IfthePic.FileNewcallfails,thenitreturns0.AlsoError.Lastwillreturnanon-zerovalueindicatingthereasonforthefailure.Error.LastMsgwillreturnastringwhichcontainsthetextualversionoftheerror.
Example
Theprogramreadsagraphicfromthefilemypic.bmpandthendrawsit50times.
varpicID:int
varx,y:int
picID:=Pic.FileNew("mypic.bmp")
fori:1..50
x:=Rand.Int(0,maxx)%Randomx
y:=Rand.Int(0,maxy)%Randomy
Pic.Draw(picID,x,y,picCopy)
![Page 657: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/657.jpg)
endfor
Pic.Free(picID)
Execute
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingPic.FileNew,notbycallingFileNew.
![Page 658: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/658.jpg)
Pic.FileNewFrames PartofPicmodule
SyntaxPic.FileNewFrames(pathName:string,varpicIDs:arrayint,vardelayTime:int)
Description Pic.FileNewFramesloadsmultiplepicturesstoredinasinglemultiframeGIFimagefileintoanarrayofintegers.
Details
GIFfilescancontainmultipleframes(pictures).AnimatedGIFsfunctionbydisplayingeachframeintheGIFoneafteranotherwithadelaybetweenthem.ThisdelaycanalsobespecifiedintheGIFfile.
Pic.FileNewFramesreadstheseriesofframesfromthemultiframeGIFfile,andturnseachframeintoapicture.ThepictureisthenassignedtoanelementinthepicIDsarray.Ifthearrayisnotlargeenough,thenanerroroccursandnoareloaded.
Pic.FileNewFramesalsoreadsthedelayspecifiedintheGIFfileandsetsdelayTimetothedelayinmilliseconds.NotethatmanymultipleframeGIFfilesdonotspecifyadelay,inwhichcasedelayTimewillbesetto0.
InordertodeterminethenumberofframesinmultipleframeGIFfile,youmustusethePic.Framesfunction.ThisreturnsanumberthatcanbeusedtodeclarethearraythatwillbepassedtoPic.FileNewFrames.
varnumFrames=Pic.Frames("mypic.gif")
varpics:array1..numFramesofint
vardelayTime:int
Pic.FileNewFrames("mypic.gif",pics,delayTime)
TheframescanbesequentiallydisplayedusingeitherPic.DrawFramesPic.DrawFramesBackwhichdisplaytheimagesoneatatime.(Pic.DrawFramesreturnsoncealltheimageshavebeendisplayed,Pic.DrawFramesBackreturnsimmediatelyallowingtheprogramtocontinueexecutionwhiletheframesarebeingdisplayed.
Details
GIFfilescanhaveatransparentcolor.Thiscolorwillbeaddedtothecolorpalette,ifnotalreadypresent.ThusyoumaynoticethatmaxcolorchangesaftercallingPic.FileNeworPic.FileNewFrames.TheGIFimagewillbebedisplayedwithoutthetransparentcolorifmodeparameterinanyofthePic.Draw...
![Page 659: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/659.jpg)
proceduresissettopicMerge.
Details
Eachpictureisinthearrayhasbeenallocatedbythesystemandshouldbefreedseparatelyoncetheprogramisfinishedwiththepictures.Failingtodosocanuseupthesystem'smemory.
Example
TheprogramloadsamultipleframeGIFcalled"globe.gif"anddisplaysit.
%Determinethenumberofframesin"globe.gif"
%Createtheoriginalpicture
varnumFrames:=Pic.Frames("globe.gif")
%Loadthepicture
vardelayTime:int
varpics:array1..numFramesofint
Pic.FileNewFrames("globe.gif",pics,delayTime)
Pic.DrawFrames(pics,10,10,picCopy,numFrames
Execute
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingPic.FileNewFramesnotbycallingFileNewFrames.
Seealso
Pic.FramesforinformationonhowtodeterminethenumberofframesinaGIFimage.
Pic.DrawFramesforinformationonhowtosequentiallydisplaytheimagesstoredinarrayofpictures.
Pic.DrawFramesBackforinformationonhowtosequentiallydisplaytheimagesstoredinarrayofpictureswhilecontinuingtoexecutetheprogram.
![Page 660: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/660.jpg)
Pic.Flip PartofPicmodule
Syntax Pic.Flip(picID:int):int
Description
Pic.Flipisusedtocreateanewpicturebyflippingthepicturevertically.Theresultingpictureisexactlythesamesizeastheoriginal,exceptitappears“upside-down”.
DetailsNotethattheupside-downpictureisanewlycreatedpicture.Whenlongerneeded,itsmemoryshouldbereleasedbyusingPic.Free.
Example
Theprogramloadsapicturefromafile,flipsitandthendrawstheoriginalandtheupside-downimagesidebysideinawindowafterresizingthewindowtofitthetwopictures.
%Gettheoriginalpicture
varpic,newPic,width,height:int
pic:=Pic.FileNew("lighthouse.jpg")
newPic:=Pic.Flip(pic)
width:=Pic.Width(pic)
height:=Pic.Height(pic)
%Drawthetwoimages:originalandflipped
View.Set("graphics:"+intstr(2*width+30)+";"+
intstr(height+25)+",nobuttonbar")
Pic.Draw(pic,10,20,picCopy)
Draw.Text("Original",50,5,defFontID,black)
Pic.Draw(newPic,20+Pic.Width(pic),20,picCopy
Draw.Text("Flipped",60+Pic.Width(pic),5,defFontID
OutputfromtheProgram
![Page 661: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/661.jpg)
Execute
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingPic.Flip,notbycallingFlip.
![Page 662: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/662.jpg)
Pic.Frames PartofPicmodule
Syntax Pic.Frames(pathName:string):int
DescriptionPic.FramesisusedtodeterminethenumberofframesfoundinamultipleframeGIFfile.
Details
GIFfilescancontainmultipleframes(pictures).AnimatedGIFsfunctionbyeachframeintheGIFoneafteranotherwithadelaybetweenthem.
TuringallowsuserstoloadmultipleframeGIFimagesintoaseriesintoanarrayusingthePic.FileNewFramesprocedure.TheusercandeterminehowmanyframesarefoundintheGIFfileusingPic.Frames.TheframescanbesequentiallydisplayedusingeitherPic.DrawFramesorPic.DrawFramesBackwhichdisplaytheimagesoneatatime.(Pic.DrawFramesreturnsimageshavebeendisplayed,Pic.DrawFramesBackreturnsimmediatelyallowingtheprogramtocontinueexecutionwhiletheframesarebeingdisplayed.
Pic.FramesisafunctionwhichreturnsthenumberofframesfoundintheGIF.itisusedonaGIFthatdoesnotcontainmultipleimages,oronanon-GIFimagefile,itreturns1.
Example
TheprogramloadsamultipleframeGIFcalled"globe.gif"anddisplaysit.
%Determinethenumberofframesin"globe.gif"
varnumFrames:=Pic.Frames("globe.gif")
%Loadthepicture
vardelayTime:int
varpics:array1..numFramesofint
Pic.FileNewFrames("globe.gif",pics,delayTime)
Pic.DrawFrames(pics,10,10,picCopy,numFrames
Execute
![Page 663: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/663.jpg)
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingPic.FramescallingFrames.
Seealso
Pic.FileNewFramesforinformationonhowtoloadaGIFimagewithmultipleframesintoanarrayofints.
Pic.DrawFramesforinformationonhowtosequentiallydisplaytheimagesstoredinarrayofpictures.
Pic.DrawFramesBackforinformationonhowtosequentiallydisplaytheimagesstoredinarrayofpictureswhilecontinuingtoexecutetheprogram.
![Page 664: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/664.jpg)
Pic.Free PartofPicmodule
Syntax Pic.Free(picID:int)
Description
Pic.FreeisusedtoreleasethememoryallocatedbyPic.New.ItfreesupthememoryallocatedtotheparameterpicID.ThismeansthatpicIDcannotbeusedinaorDraw.SaveprocedureafterPic.Freeiscalled.
Turinghasalimitednumberofpicturesthatareavailableatanyonetime(approximately1,000).Aprogramthatcontinuouslyallocatespictures(usingorPic.FileNew)willeventuallyfailifitdoesnotfreethepicturesusingwell,ifaprogramallocateshundredsofpicturesanddoesnotfreeanyofthem,thememorydevotedtothepictureswillnotbefreedandeventuallytheprogrammayexhaustthememoryonthemachine.
Details
IfPic.FreeispassedaninvalidpictureID,afatalerroroccurs.Iftheforother(non-fatal)reasons,Error.Lastwillreturnanon-zerovalueindicatingreasonforthefailure.Error.LastMsgwillreturnastringwhichcontainsthetextualversionoftheerror.
Theprogramanimatesapicturemovingacrossabackground.Eachabouttomovetoanewlocation,apictureofthebackgroundatthatlocationistaken.Whenthepictureistobemovedtothenextlocation,thebackgroundpictureisdrawnovertopofthepicture,thus"erasing"it.ThePic.Freecommandfreesbackgroundpictureonceitisnolongerinuse.Withoutit,theprogramwoulduseupallthepictureidentifiersandcrashafteroneortwomovesacrossthewindow.
Theanimationintheexampleflickersslightly.SeeView.Updateforinformationontoproduceflicker-freeanimation.
varpicID,bgID:int
varx,y,c,direction:int
%Createthepicturebeingmoved
Draw.FillBox(50,50,150,150,brightred)
Draw.FillStar(50,50,150,150,brightgreen)
Draw.FillOval(100,100,30,30,brightblue)
picID:=Pic.New(50,50,150,150)
%Createabackground
![Page 665: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/665.jpg)
Example fori:1..1000
x:=Rand.Int(0,maxx)
y:=Rand.Int(0,maxy)
c:=Rand.Int(9,15)%Usebrightcolors
Draw.FillBox(x,y,x+30,y+30,c)
endfor
x:=1
y:=100
direction:=1
%Mainloop
loop
%Takeapictureofthebackground
bgID:=Pic.New(x,y,x+100,y+100)
Pic.Draw(picID,x,y,picCopy)%Drawthepicture
delay(20)%Delay20milliseconds
Pic.Draw(bgID,x,y,picCopy)%Drawthebackgroundoverthepicture
Pic.Free(bgID)%Freethebackground
ifx<=0or(x+100)>=maxxthen
direction:=-direction
endif
x+=direction
endloop
Execute
StatusExportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingPic.Free,notbycalling
![Page 666: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/666.jpg)
Pic.Height PartofPicmodule
Syntax Pic.Height(picID:int):int
Description
Pic.HeightreturnsthewidthinpixelsofthepicturerepresentedbypicID.
ThisfunctionisoftenusedinconjunctionwithPic.WidthtoobtainthedimensionsofapictureloadedusingPic.FileNew.
Example
Theprogramdrawsloadsapicturefromthefilelighthouse.jpgandproceedstotiletheentirerunwindowwithcopiesofthepicture.
varpic:int:=Pic.FileNew("lighthouse.jpg")
varwidth:int:=Pic.Width(pic)
varheight:int:=Pic.Height(pic)
varx,y:int:=0
loop
exitwheny>maxy
loop
exitwhenx>maxx
Pic.Draw(pic,x,y,picCopy)
x:=x+width
endloop
x:=0
y:=y+height
endloop
![Page 667: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/667.jpg)
OutputofExampleProgram
Execute
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingPic.Height,notbycallingHeight.
SeealsoPic.Widthtoobtainapicture'swidthandPic.FileNewtoloadapicturefromagraphicsfile.
![Page 668: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/668.jpg)
Pic.Mirror PartofPicmodule
Syntax Pic.Mirror(picID:int):int
Description
Pic.Mirrorisusedtocreateanewpicturebyflippingthepicturehorizontally.Theresultingpictureisexactlythesamesizeastheoriginal,exceptitappearsasa“mirrorimage”.
Details
Notethatthemirror-imagedpictureisanewlycreatedpicture.Whenitisnolongerneeded,itsmemoryshouldbereleasedbyusingPic.Free.
Example
Theprogramdrawsacrescentonthescreen,takesapictureofitandthencreatesasecondpicturebymirror-imagingthecrescent.Itthendrawsboththeoriginalpictureandthemirror-imagedversion.
View.Set("graphics:210;125,nobuttonbar")
%Gettheoriginalpicture
varpic,newPic:int
Draw.FillOval(50,50,50,50,brightred)
Draw.FillOval(70,50,50,50,colorbg)
Draw.Text("BLUE",40,60,defFontID,brightblue
Draw.Text("MOON",40,40,defFontID,brightblue
pic:=Pic.New(0,0,100,100)
newPic:=Pic.Mirror(pic)
cls
%Drawthetwoimages:originalandflipped
Pic.Draw(pic,10,20,picCopy)
Draw.Text("Original",10,5,defFontID,black)
Pic.Draw(newPic,110,20,picCopy)
Draw.Text("Flipped",140,5,defFontID,black)
![Page 669: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/669.jpg)
OutputfromtheProgram
Execute
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingPic.Mirror,notbycallingMirror.
![Page 670: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/670.jpg)
Pic.New PartofPicmodule
Syntax Pic.New(x1,y1,x2,y2:int):int
Description
Pic.Newisusedtoobtainapictureofaportionofthescreen.ThePic.Newprocedureallocatesthememoryforthepicture,whichcanbeverylargeforpicturesoflargeareas.ThememoryisfreedupwhentheprogramcallsPic.FreewiththepictureID.ThepicturecanbeusedwiththePic.DrawandPic.Save.
Thepictureisofthescreenareadefinedbytherectangle(x1,y1)-(x2,y2).
Details
IfthePic.Newcallfails,thenitreturns0.AlsoError.Lastwillreturnanon-zerovalueindicatingthereasonforthefailure.Error.LastMsgwillreturnastringwhichcontainsthetextualversionoftheerror.
Example
Theprogramdrawsagraphiconthescreenandthendrawsit50times.
varpicID:int
varx,y:int
Draw.FillBox(50,50,150,150,red)
Draw.FillStar(50,50,150,150,green)
Draw.FillOval(100,100,30,30,blue)
picID:=Pic.New(50,50,150,150)
fori:1..50
x:=Rand.Int(0,maxx)%Randomx
y:=Rand.Int(0,maxy)%Randomy
Pic.Draw(picID,x,y,picCopy)
endfor
Pic.Free(picID)
![Page 671: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/671.jpg)
Execute
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingPic.New,notbycallingNew.
![Page 672: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/672.jpg)
Pic.Rotate PartofPicmodule
Syntax Pic.Rotate(picID,angle,x,y:int):int
Description
Pic.Rotateisusedtocreateanewpicturebyrotatinganalreadyexistingpicture.Rotationcaneitherbearoundaspecificpointinthepicture(oftenusedforrotatingapicureinplace)orjustageneralrotation.
Theangleisspecifiedindegrees.Therotationisdoneinacounter-clockwisedirection.TheoriginalpictureisnotmodifiedbythecalltoPic.Rotateandmuststillbefreedwhennolongerused.ThepictureproducedbyPic.Rotatemaybeadifferentsizethantheoriginalpicture.
The(x,y)pointisthepointaroundwhichtherotationistotakeplaceandisrelativetothepicturebeingrotated.Ifitisnotimportanttorotatethepictureinplace,xandyshouldbesetto-1,whichmakethenewpicturetheminimumsizerequiredtofittherotatedimage.
Details
ThePic.Rotatecommandcanfail,inwhichcaseitreturns0.TheError.LastMsgfunctioncanthenbeusedtoobtainmoreinformationaboutthefailure.
Details
Ifxandyaresettoapointinthepicture(ratherthan1),itispossibleforpartsoftheoriginalpicturetoberotatedofftheleftandbottomedgeofthenewpicture.ThisoccursbecausePic.Rotateguaranteesthatthepointspecifiedby(x,y)intheoriginalpicturewillbelocatedat(x,y)intherotatedpicture.Youcanavoidlosingpartsofthepicturebymakingcertainthereisamarginofbackgroundcolorontheleftandbottomsidesofthepicture.
![Page 673: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/673.jpg)
Aswell,anypixelsintherotatedpicturethatwerenotpartoftheoriginalpicturearesettothebackgroundcolor.
Details
Rotationcanbeslowonoldermachines.Programsthatareusinganimationshouldcreateandstorealltherotatedimagesthatmaybeneeded.Oftenpicturesofanobjectatvariousanglesarestoredinanarray.
Example
Thisprogramdraws“Hello”onthescreenrotatedat0,45and90degrees.
View.Set("graphics:200;150,nobuttonbar")
varf:int:=Font.New("Serif:36")
Font.Draw("Hello",10,10,f,black)
varpic:int:=Pic.New(5,5,120,45)
varpic45:int:=Pic.Rotate(pic,45,-1,-1)
varpic90:int:=Pic.Rotate(pic,90,-1,-1)
Pic.Draw(pic45,5,50,picCopy)
Pic.Draw(pic90,150,5,picCopy)
OutputfromProgram
![Page 674: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/674.jpg)
Execute
Example
Thisprogrammovesaspinning“Hello”aroundthescreen,bouncingitofftheedgesoftheoutputwindow.Noticethattheoriginalpicturecontainsadequatespaceontheleftandbottomsidestocontaintherotation.
View.Set("graphics:300;250,nobuttonbar")
varpic:array0..35ofint
varf:int:=Font.New("Serif:36")
constCTR:int:=57
Font.Draw("Hello",5,45,f,black)
Draw.FillOval(CTR,CTR,3,3,brightred)
pic(0):=Pic.New(0,0,115,115)
cls
forangle:1..35
pic(angle):=Pic.Rotate(pic(0),angle*10,
endfor
varx:int:=CTR
vary:int:=CTR
vardx:int:=1
vardy:int:=1
loop
forangle:0..35
Pic.Draw(pic(angle),x-CTR,y-CTR
ifx+dx<CTRorx+dx>maxx-CTRthen
dx:=dx
endif
ify+dy<CTRory+dy>maxy-CTRthen
dy:=dy
endif
x+=dx
y+=dy
delay(50)
endfor
endloop
![Page 675: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/675.jpg)
Execute
DetailsNotethattherotatedpictureisanewlycreatedpicture.Whenitisnolongerneeded,itsmemoryshouldbereleasedbyusingPic.Free
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingPic.Rotate,notbycallingRotate.
![Page 676: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/676.jpg)
Pic.Save PartofPicmodule
Syntax Pic.Save(picID:int,fileName:string)
Description
Pic.Saveisusedtosaveapictureonthescreentoafile.
ThefileNameparametermustgivetheformatofthefile:
BMPfiles "BMP:filename"or"filename.BMP"
Details
VariousversionsofTuringcansavedifferentformatsoffiles.Turing4.1forWindowscansaveonlyBMPformatfiles,astheyareloss-lessandcanhandle24-bitdepthimages.
Details
IfPic.SaveispassedaninvalidpictureID,afatalerroroccurs.Ifthecallfailsforother(non-fatal)reasons,Error.Lastwillreturnanon-zerovalueindicatingthereasonforthefailure.Error.LastMsgwillreturnastringwhichcontainsthetextualversionoftheerror.
Example
TheprogramdrawsagraphiconthescreenandthensavesitasaBMPfile.
varpicID:int
varx,y:int
Draw.FillBox(50,50,150,150,red)
Draw.FillStar(50,50,150,150,green)
Draw.FillOval(100,100,50,50,blue)
picID:=Pic.New(50,50,150,150)
Pic.Save(picID,"BMP:mypic.dat")
Pic.Free(picID)
ThefollowingtwoprogramssaveandloadafileinBMPformat.
%Programtosaveapictureinmypic.bmp
varpicID:int
varx,y:int
Draw.FillBox(50,50,150,150,red)
Draw.FillStar(50,50,150,150,green)
Draw.FillOval(100,100,50,50,blue)
picID:=Pic.New(50,50,150,150)
Pic.Save(picID,"mypic.bmp")
Pic.Free(picID)
![Page 677: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/677.jpg)
Example %Programtoloadthepicturebackagainanddraw50copies
varpicID:int
varx,y:int
picID:=Pic.FileNew("mypic.bmp")
fori:1..50
x:=Rand.Int(0,maxx)%Randomx
y:=Rand.Int(0,maxy)%Randomy
Pic.Draw(picID,x,y,picCopy)
endfor
Pic.Free(picID)
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingPic.Save,notbycallingSave.
![Page 678: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/678.jpg)
Pic.Scale PartofPicmodule
Syntax Pic.Scale(picID,newWidth,newHeight:int):int
Description
Pic.Scaleisusedtocreateanewpicturebyscaling(resizing)analreadyexistingpicture.Rotationcaneitherbearoundaspecificpointinthepicture(oftenusedforrotatingapicureinplace)orjustageneralrotation.
ThenewWidthandnewHeightparametersarethedesiredwidthandheightofthenewpicture.ThenewWidthandnewHeightparametersmaybenegative,inwhichcasepictureismirrorimage(newWidthisnegative)orupside-down(newHeightnegative)andtheabsolutevaluesareusedforthenewwidthandheightvalues.
DetailsThePic.Scalecommandcanfail,inwhichcaseitreturns0.TheError.LastMsgfunctioncanthenbeusedtoobtainmoreinformationaboutthefailure.
Details
Creatingalargerpicturebyscalingasmallerpicturewillresultina"grainy"imagewitheachpixelbeingscaledupinto2or3pixels.Ingeneralimagequalityalargepictureisscaleddown.However,whenalargepictureisscaleddown,thinone-pixelwidelinescan"disappear".
Inordertoscaleapicturewhileretainingitsoriginalaspectratio,scalewithmultiplesoftheoriginalwidthandheight.ThewidthandheightofapicturecanbeobtainedusingPic.WidthandPic.Height.
Details
Scalingcanbeslowonoldermachines.Programsthatareusinganimationshouldcreateandstoreallthescaledimagesthatmaybeneeded.Oftenpicturesofanobjectatvarioussizesarestoredinanarray.
DetailsNotethatthescaledpictureisanewlycreatedpicture.Whenitisnolongerneeded,itsmemoryshouldbereleasedbyusingPic.Free.
Thisprogramdrawsasetofstarsscaledat50%,100%and150%onNotehowsomesingle-pixellinesareremovedwhenthepictureisscaleddown..
%The"Pic.ScaleExample"program.
constSTAR_SIZE:int:=70
varpic:int
![Page 679: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/679.jpg)
Example
varnewPic:int
varpicWidth,picHeight:int
%Gettheoriginalpicture
Draw.FillStar(0,0,STAR_SIZE,STAR_SIZE,brightred
Draw.Box(0,0,STAR_SIZE,STAR_SIZE,green)
pic:=Pic.New(0,0,STAR_SIZE,STAR_SIZE)
cls
picWidth:=Pic.Width(pic)
picHeight:=Pic.Height(pic)
forx:1..3
fory:1..3
newPic:=Pic.Scale(pic,x*picWidthdiv
y*picHeightdiv2)
Pic.Draw(newPic,(x-1)*maxxdiv3+5,
(y-1)*maxydiv3+20,picCopy)
Pic.Free(newPic)
Draw.Text(realstr(x/2,0)+"x"+
(x-1)*maxxdiv3+5,(y
defFontID,black)
endfor
endfor
OutputfromProgram
![Page 680: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/680.jpg)
Execute
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingPic.ScaleScale.
![Page 681: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/681.jpg)
Pic.ScreenLoad PartofPicmodule
Syntax Pic.ScreenLoad(fileName:string,x,y,mode:int)
Description
Pic.ScreenLoaddisplaysapicturefromafilestraighttothescreen.
ThefileNameparametermustgivetheformatofthefile:
JPGfiles "JPG:filename"or"filename.JPG" BMPfiles "BMP:filename"or"filename.BMP"
Thexandyparameterssetthelowerlefthandcornerofthepicture.
Themodeparameterhasoneofthefollowingvalues:
picCopy Thisdrawsthepictureontopofwhatwasunderneath,obscuringitcompletely.
picXOR
ThisdrawsthepictureXORingitwiththebackground.InDOS,youcanusethisfunctiontodoanimation.DrawinganobjectontopofitselfwithXORerasesitandrestoresthebackground.
picMerge
ThisdrawsthepicturelikepicCopyexceptthatanyoccurrenceofthebackgroundcolorinthepictureisnotdrawntothescreen.Thisallowsyoutodrawanirregularly-shapedobjectanddrawittothescreen.
picUnderMerge
Thisdrawsthepicture,butonlywherethebackgroundcolorwasdisplayedunderneathit.Theeffectofthisistomakethepictureappeartobedisplayedbehindthebackground.
VariousversionsofTuringcanconvertdifferentformatsoffiles.Turing4.1forWindowscanloadBMPfilesandJPGfiles.Unfortunately,duetostrictlyenforcedpatentsontheGIF
![Page 682: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/682.jpg)
Details compressionalgorithm,TuringwillnotimplementimportationofGIFpicturesuntilthepatentsexpireinJune2004.
Details
Atthetimeofwriting,MacOOTsupportedonlyPICTfiles.Consultthereleasenotestofindoutwhichfileformatsarecurrentlysupported.
Details
IfthePic.ScreenLoadfails,thenError.Lastwillreturnanon-zerovalueindicatingthereasonforthefailure.Error.LastMsgwillreturnastringwhichcontainsthetextualversionoftheerror.
Example
TheprogramdisplaysapictureonthescreenfromthePCXfilemypic.BMP.
Pic.ScreenLoad("mypic.bmp",0,0,picCopy)
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingPic.ScreenLoad,notbycallingScreenLoad.
![Page 683: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/683.jpg)
Pic.ScreenSave PartofPicmodule
Syntax Pic.ScreenSave(x1,y1,x2,y2:int,fileName:string)
Description
Pic.ScreenSavesavesaportionofthescreenintoafileinaformatspecifiedbythefilename.
Thepicturesavedtothefileistheportionofthescreendefinedbytherectangle(x1,y1)-(x2,y2).
ThefileNameparametermustgivetheformatofthefile:
BMPfiles "BMP:filename"or"filename.BMP"
Details
VariousversionsofTuringcansavedifferentformatsoffiles.Turing4.1forWindowscansaveBMP.Unfortunately,duetostrictlyenforcedpatentsontheGIFcompressionalgorithm,TuringwillnotimplementsavingofGIFpicturesuntilthepatentsexpireinJune2004.
Details
IfthePic.ScreenSavefails,thenError.Lastwillreturnanon-zerovalueindicatingthereasonforthefailure.Error.LastMsgwillreturnastringwhichcontainsthetextualversionoftheerror.
Example
TheprogramdrawsagraphicandsavesitasaPICTfilecalleddraw.
Draw.FillBox(50,50,150,150,red)
Draw.FillStar(50,50,150,150,green)
Draw.FillOval(100,100,50,50,blue)
picID:=Pic.ScreenSave(50,50,150,150,"PICT:draw")
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingPic.ScreenSave,notbycallingScreenSave.
![Page 684: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/684.jpg)
Pic.SetTransparentColor PartofPicmodule
Syntax Pic.SetTransparentColor(colorNumber:int)
Description
ThePic.SetTransparentColorproceduresetsthecolorinthepicturethatshouldbeconsideredtransparentwhenthepictureisdrawnusingthepicMergeorpicUnderMergemodes.Ifnocolorisspecified,thenthedefaultbackgroundcolor(colorbg,usuallywhite)isusedasthetransparentcolor.
Details
ThiscallisoftenusedwhendisplayingimagesthatwereoriginallystoredasGIFsandtranslatedintoanotherformat.ManyGIFshaveatransparentcolorthatcanbenon-white.Tousethiscall,youmustknowthecolornumberthatrepresentsthecolorintheimagethatistobetransparent.
Example
Thisprogramdisplaystwoimagesloadedfromthesamefile.Inthesecondimage,thetransparentcolorhasbeensettobrightred(thatis,thepartsoftheimagethataremeanttobetransparentareinbrightred).
varpic1:int:=Pic.FileNew("airplane.bmp")
varpic2:int:=Pic.FileNew("airplane.bmp")
Pic.SetTransparentColor(pic2,brightred)
setscreen("offscreenonly")
forx:100..maxx-100
cls
put"Thelowerimagehasthetransparentcolorsettobrightred"
Pic.Draw(pic1,x,150,picMerge)
Pic.Draw(pic2,x,50,picMerge)
View.Update
delay(5)
endfor
Execute
Pic.SetTransparentColourisanalternatespellingfor
![Page 685: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/685.jpg)
Details Pic.SetTransparentColor.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingPic.SetTransparentColor,notbycallingSetTransparentColor.
Seealso Pic.DrawandPic.FileNew.
![Page 686: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/686.jpg)
Pic.Width PartofPicmodule
Syntax Pic.Width(picID:int):int
Description
Pic.WidthreturnsthewidthinpixelsofthepicturerepresentedbypicID.
ThisfunctionisoftenusedinconjunctionwithPic.HeighttoobtainthedimensionsofapictureloadedusingPic.FileNew.
Example
Theprogramdrawsloadsapicturefromthefilelighthouse.jpgandproceedstotiletheentirerunwindowwithcopiesofthepicture..
varpic:int:=Pic.FileNew("lighthouse.jpg")
varwidth:int:=Pic.Width(pic)
varheight:int:=Pic.Height(pic)
varx,y:int:=0
loop
exitwheny>maxy
loop
exitwhenx>maxx
Pic.Draw(pic,x,y,picCopy)
x:=x+width
endloop
x:=0
y:=y+height
endloop
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingPic.Width,notbycallingWidth.
SeealsoPic.Heighttoobtainapicture'sheightandPic.FileNewtoloadapicturefromagraphicsfile.
![Page 687: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/687.jpg)
play procedure
Syntax play(music:string)
DescriptionTheplayprocedureisusedtosoundmusicalnotesonthecomputer.
ExampleThisprogramsoundsthefirstthreenotesoftheCscale.
play("cde")
Example
ThisprogramplaysfrommiddleCtooneoctaveabovemiddleCanddownagainin8thnotes.
play("8cdefgab>c")
play("<bagfedc")
Details
Theplayproceduretakesstringscontainingcharactersthatspecifynotes,rests,sharps,flatsandduration.Thenotesarethelettersatog(orAtoG).Arestisp(forpause).Asharpis+andaflatis-.Thedurationsare1(wholenote),2(halfnote),4(quarternote),8(eightnote)and6(sixteenthnote).Thecharacter>raisestothenextoctaveand<lowers.Forexample,thisisthewaytoplayCandthenCsharponeoctaveabovemiddleCwitharestbetweenthem,allinsixteenthnotes:play(">6cpc+").Blankscanbeusedforreadabilityandareignoredbyplay.
UndersomesystemssuchasUNIX,theplayproceduremayhavenoeffect.
Thecurrent(1999)implementationdoesnotsupportplay.
Seealso
theplaydonefunction,whichisusedtoseeifanotehasfinishedsounding.Seealsothesoundprocedure,whichmakesasoundofagivenfrequency(Hertz)andduration(milliseconds).
SeealsopredefinedunitMusic.
![Page 688: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/688.jpg)
playdone function
Syntax playdone:boolean
DescriptionTheplaydonefunctionisusedtodeterminewhennotesplayedbytheplayprocedurehavefinishedsounding.
Example
ThisprogramsoundsthefirstthreenotesoftheCscaleandoutputs"Alldone"assoonastheyarefinished.Withouttheloop,themessagewouldcomeoutbeforethenotesarefinished.
play("cde")
loop
exitwhenplaydone
endloop
put"Alldone"
DetailsUndersomesystemssuchasUNIX,theplaydoneproceduremaybemeaningless.
Seealso
theplayprocedure.Seealsothesoundprocedurewhichmakesasoundofagivenfrequency(Hertz)andduration(milliseconds).
SeealsopredefinedunitMusic.
![Page 689: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/689.jpg)
pointer type
Syntax ApointerTypeisoneof:
(a) [unchecked]pointertocollectionId %Shortform:^collectionId (b) [unchecked]pointertoclassId %Shortform:^classId (c) [unchecked]pointertotypeSpec %Shortform:^typeSpec
Description
Avariabledeclaredasapointertypeisusedtolocateanelementofacollectionorclassoravalueofatype.Thenewstatementcreatesanewelement(orvalue)andplacestheelement'slocationinapointervariable.Thefreestatementdestroysanelementlocatedbyapointervariable.
Example
Usingacollection,declarealistorrecordsandallocateonerecord.
varlist:collectionof
record
contents:string(10)
next:pointertolist
endrecord
varfirst:pointertolist
newlist,first
Example
Createacollectionthatwillrepresentabinarytree.
vartree:collectionof
record
name:string(10)
left,right:pointertotree
endrecord
varroot:pointertotree
newtree,root
tree(root).name:="Adam"
Usingaclass,createanobjectofthatclass.Theobjectislocatedbythe
![Page 690: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/690.jpg)
Example
startpointer.ThenamefieldoftheobjectissettoEd.
classnode
exportvarnext,varname
name:string(25)
next:pointertonode%Shortform:next:^node
endnode
varstart:pointertonode%Shortform:varstart:^node
newnode,start%Shortform:newstart
node(start).name:="Ed"%Shortform:start->name:=
Forcollectionsandclasses,apointeriseffectivelyasubscript(anindex)forthatcollectionorclass.Pointerscanbeassigned,comparedforequalityandpassedasparameters.
Thekeywordspointertocanbereplacedbytheshortform^,asin
varfirst:^item
GivenapointerpthatlocatesanobjectofclassorcollectionC,theobjectisreferencedasC(p)orastheshortform^p.AfieldfoftheobjectisreferencedasC(p).for^p.forastheshortformp->f.Forexample,intheclassgivenabove,thenamefieldoftheobjectlocatedbythestartcanbesettoAliceby:
start->name:="Alice"
Pointerstotypesusethesamenotation,exceptthatpointerstotypesarenotallowedtousetheformtypeSpec(p).Seeclassforanexampleoftheuseofaclasswithpointers.
Thecarat^iscalledthedereferencingoperatorandhasthehighestprecedence.Forexample,in^p.a,thecaratappliestopandnottoapply^toallofp.a,useparentheses:^(p.a).Severalcaratscanappearinarow,forexample,
varr:^^int
declaresapointertoapointertoanintegerand^^risthenotationforreferencingtheinteger.
Areferencecannotbeginwithaleftparenthesis,butcanbesurroundedby^(…),asin^(q.b).Iffisaparameterlessfunctiondeclaredwithout
![Page 691: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/691.jpg)
Details parenthesesthatreturnsapointer,theform^fcallsfbeforedereferencingthepointer.
Bydefault,allpointersarechecked.ThismeansthereisaruntimetesttomakesurethatreferencessuchasC(p)actuallylocateelements,i.e.,thatisinitialized,isnotnilandisnotdangling(locatinganobjectthathasbeenfreed).Thischeckingrequiresextraspace(theimplementationattachesatimestamptoeachpointerandobject)andtime.Inhigh-performanceprogramsinwhichthisextraspaceandtimearenotacceptable,thepointercanbedeclaredtobeunchecked.Whenthisisdone,theprogrambecomesdangerousanditistheprogrammer'sresponsibilitytomakesurethatallpointerusageisvalid.
Ifthisisnotthecase,theprogrambecomessusceptibletouncontrolledcrashes.
Checkedpointerscannotbeassignedtouncheckedpointersnorviceversa.However,youmay,atyourperil,useanimplementation-dependentcheat,toconvertacheckedpointertoauncheckedpointer,asin:
typecheckedPtr:^R
typeuncheckedPtr:unchecked^R
varc:checkedPtr%cisancheckedpointer
varu:uncheckedPtr%uisanunchecked
…
u:=cheat(uncheckedPtr,d)%Thisisatype
UncheckedpointersareequivalenttothepointersoftheClanguage,whichareinherentlyerrorproneandcausedifficulttolocatebugs.Anentirecollection(butnotaclass)canbedeclaredunchecked,inwhichcaseallofitspointersareimplicitlyunchecked.Seecollection.
Seealso
inheritlistsforadescriptionoftheassignabilityrulesforpointers.Seeclassesandcollectionsformoredetailsabouttheuseofpointers.Seealsonewandfreestatements.Seealsonil,objectclassandanyclass.
![Page 692: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/692.jpg)
post assertion
Syntax
AnpostAssertionis:
posttrueFalseExpn
Description
Apostassertionisaspecialformofanassertstatementthatisusedinaprocedureorfunction.Itisusedtogiverequirementsthatthebodyoftheprocedureorfunctionissupposedtosatisfy.TheserequirementsaregivenbythetrueFalseExpn.Afterthebodyhasexecutedandjustbeforetheprocedureorfunctionreturns,thetrueFalseExpnisevaluated.Ifitistrue,alliswellandexecutioncontinues.Ifitisfalse,executionisterminatedwithanappropriatemessage.Seeassertstatementsandprocedureandfunctiondeclarationsformoredetails.Seealsopreandinvariantassertions.
Example
Thisfunctionissupposedtoproduceanintegerapproximationofthesquarerootofintegeri.Thepostconditionrequiresthatthisresult,whichiscalledanswer,mustbewithinadistanceof1fromthecorrespondingrealnumbersquareroot.
functionintSqrt(i:int)answer:int
prei>=0
postabs(answer-sqrt(i))<=1
…statementstoapproximatesquareroot…
endintSqrt
Details
Apostassertioncanalsobeusedinamodule,monitor,classorprocessdeclarationtomakesurethattheinitializationsatisfiesitsrequirements.
Seealso moduleandprocess.
![Page 693: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/693.jpg)
pre assertion
Syntax
AnpreAssertionis:
pretrueFalseExpn
Description
Apreassertionisaspecialformofanassertstatementthatisusedatthebeginningofaprocedureorfunction.Itisusedtogiverequirementsthatthecalleroftheprocedureorfunctionsissupposedtosatisfy.TheserequirementsaregivenbythetrueFalseExpn.ThetrueFalseExpnisevaluated.Ifitistrue,alliswellandexecutioncontinues.Ifitisfalse,executionisterminatedwithanappropriatemessage.Seeassertstatementsandprocedureandfunctiondeclarationsformoredetails.Seealsopostandinvariantassertions.
Example
Thisfunctioncomputestheaverageofnvalues.Itspreconditionrequiresthatmustbestrictlypositive,toavoidthepossibilityofdividingbyzerowhencomputingtheaverage.
functionaverage(a:array1..*ofreal,n:
pren>0
varsum:real:=0
fori:1..n
sum:=sum+a(i)
endfor
resultsum/n
endaverage
DetailsApreassertioncanalsobeusedinamodule,monitor,classorprocessdeclarationtomakesurethatrequirementsforinitializationaremet.
Seealso moduleandprocess.
![Page 694: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/694.jpg)
precedence ofoperators
Description
Turing'sprecedencerulesdeterminetheorderofapplyingoperatorsinanexpressionsuchas3+4*5.Theserulesstate,forexample,thatmultiplicationisdonebeforeaddition,sothisexpressionisequivalentto3+(4*5).
Parenthesizedpartsofanexpressionareevaluatedbeforebeingused.Forexample,in(1+2)*3,theadditionisdonebeforethemultiplication.
Theprecedencerulesaredefinedbythistable,inwhichoperatorsappearingearlierinthetableareappliedfirst.Forexample,multiplicationisappliedbeforeaddition:
(1) **,^,# (2) prefix+and- (3) *,/,div,mod,rem,shr,shl (4) infix+,-,xor
(5) <,>,=,<=,>=,not=,in,notin (6) not (7) and (8) or
(9) => (booleanimplication)
Operatorsappearingonasinglelineinthistableareappliedfromlefttoright.Forexample,abcisthesameis(ab)c.
Herearesomeexamplesillustratingprecedence,inwhichtheleftandrightexpressionsareequivalent:
1**2 (1**2) a+b*c a+(b*c) a*b/c (a*b)/c
![Page 695: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/695.jpg)
borcandd bor(candd) x<yandy<z (x<y)and(y<z)
ThefinalexampleillustratesthefactthatinTuring,parenthesesarenotrequiredwhencombiningcomparisonsusingandandor.ThesewouldberequiredinthePascallanguage.
Thetypecheatoperator#isappliedaftersubscripting,subprogramcalling,dotting,and>.Forexample,ineachofthefollowing,#appliestotheentirereferencetotheright.
#a(i) #r.y #p->x
Thepointerfollowingoperator^isappliedbeforesubscripting,subprogramcalling,dotting,and->.Forexample,inthefollowing,^appliestoa,randp.
^a(i) ^r.y ^p->x
Useparenthesestoforce^toapplytomoreofthereference.Forexample,in^(a(i)),the^appliestoa(i).
Seealsoinfixandprefixoperators.Seetheint,real,string,boolean,set,enum,charandchar(n)types.
![Page 696: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/696.jpg)
pred predecessorfunction
Syntax pred(expn)
Description
Thepredfunctionacceptsaninteger,character,oranenumeratedvalueandreturnstheintegerminusone,thepreviouscharacter,orthepreviousvalueintheenumeration.Forexample,pred(7)is6.
Example
ThispartofaTuringprogramfillsuparrayawiththeenumeratedvaluesred,yellow,green,red,yellow,green,etc.
typecolors:enum(green,yellow,red)
vara:array1..100ofcolors
varc:colors:=colors.red
fori:1..100
a(i):=c
ifc=colors.greenthen
c:=colors.red
else
c:=pred(c)
endif
endfor
Details Itisillegaltoapplypredtothefirstvalueofanenumeration.
Seealso succ,lowerandupperfunctions.
![Page 697: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/697.jpg)
prefix operator
Syntax
AprefixOperatorisoneof:
(a) + %Integerandrealidentity
%(doesnotchangevalue)
(b) %Integerandrealnegation
(c) not %Not(Booleannegation)
(d) # %Typecheat
(e) ^ %Pointerfollowing
Description
Aprefixoperatorisplacedbeforeavalueoroperandtoproduceanothervalue.Forexample,ifthevalueofxisseven,then-xisnegativeseven.Therearealsoinfixoperatorssuchasmultiplication(*)andaddition(+),whichareplacedbetweentwovaluestoproduceathirdvalue.Seeinfixoperator.
The+andprefixoperatorscanbeappliedonlytonumericvalues(integer,realandnaturalnumbers).Thenotprefixcanbeappliedonlytotrue/false(boolean)values.Forexamplenot(x>y)isequivalenttox<=y.Thenotoperatorproducestruefromfalseandfalsefromtrue.
The#operatorsisatypecheat(seecheat),andthe^operatorispointerfollowing(seepointer).
Seealso
int,realandbooleantypes,aswellasprecedence(fortheorderofapplyingoperators)andinfixoperators.
![Page 698: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/698.jpg)
procedure declaration
Syntax
AprocedureDeclarationis:
procedureid[(paramDeclaration{,paramDeclaration})]
statementsAndDeclarations endid
Description
Aproceduredeclarationcreates(butdoesnotrun)anewprocedure.Thenameoftheprocedure(id)isgivenintwoplaces,justafterprocedureandjustafterend.
Example
proceduregreetings
put"Helloworld"
endgreetings
greetings%ThisoutputsHelloworld
proceduresayItAgain(msg:string,n:int)
fori:1..n
putmsg
endfor
endsayItAgain
sayItAgain("Toot",2)%Tootisoutputtwice
proceduredouble(varx:real)
x:=2*x
enddouble
vary:real:=3.14
double(y)%Thisdoublesthevalueofy
Thesetofparametersdeclaredwiththeprocedurearecalledformalparameters.Inthedoubleprocedure,forexample,xisaformalparameter.Aprocedureiscalled(invoked)byaprocedurecallstatementwhichconsistsoftheprocedure'snamefollowedbytheparenthesizedlistofactualparameters(ifany).Forexample,double(y)isacallhavingyasanactualparameter.Ifthereareno
![Page 699: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/699.jpg)
Details
parameters(seethegreetprocedureabove),thecalldoesnothaveparentheses.Thekeywordprocedurecanbeabbreviatedtoproc.
Ordinarily,aprocedurereturns(finishesandgoesbacktotheplacewhereitwascalled)byreachingitsend.However,thereturnstatementinaprocedurecausesittoreturnimmediately.Notethatreturncanalsobeusedinthemainprogramtocauseittohaltimmediately.
Onlyparametersdeclaredusingvarmaybechangedintheprocedure,forexample,xischangedinthedoubleprocedure.Theupperboundsofarraysandstringsthatareparametersmaybedeclaredtobeanasterisk(*).Thismeansthattheboundisthatoftheactualparameter.SeeparamDeclarationfordetailsaboutparameters.
Proceduresandfunctionscannotbedeclaredinsideotherproceduresandfunctions.
ThesyntaxofaprocedureDeclarationpresentedabovehasbeensimplifiedbyleavingouttheoptionalimportlist,precondition,initclause,postconditionandexceptionhandler.Thefullsyntaxis
procedure[pervasive]id
[([paramDeclaration{,paramDeclaration}])]
[:deviceSpecification]
[pretrueFalseExpn]
[initid:=expn{,id:=expn}]
[posttrueFalseExpn]
[exceptionHandler]
statementsAndDeclarations
endid
Aproceduremustbedeclaredbeforebeingcalled.Toallowformutuallyrecursiveprocedures,thereareforwarddeclarationsofprocedureswithlaterdeclarationofeachprocedurebody.Seeforwardandbodydeclarationsforexplanations.
importlist,precondition,initclause,postconditionandexceptionHandlerforexplanationsofthesefeatures.Seepervasiveforinformationonpervasiveprocedures.See
![Page 700: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/700.jpg)
Seealso exceptionHandler.TheoptionaldeviceSpecificationisusedonlyinproceduresdeclaredinmonitorsandisusedtocreateaninterrupthandlingprocedure.Seemonitorfordetails.
![Page 701: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/701.jpg)
procedureCall statement
Syntax
AprocedureCallis:
procedureId[([expn{,expn}])]
Description
Aprocedurecallisastatementthatcalls(invokesoractivates)aprocedure.Iftheprocedurehasparameters,aparenthesizedlistofexpressions(expns)mustfollowtheprocedure'sname(procedureId).
Example
proceduregreet
put"Hello"
endgreet
greet%Thisisacalltothegreetprocedure
proceduretimes(vari:int,factor:int)
i:=factor*i
endtimes
varj:int
times(j,4)%Multiplyjby4
Aparameterdeclaredintheheaderofaprocedureisaformalparameter.Forexample,iandfactoraboveareformalparameters.Eachexpressioninthecallisanactualparameter.Forexample,jand4aboveareactualparameters.
Ifaformalparameterisdeclaredusingvar,thentheexpressionpassedtothatparametermustbeavariablereference(soitsvaluecanpotentiallybechangedbytheprocedure).Thismeans,forexample,thatitwouldbeillegaltopassj+3asthefirstparametertotimes.Thevariablereferenceandtheformalparametermusthaveequivalenttypes(seeequivalencefordetails).
Eachactualparameterpassedtoanon-varformalparametermustbeassignabletothatparameter(seeassignabilityfordetails).SeealsoprocedureDeclaration.
![Page 702: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/702.jpg)
Details InthisexplanationofprocedureCall,wehaveuptothispointignoredthepossibilityofproceduresexportedfrommodules,monitorsandclasses.IftheprocedureisbeingcalledfromoutsideofamoduleormonitorMfromwhichithasbeenexported,thesyntaxoftheprocedureCallis:
M.procedureId[([expn{,expn}])]
Inotherwords,themoduleormonitornameandadotmustprecedetheprocedure'sname.Iftheprocedureisbeingcalledfromoutsideofaclassfromwhichithasbeenexported,thesyntaxoftheprocedureCallisoneof:
(a)classId(p).procedureId[([expn{,expn
(b)p->procedureId[([expn{,expn}])]
Inthese,pmusttheapointervaluethatlocatesanobjectintheclass.Form(b)isashortformforform(a).
Seealso class.
![Page 703: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/703.jpg)
process declaration
Syntax
AprocessDeclarationis:
processid[([paramDeclaration{,paramDeclaration}])]
statementsAndDeclarations endid
Description
Aprocessdeclarationismuchlikeaproceduredeclaration,butisactivatedbyaforkstatementratherthanbyacall.Theforkstatementstartsconcurrent(parallel)executionoftheprocesswhilethestatementsfollowingtheforkcontinuetoexecute.
Example
Thisprograminitiates(forks)twoconcurrentprocesses,oneofwhichrepeatedlyoutputsHiandtheotherHo.TheresultingoutputisanunpredictablesequenceofHi'sandHo'sasgreetingsexecutestwiceconcurrently,oneinstancewithwordsettoHiandtheotherwithwordsettoHo.
processgreetings(word:string)
loop
putword
endloop
endgreetings
forkgreetings("Hi")
forkgreetings("Ho")
Theprocessdeclarationcreatesatemplateforaprocess(aconcurrentactivity),whichisactivatedbyaforkstatement.
Aprocessdeclarationcanappearwhereveramoduledeclarationisallowedexceptthataprocessdeclarationisnotallowedinaclass.Thedeclarationsandstatementsinaprocessdeclarationarethesameasthoseinaprocedure.
SeeparamDeclarationfordetailsaboutparameters.Thereisananomalyinparameterstoprocesses,thatcanleadtoerrors.In
![Page 704: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/704.jpg)
Details
particular,non-varparametersthatarenon-scalars(suchasstringsandarrays)arepassedbyreference.Theresultisthatthetargetofthereferencemaychangevaluewhiletheprocessisexecuting,whichinturnmeansthattheseeminglyconstantparameterisnotreallyconstant.Forexample,ifthestringvariableswerepassedtothegreetingsprocessandsubsequentlychanged,thevalueofgreetings'formalparameterwouldchange.
ThesyntaxofaprocessDeclarationpresentedabovehasbeensimplifiedbyleavingouttheoptionalstacksize(compileTimeExpn),importlist,precondition,initclause,postconditionandexceptionhandler.
Thefullsyntaxis:
process[pervasive]id
[([paramDeclaration{,paramDeclaration
[:compileTimeExpn]
[pretrueFalseExpn]
[initid:=expn{,id:=expn}]
[posttrueFalseExpn]
[exceptionHandler]
statementsAndDeclarations
endid
Seepervasiveforinformationonpervasiveprocesses.TheoptionalcompileTimeExpnfollowingtheparameterlist(ifany)isusedtospecifythenumberofbytesfortheprocess'stack.
Seealsoimportlist,precondition,initclause,postconditionandexceptionHandlerforexplanationsoftheseadditionalfeatures.
![Page 705: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/705.jpg)
program a(main)program
Syntax
Aprogramis:
statementsAndDeclarations
DescriptionATuringprogramconsistsofalistofstatementsanddeclarations.
ExampleThisisacompleteTuringprogram.ItoutputsAlanM.Turing.
put"AlanM.Turing"
Example
ThisisacompleteTuringprogram.Itoutputsatriangleofstars.
varstars:string:="*"
loop
putstars
stars:=stars+"*"
endloop
Example
ThisisacompleteTuringprogram.ItoutputsHelloonceandGoodbyetwice.
proceduresayItAgain(what:string,n:int)
fori:1..n
putwhat
endfor
endsayItAgain
sayItAgain("Hello",1)
sayItAgain("Goodbye",2)
Details
Inaprogramtherecanbemanyunits(seeunit),oneofwhichistheprogram(calledthemainprogram),theothersofwhicharemodules,monitorsandclasses.Themainprogramisoptionallyprecededbyanimportlist,whichliststheunitsthatituses.
Seealso importlist.
![Page 706: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/706.jpg)
put statement
Syntax
AputStatementis:
put[:fileNumber,]putItem{,putItem}[..]
Description
TheputstatementoutputseachoftheputItems.Usually,anewlineisstartedintheoutputafterthefinalputItem.Iftheoptionaldot-dot(..)ispresent,though,subsequentoutputwillbecontinuedonthecurrentoutputline.Withcharactergraphics,theomissionofdot-dotcausestheremainderoftheoutputlinetobeclearedtoblanks.
Ordinarily,theoutputgoestothescreen.However,ifthefileNumberispresent,theoutputgoestothefilespecifiedbythefilenumber(seetheopenstatementfordetails).Also,outputcanberedirectedfromthescreentoafile,inwhichcaseallputstatementswithoutafilenumberaresenttothefileinsteadofthescreen.
Example
varn:int:=5
put"Aliceowesme$",n
%Outputis:Aliceowesme$5
%Notethatnoextraspaceis
%outputbeforeanintegersuchasn.
Example
StatementOutputNotes
put2424
put1/100.1%Trailingzerosomitted
put100/1010%Decimalpointomitted
put5/31.666667%6fractiondigits
putsqrt(2)1.414214%6fractiondigits
put4.86*10**94.86e9%Exponentfor=1e6
put121:5bb121%Width5;bisblank
put1.37:6:3b1.370%Fractionwidthof3
put1.37:11:3:2bb1.370e+00%Exponentwidthof2
put"Say\"Hello\""Say"Hello"
put"XX":4,"Y"XXbbY%Blankshownasb
puttrueandfalsefalse%Putoutabooleanvalue
put1<2true%Putoutabooleanvalue
![Page 707: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/707.jpg)
Example
Asingleblanklineisoutputthisway:
put""%Outputnullstringthennewline
Thisputstatementissometimesusedtocloseoffalinethathasbeenoutputpiecebypieceusingputwithdot-dot.
Details
ThegeneralformofaputItemisoneof:
(a) expn[:widthExpn[:fractionWidth[:exponentWidth]]] (b) skip
SeetheaboveexamplesforusesofwidthExpn,fractionWidthandexponentWidth.Fortheexactmeaningofthesethreewidths,seethedefinitionsofthefunctionsrealstr,frealstranderealstr.Theskipitemisusedtoendthecurrentoutputlineandstartanewline.
Details
Theputsemanticsallowput'sofenumvalues.Thevaluesprintedaretheelementnamesthemselves,casesensitive.Forexample:
typecolors:enum(red,green,blue)
varc:colors:=colors.red
putc%outputs"red"(withoutthequotes)
Details
Theputsemanticsallowput'sofbooleanvalues.Thevaluesprintedareeither“true”or“false”(withoutthequotes).Forexample:
varc:boolean:=trueorfalse
putc%outputs"true"(withoutthequotes)
![Page 708: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/708.jpg)
quit failstatement
Syntax
AquitStatementis:
quit[guiltyParty][:quitReason]
Description
Thequitstatementcausesaprogram(orconcurrentprocess)tofail.Thefailure(calledanexception)eitherabortstheprogram(orprocess)orcausescontroltobepassedtoanexceptionhandler.
Example
IntheinputLinesprocedure,halttheprogramifendoffileisencounteredbeforethestring"stop"isread.Notethatareturnstatementintheprocedurewouldterminatetheprocedurebutnottheentireprogram.
varline:array1..50ofstring
procedureinputLines
vari:int:=0
loop
ifeofthen
put"Missing'stop'ininput"
quit%Haltentireprogram
endif
i:=i+1
getline(i)
exitwhenline(i)="stop"
endloop
endinputLines
inputLines
Inthesimplecase,theoptionalguiltyPartyandquitReasonareomitted.TheguiltyPartyoptionisusedtospecifythepositionoffailure.SeeexceptionHandlerforanexampleofaquitstatementusedinconjunctionwithahandler.Ahandler,whichislocatedatthebeginningofasubprogrambody,isgivencontrolwhenaquitisexecutedorafailure,suchasdivisionbyzero,occursinthesubprogram.
![Page 709: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/709.jpg)
Details
TheguiltyPartyoptionisusedtodesignatethelocationofthefailure,forexample,totellthedebuggerwhatlineisconsideredtobethelocationofthefailure.AguiltyPartyisoneof:
(a) < (b) >
IfguiltyPartyisomitted,thefailureisconsideredtooccuratthequitstatement.Ifitis<,thefailureisconsideredtooccuratthecalltothepresentsubprogram.Forexample,ifthepresentsubprogramimplementssquarerootsqrtandispassedanegativeargument,itcanuse<tospecifythatthecallerprovidedafaultyargument.IfguiltyPartyis>,thismeansthefailurehasalreadyoccurredandisbeingpassedontothenexthandlerortothesystem.Tosummarize,thethreepossibilitiesfordesignatingthelocationofthefailureare:
(a) < Calleriscauseoffailure
(b) > Theexceptionbeinghandledisthecause.
(c) (omittedguiltyParty)Thepresentquitisthecause.
ThequitReasonisanintegerexpressionwhichisusedtoidentifythekindoffailure.Ifitisomitted,adefaultvalueischoseninthefollowingmanner.IfguiltyPartyisomittedoris<,thedefaultis1.IfguiltyPartyis>andanexceptionhandlerisactive,thedefaultisthequitReasonoftheexceptionbeinghandled.Ifnoexceptionisbeinghandled,thedefaultis1.Inthecaseofprogramabortion,theimplementationmaypassthequitReasontotheoperatingsystemorprogrammingenvironment.
Seealso exceptionHandler,returnandresult.
![Page 710: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/710.jpg)
Rand
Description
Thisunitcontainsthepredefinedsubprogramsthatdealwithrandomnumbers.
AllroutinesintheRandunitareexportedqualified(andthusmustbeprefacedwith"Rand.").
EntryPoints
Real Returnsarandomrealnumber.Int Returnsarandominteger.Reset Setstheseedinthedefaultsequencetoadefaultvalue.
Set Setstheseedinthedefaultsequencetoaspecifiedvalue.
Next Returnsarandomrealnumberfromasequence.Seed Setsaseedinasequence.
![Page 711: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/711.jpg)
Rand.Int PartofRandmodule
Syntax Rand.Int(low,high:int):int
Description
TheRand.Intstatementisusedtocreateapseudo-randomintegerintherangelowtohigh,inclusive.Forexample,ifiisaninteger,afteri:=Rand.Int(i,1,10),iwouldhaveavaluesuchas7or2or10.
Example
Thisprogramsimulatestherepeatedrollingofasixsideddie.
loop
put"Rolled",Rand.Int(1,6)
endloop
Details
TheRand.Intstatementsetsitsparametertothenextvalueofasequenceofpseudo-randomintegersthatapproximatesauniformdistributionovertherangelow=i=high.Itisrequiredthatlow=high.
Eachtimeaprogramruns,Rand.Intusesadifferentpseudo-randomnumbersequence.Toalwaysgetthesamesequence(actually,tostartthesequenceatthesamepoint),usetheRand.Setprocedure.
Touseseveralsequencesofrepeatablepseudo-randomnumbersequences,usetheRand.SeedandRand.Nextprocedures.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingRand.Int,notbycallingInt.
Seealso Rand.Real,Rand.Set,Rand.SeedandRand.Next.
![Page 712: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/712.jpg)
Rand.Next PartofRandmodule
Syntax Rand.Next(seq:1..10):real
Description
TheRand.Nextprocedureisusedwhenyouneedseveralsequencesofpseudo-randomnumbers,andyouneedtobeabletoexactlyrepeatthesesequencesforanumberofsimulations.TheRand.Nextprocedureisthesameasrand,exceptseqspecifiesoneoftenindependentandrepeatablesequencesofpseudo-randomrealnumbers.
TheRand.Seedprocedureisusedtostartoneofthesesequencesataparticularpoint.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingRand.Next,notbycallingNext.
Seealso Rand.Seed,Rand.Int,Rand.RealandRand.Next.
![Page 713: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/713.jpg)
Rand.Real PartofRandmodule
Syntax Rand.Real:real
Description
TheRand.Realfunctionreturnsapseudo-randomnumberintherangezerotoone.Forexample,ifxisarealnumber,afterx:=Rand.Real,xwouldhaveavaluesuchas0.729548or0.352879.
Example
ThisprogramrepeatedlyandrandomlyprintsoutHiho,hihoorIt'sofftoworkwego.
loop
ifRand.Real>0.5then
put"Hiho,hiho"
else
put"It'sofftoworkwego"
endif
endloop
Details
TheRand.Realfunctionsetsitsparametertothenextvalueofasequenceofpseudo-randomrealnumbersthatapproximatesauniformdistributionovertherange0<r<1.
Eachtimeaprogramruns,Rand.Realusesadifferentpseudo-randomnumbersequence.Toalwaysgetthesamesequence(actually,tostartthesequenceatthesamepoint),usetheRand.Setprocedure.
Touseseveralsequencesofrepeatablepseudo-randomnumbersequences,usetheRand.SeedandRand.Nextprocedures.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingRand.Real,notbycallingReal.
Seealso Rand.Int,Rand.Set,Rand.SeedandRand.Next.
![Page 714: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/714.jpg)
Rand.Reset PartofRandmodule
Syntax Rand.Reset
Description
Thisisaprocedurewithnoparametersthatresetsthesequencesofpseudo-randomnumbersproducedbyRand.RealandRand.Int.Thisallowsidenticalexecutionsofthesameprogramtoproduceidenticalresults.
Example
Thisprogramsimulatestherepeatedrollingofasixsideddie.Eachtimetheprogramruns,thesamesequenceofrollsoccurs.
Rand.Reset
loop
put"Rolled",Rand.Int(1,6)
endloop
Details
IfRand.ResetandRand.Setarenotused,eachtimeaprogramrunsRand.RealandRand.Intuseadifferentpseudo-randomnumbersequence.Togetthesamesequenceeachtime(actually,tostartthesequenceatadifferentpoint),useRand.ResetorRand.Set.
TheRand.Resetprocedurecanbecalledanytime.However,tomakeitwork,itshouldonlybecalledonceperprogram.AnycalltoRand.Resetafterthefirstoneisignored.
Touseseveralsequencesofrepeatablepseudo-randomnumbersequences,usetheRand.SeedandRand.Nextprocedures.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingRand.Reset,notbycallingReset.
Seealso Rand.Set,Rand.Int,Rand.Real,Rand.SeedandRand.Next.
![Page 715: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/715.jpg)
Rand.Seed PartofRandmodule
Syntax Rand.Seed(seed:nat4,seq:1..10)
Description
TheRand.SeedprocedurerestartsoneofthesequencesgeneratedbyRand.Next.EachrestartwiththesameseedcausesRand.Nexttoproducethesamesequenceforthegivensequence.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingRand.Seed,notbycallingSeed.
Seealso Rand.Next,Rand.Int,Rand.Real,andRand.Set.
![Page 716: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/716.jpg)
Rand.Set PartofRandmodule
Syntax Rand.Set(seed:nat4)
Description
Thisproceduresetstheseedforsequencesofpseudo-randomnumbersproducedbyRand.RealandRand.Int.Thisallowsidenticalexecutionsofthesameprogramtoproduceidenticalresults.
Example
Thisprogramsimulatestherepeatedrollingofasixsideddie.Eachtimetheprogramruns,thesamesequenceofrollsoccurs.
Rand.Set(16#1234ABCD)
loop
put"Rolled",Rand.Int(1,6)
endloop
Details
IfRand.ResetandRand.Setarenotused,eachtimeaprogramrunsRand.RealandRand.Intuseadifferentpseudo-randomnumbersequence.Togetthesamesequenceeachtime(actually,tostartthesequenceatadifferentpoint),useRand.ResetorRand.Set.
Touseseveralsequencesofrepeatablepseudo-randomnumbersequences,usetheRand.SeedandRand.Nextprocedures.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingRand.Set,notbycallingSet.
Seealso Rand.Reset,Rand.Int,Rand.Real,Rand.SeedandRand.Next.
![Page 717: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/717.jpg)
rand randomrealnumberprocedure
Syntax rand(varr:real)
Description
Therandstatementisusedtocreateapseudo-randomnumberintherangezerotoone.Forexample,ifxisarealnumber,afterrand(x),xwouldhaveavaluesuchas0.729548or0.352879.
Example
ThisprogramrepeatedlyandrandomlyprintsoutHiho,hihoorIt'sofftoworkwego.
varr:real
loop
rand(r)
ifr>0.5then
put"Hiho,hiho"
else
put"It'sofftoworkwego"
endif
endloop
Details
Therandstatementsetsitsparametertothenextvalueofasequenceofpseudo-randomrealnumbersthatapproximatesauniformdistributionovertherange0<r<1.
Eachtimeaprogramruns,randusesadifferentpseudo-randomnumbersequence.Togetthesamesequence(useRand.Set).
Touseseveralsequencesofrepeatablepseudo-randomnumbersequences,usetherandseedandrandnextprocedures.
Inmanylanguages,randwouldbeafunctionratherthanaprocedure.IthasbeendesignedasaprocedureinTuringtorespectthemathematicalideathateverycalltoafunctionusingthesamearguments(ornoargumentsatall)shouldreturnthesamevalue.Ifrandwereafunction,thiswouldnotbetrue.
Seealsorandint,randomize,randseedandrandnext.
SeealsopredefinedunitRand.
![Page 718: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/718.jpg)
randint randomintegerprocedure
Syntax randint(vari:int,low,high:int)
Description
Therandintstatementisusedtocreateapseudo-randomintegerintherangelowtohigh,inclusive.Forexample,ifiisaninteger,afterrandint(i,1,10),iwouldhaveavaluesuchas7or2or10.
Example
Thisprogramsimulatestherepeatedrollingofasixsideddie.
varroll:int
loop
randint(i,1,6)
put"Rolled",i
endloop
Details
Therandintstatementsetsitsparametertothenextvalueofasequenceofpseudo-randomintegersthatapproximatesauniformdistributionovertherangelow=i=high.Itisrequiredthatlow=high.
Eachtimeaprogramruns,randintusesthesamepseudo-randomnumbersequence.Togetadifferentsequence(actually,tostartthesequenceatadifferentpoint),usetherandomizeprocedure.
Touseseveralsequencesofrepeatablepseudo-randomnumbersequences,usetherandseedandrandnextprocedures.
Seealso rand,randomize,randseedandrandnext.
![Page 719: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/719.jpg)
randnext procedure
Syntax randnext(varv:real,seq:1..10)
Description
Therandnextprocedureisusedwhenyouneedseveralsequencesofpseudo-randomnumbers,andyouneedtobeabletoexactlyrepeatthesesequencesforanumberofsimulations.Therandnextprocedureisthesameasrand,exceptseqspecifiesoneoftenindependentandrepeatablesequencesofpseudo-randomrealnumbers.
Therandseedprocedureisusedtostartoneofthesesequencesataparticularpoint.
Seealso randseed,randint,randandrandnext.
![Page 720: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/720.jpg)
randomize procedure
Syntax randomize
Description
Thisprocedureisobsolete.Itwasoriginallyusedtoproduceadifferentsequenceofrandomnumberseachtimeaprogramexecuted.WithcurrentversionsofTuring,therandomnumbersequenceis“randomized”eachtimeaTuringprogramisexecuted,eliminatingtheneedforthisprocedure.
Toresettherandomnumbersequenceandthusallowforapredeterminedsequenceofpseudo-randomnumbers,useRand.Set.
Seealsorandint,rand,randseedandrandnext.
SeealsopredefinedunitRand.
![Page 721: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/721.jpg)
randseed procedure
Syntax randseed(seed:int,seq:1..10)
Description
Therandseedprocedurerestartsoneofthesequencesgeneratedbyrandnext.Eachrestartwiththesameseedcausesrandnexttoproducethesamesequenceforthegivensequence.
Seealso randnext,randint,rand,andrandomize.
![Page 722: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/722.jpg)
read filestatement
Dangerousparts
Syntax
AreadStatementis:
read:fileNumber[:status],readItem{,readItem}
Description
ThereadstatementinputseachofthereadItemsfromthespecifiedfile.Theseitemsareinputdirectlyusingthebinaryformatthattheyhaveonthefile.Inotherwords,theitemsarenotinsource(ASCIIorEBCDIC)format.Inthecommoncase,theseitemshavebeenoutputtothefileusingthewritestatement.
Bycontrast,thegetandputstatementsusesourceformat,whichapersoncanreadusinganordinarytexteditor.
Example
Thisexampleshowshowtoinputacompleteemployeerecordusingareadstatement.
varemployeeRecord:
record
name:string(30)
pay:int
dept:0..9
endrecord
varfileNo:int
open:fileNo,"payroll",read
…
read:fileNo,employeeRecord
ThefileNumbermustspecifyafilethatisopenwithreadcapability(oraprogramargumentfilethatisimplicitlyopened).
Theoptionalstatusisanintvariablethatissettoimplementation-dependentinformationabouttheread.Ifstatusisreturnedaszero,thereadwassuccessful.Otherwisestatusgivesinformationabouttheincompleteorfailedread(whichisnotdocumentedhere).Youcommonlyusestatuswhenyouarereadingarecordorarrayfromafileandyouarenotsureiftheentireitemexistsonthefile.Ifitdoesnot
![Page 723: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/723.jpg)
Details
exist,thereadwillfailpartwaythrough,butyourprogramcancontinueanddiagnosetheproblembyinspectingstatus.
AreadItemis:
variableReference[:requestedSize[:actualSize
EachreadItemspecifiesavariabletobereadininternalform.TheoptionalrequestedSizeisanintegervaluegivingthenumberofbytesofdatatoberead.TherequestedSizeshouldbelessthanorequaltothesizeoftheitem'sinternalforminmemory(elseawarningmessageisissued).IfnorequestedSizeisgiven,thesizeoftheiteminmemoryisused.TheoptionalactualSizeisanintvariablethatissettothenumberofbytesactuallyread.
Anarray,recordorunionmaybereadandwrittenasawhole.
Itisdangeroustoreadintopointervariables,asthisallowsthepossibilityofcreatingincorrectaddressesinthepointers.ItisalsodangeroustoreadmorebytesthanareinthereadItem.
Seealso thewrite,open,close,seek,tell,getandputstatements.
![Page 724: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/724.jpg)
real therealnumbertype
Syntax real
Description
Therealnumbertypeisusedfornumbersthathavefractionalparts,forexample,3.14159.Realnumberscanbecombinedbyvariousoperatorssuchasaddition(+)andmultiplication(*).Realnumberscanalsobecombinedwithintegers(wholenumbers,suchas23,0and-9),inwhichcasetheresultisgenerallyarealnumber.Anintegercanalwaysbeassignedtoarealvariable,withimplicitconversiontoreal.
Examplevarweight,x:real
varx:real:=9.83
vartax:=0.7%Thetypeisimplicitlyrealbecause
%0.7isarealnumber
Details
SeealsoexplicitRealConstant.Theinttypeisusedinsteadofreal,whenvaluesarewholenumbers.Seeintfordetails.
Realnumberscanbeconvertedtointegersusingceil(ceiling),floor,orround.Realnumberscanbeconvertedtostringsusingerealstr,frealstr,andrealstr.Theseconversionfunctionscorrespondexactlytotheformattingusedfortheputstatementwithrealnumbers.Stringscanbeconvertedtorealnumbersusingstrreal.Seedescriptionsoftheseconversionfunctions.
Thepredefinedfunctionsforrealnumbersincludemin,max,sqrt,sin,cons,arctan,sind,cosd,arcand,lnandexp.Seethedescriptionsofthesefunctions.
Pseudo-randomsequencesofrealnumberscanbegeneratedusingrand.Seethedescriptionofthisprocedure.
TheTuringReportgivesaformaldefinition(notrepeatedhere)ofimplementedrealnumbersintermsoftheirrequiredaccuracyrelativetoinfinitelyaccurate(mathematical)realnumbers.
![Page 725: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/725.jpg)
Turingimplementsrealnumbersusing8bytefloatingpointrepresentation.Thisprovides14to16decimaldigitsofprecisionandanexponentrangeofatleast-38..38.ThePCandMacintoshversionsofTuringhave16decimaldigitsofaccuracybecausetheyuseIEEEstandardfloatingpointrepresentation.
Seealso realn.
![Page 726: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/726.jpg)
realn n-byterealnumbertype
Syntax (a) real4 %4-byterealnumber (b) real8 %8-byterealnumber
Description
Therealn(n-byterealnumber)typesaremachine-dependenttypesthatoccupyaspecifiednumberofbytes.Bycontrast,therealtypeis,inprinciple,amachine-independentandmathematicaltype(however,itoverflowswhentheexponentofthevalueistoolargeorsmallandithasonlyalimitedamountofprecision).
Example varwidth:real4
varheight:real8
Details
Turingimplementsthetyperealusing8bytefloatingpointrepresentation.Thisprovides14to16decimaldigitsofprecisionandanexponentrangeofatleast-38..38.ThePCandMacintoshversionsofTuringhave16decimaldigitsofaccuracybecausetheyuseIEEEstandardfloatingpointrepresentation.
Thisimpliesthatreal8andrealareessentiallythesametype,soinpracticethereisnoadvantagetousingreal8ratherthanreal.However,real4hastheadvantageofoccupyinghalfasmuchspace(withcorrespondinglyreducedprecision).
Arithmeticforallrealtypes(real,real4andreal8)iscarriedoutwiththeaccuracyandexponentrangeof8-bytereals.
Thetypereal4issometimescalledsingleprecision(becauseitoccupiesasingle4-byteword)andreal8issometimescalleddoubleprecision.
![Page 727: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/727.jpg)
realstr real-to-stringfunction
Syntax realstr(r:real,width:int):string
Description
Therealstrfunctionisusedtoconvertarealnumbertoastring.Forexample,realstr(2.5e1,4)="bb25"wherebrepresentsablank.Thestringisanapproximationtor,paddedontheleftwithblanksasnecessarytoalengthofwidth.
Thewidthparametermustbenon-negative.Ifthewidthparameterisnotlargeenoughtorepresentthevalueofritisimplicitlyincreasedasneeded.Thedisplayedvalueisroundedtothenearestdecimalequivalentwiththisaccuracy.Inthecaseofatie,thedisplayvalueisroundedtothenextlargervalue.
Thestringrealstr(r,width)isthesameasthestringfrealstr(r,width,defaultfw)whenr=0orwhen1e-3<abs(r)<1e6,otherwisethesameaserealstr(r,width,defaultfw,defaultew),withthefollowingexceptions.Withrealstr,trailingfractionzeroesareomitted,andthedecimalpointisomittediftheentirefractioniszero.(Theseomissionstakeplaceeveniftheexponentpartisprinted.)Ifanexponentisprinted,anyplussignandleadingzeroesareomitted.Thus,wholenumbervaluesareingeneraldisplayedasintegers.
Defaultfwisanimplementation-definednumberoffractionaldigitstobedisplayed.Formostimplementations,defaultfwwillbe6.
Defaultewisanimplementation-definednumberofexponentdigitstobedisplayed.Formostimplementations,defaultewwillbe2.
Therealstrfunctionapproximatestheinverseofstrreal,althoughround-offerrorskeepthesefrombeingexactinverses.
Seealso theerealstr,frealstr,strreal,intstrandstrintfunctions.
![Page 728: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/728.jpg)
record type
Syntax
ArecordTypeis:
record id{,id}:typeSpec {id{,id}:typeSpec} endrecord
Description
Eachvalueofarecordtypeconsistsoffields,onefieldforeachname(id)declaredinsidetherecord.Inthefollowingexample,thefieldsarename,phoneNumberandaddress.
Example
typephoneRecord:
record
name:string(20)
phoneNumber:int
address:string(50)
endrecord
…
varoneEntry:phoneRecord
varphoneBook:array1..100ofphoneRecord
vari:int
oneEntry.name:="Turing,Alan"
…
phoneBook(i):=oneEntry%Assignwholerecord
Details
Inarecord,id'soffieldsmustbedistinct.However,theseneednotbedistinctfromidentifiersoutsidetherecord.Recordscanbeassignedasawhole(torecordsofanequivalenttype),buttheycannotbecompared.AsemicoloncanoptionallyfolloweachtypeSpec.
Anyarraycontainedinarecordmusthaveboundsthatareknownatcompiletime.
Thenotation>canbeusedtoaccessrecordfields.Forexample,ifpisapointertophoneRecord,p>namelocatesthenamefield.Seepointer.
![Page 729: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/729.jpg)
register usemachineregister
Dirty
Description
Whenavariable,constantorparameterisdeclared,youcanrequestthattheitembeplacedinamachineregister.Thisshouldbedoneonlyforprogramsrequiringconsiderableefficiency.
Example
varregistercounter:int
constregistermaxCounter:int:=100
procedurep(registerx:real)
…
endp
Details
Itemscanberequestedtobeinregistersonlyiftheyarelocaltoasubprogram(notglobalvariables,declaredinthemainprogram,amodule,monitororclass).Itemsrequestedtobeinregisterscannotbeboundto,passedtoreferenceparameters,havetheiraddresstakenbyaddr,orhavecertaintypecheatsappliedtothem(sinceamachineregisterhasnoaddress).
Therequesttousearegistermaybeignored.Forexample,thecurrent(1999)interpretiveimplementationusespseudo-code,whichhasnomachineregisters,andsoignorestheregisterkeyword.Forthesyntaxofusingthiskeyword,seevardeclaration,constdeclarationandparamDeclaration.
![Page 730: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/730.jpg)
rem remainderoperator
Syntax rem
Description
Therem(remainder]operatorproducestheremainderofonenumberdividedbyanother.Forexample,7rem2produces1and-12rem5produces-2.
Example
Inthisexample,eggCountisthetotalnumberofeggs.Thefirstputstatementdetermineshowmanydozeneggsthereare.Thesecondputstatementdetermineshowmanyextraeggstherearebeyondthelastdozen.
vareggCount:int
geteggCount
put"Youhave",eggCountdiv12,"dozeneggs"
put"Youhave",eggCountrem12,"leftover"
Seealsoinfixoperators,precedenceofoperatorsandthemodanddivoperators.
![Page 731: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/731.jpg)
repeat makecopiesofstring
function
Syntax repeat(s:string,i:int):string
DescriptionTherepeatfunctionreturnsicopiesofstringscatenatedtogether.Forexample,repeat("X",4)isXXXX.
Example
ThisprogramoutputsHoHoHo.
varword:string:="Ho"
putrepeat(word,3)
Details
Ifiislessthanorequaltozero,thenullstring""isreturned.Therepeatfunctionisoftenusedforspacingofoutput.Forexample,thisstatementskips20blanksbeforeoutputtingx.
putrepeat("",20),x
![Page 732: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/732.jpg)
result statement
Syntax
AresultStatementis:
resultexpn
DescriptionAresultstatement,whichmustappearonlyinafunction,isusedtoprovidethevalueofthefunction.
Example
Thisfunctiondoublesitsparameter.
functiondouble(x:real):real
result2*x
enddouble
putdouble(5.3)%Thisoutputs10.6
Example
Thisfunctionfindsthepositionofanameinalist.
functionfind(a:array1..100ofstring):
fori:1..100
ifa(i)=namethen
resulti
endif
endfor
endfind
Details
Theexecutionofaresultstatementcomputesthevalueoftheexpression(expn)andterminatesthefunction,returningthevalueasthevalueofthefunction.
Theexpressionmustbeassignabletotheresulttypeofthefunction,forexample,indouble,2*xisassignabletoreal.(SeetheassignmentStatementforthedefinitionofassignable.)
Afunctionmustterminatebyexecutingaresultstatementandnotbyreachingtheendofthefunction.
![Page 733: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/733.jpg)
return statement
Syntax
AreturnStatementis:
return
Description
Areturnstatementterminatestheprocedure(ormainprogram)inwhichitappears.Ordinarily,aprocedure(ormainprogram)terminatesbyreachingitsend;thereturnstatementisusedtocauseearlytermination.
Example
ThisproceduretakesnoactioniftheerrorHasOccurredflaghasbeensettotrue.
proceduredouble
iferrorHasOccurredthen
return%Terminatethisprocedure
endif
…handleusualcaseinthisprocedure…
enddouble
DetailsAreturnmustnotappearasastatementin(theoutermostlevelof)amodule,norcanitappearinafunction.
![Page 734: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/734.jpg)
RGB
Description
Thisunitcontainsthepredefinedconstantsforthebasiccolorsandthesubprogramstochangethecolorpalette.
AllsubprogramsintheRGBunitareexportedqualified(andthusmustbeprefacedwith"RGB.").AllthecolorconstantsareexportedunqualifiedandthusdonotneedtheRGBprefix.
Details
Foraprogramthatdisplaysthe256predefinedcolors(andtheirassociatedcolornumbers)inTuring,runthe"Colors.t"program.
Details
Thefollowingnamescanbeusedforcolors.TheyrepresentcolornumbersandthuswillnotbeaccurateifRGB.SetColorhasbeenusedtochangecolornumbers0through15.
black,blue,green,cyan,red,magenta,purple,brown,white,gray,grey,brightblue,brightgreen,brightcyan,brightred,brightmagenta,brightpurple,yellow,brightwhite,darkgray,darkgrey
Theremainingfourcolorsrepresenttheforegroundcolor(blackonWindowsortheMacintosh,whiteonaDOSsystem)andthebackgroundcolor(whiteonWindowsorMacintosh,blackonaDOSsystem).UsingthesefourcolorsallowsyoutowriteprogramsthatworkonbothWindowsandDOSversionsofTuring.
colorfg,colourfg,colorbg,colourbg
Turingusesapalettetoaccesscolorsfordisplay.Thispaletteisa
![Page 735: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/735.jpg)
Details
listofcolornumbersandtheirassociatedactualcolor.TheTuringpalettestartswith256entries(thecolornumbersfrom0to255).With16,24,and32-bitcolordisplays,however,aTuringprogramcandisplaythousandsofcolorsatonce.Thesecolors,however,willallhavecolornumbersassociatedwiththem.Forexample,ifaTuringprogramloadsaJPEGimage,theremaybethousandsofcolorsonthescreen,butthenumberofcolornumberswillstayat256.Likewise,16,24,and32-bitcolordisplays,ifyouloadapictureinGIFformatthathasa256colorsthataredifferentfromtheinitialTuringcolorpalette,theywillappearintherunwindow.However,theywillnotbeaddedtoTuring'scolorpalette.
IfyouattempttodeterminethecolornumberofaparticularpixelthatdoesnotmatchanyofthecolorsinTuring'scolorpalette,thenTuringwillreturnthecolornumberofthecolorintheTuringpalettethatmostcloselymatchesthatcolorofthepixel.
EntryPoints
GetColorGetColour Getsthecurrentred,greenandbluevaluesofa
specifiedcolornumber.SetColorSetColour Setsthered,greenandbluevaluesofa
specifiedcolornumber.AddColorAddColour Createsanewcolornumberwithaspecified
red,greenandbluevalue.
![Page 736: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/736.jpg)
RGB.AddColor PartofRGBmodule
Syntax RGB.AddColor(redComp,greenComp,blueComp:real):int
Description
TheRGB.AddColorfunctionattemptstocreateanewcolorwiththered,greenandbluecomponentsspecified.Ifsuccessful,thefunctionreturnsanewcolornumber(usuallyonegreaterthanmaxcolor)andmaxcolorisupdatedbyadding1toit.Ifitisunsuccessful,thefunctionreturns1andError.LastandError.LastMsgcanbeusedtodeterminethecauseoftheproblem.
Thered,greenandbluevaluesmustnormalizedtobebetween0and1.Thustoaddthepureredtothecolorpalette,youwouldcall:
newColor:=RGB.AddColor(1.0,0.0,0.0)
newColorwouldbesettothecoloradded,or1iftheattempttoaddacolorfailed.
Example
Thisprogramaddsapaletteof16bluestotheendofthecolorpalette.
varclr:int
forblueShade:0..15
clr=RGB.AddColor(0,0,blueShade/15)
ifclr=1then
put"Coloraddfailedonshadenumber",
exit
else
put"Addedcolornumber",clr
endif
endfor
Details RGB.AddColourisanalternatespellingforRGB.AddColor.
Status
Exportedqualified.
Thismeansthatyoucanonlycallthefunctionbycalling
![Page 737: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/737.jpg)
RGB.AddColor,notbycallingAddColor.
Seealso RGB.GetColorandRGB.SetColor.
![Page 738: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/738.jpg)
RGB.GetColor PartofRGBmodule
SyntaxRGB.GetColor(colorNumber:int, varredComp,greenComp,blueComp:real)
Description
TheRGB.GetColorprocedurereturnsthered,greenandbluecomponentstothecolorassociatedwiththecolorNumberparameter.Thered,greenandbluevaluesarenormalizedtobebetween0and1.Thuscolorwhitereturns1.0fortheredComp,greenCompandblueCompvaluesandcolorblackreturns0.0forallthree.
Example
Thisprogramgetsthecomponentsofalltheavailablecolors.
put"ColorRedGreenBlue"
forclr:0..maxcolor
varredComp,greenComp,blueComp:int
RGB.GetColor(clr,redComp,greenComp,blueComp
putclr:4,"",redComp:6:4,"",greenComp
blueComp:6:4
endfor
Details RGB.GetColourisanalternatespellingforRGB.GetColor.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingRGB.GetColor,notbycallingGetColor.
Seealso RGB.SetColorandRGB.AddColor.
![Page 739: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/739.jpg)
RGB.maxcolor PartofRGBmodule
Syntax maxcolor:int
Description
Themaxcolorfunctionisusedtodeterminethemaximumcolornumberforthecurrentmodeofthescreen.Thealternatespellingismaxcolour.
Example
Thisprogramoutputsthemaximumcolornumber.
setscreen("graphics")
…
put"Themaximumcolornumberis",maxcolor
Details
Thescreenshouldbeina"screen"or"graphics"mode.Ifitisnot,itwillautomaticallybesetto"screen"mode.SeeView.Setfordetails.
ForIBMPCcompatiblesin"screen"mode,maxcolor=15.ForthedefaultIBMPCcompatible"graphics"mode(CGA),maxcolor=3.
Status
Exportedunqualified.
ThismeansthatyoucancallthefunctionbycallingmaxcolororbycallingRGB.maxcolor.
Seealso
Draw.Dotforexamplesoftheuseofmaxcolor.SeetheText.Colorprocedurewhichisusedforsettingthecurrently-activecolor.
![Page 740: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/740.jpg)
RGB.SetColor PartofRGBmodule
SyntaxRGB.SetColor(colorNumber:int, redComp,greenComp,blueComp:real)
Description
TheRGB.SetColorfunctionsetsthered,greenandbluecomponentsofthecolorassociatedwiththecolorNumberparameter.Thered,greenandbluevaluesmustnormalizedtobebetween0and1.ThustosetthecolorassociatedwiththecolorNumberparametertopurered,youwouldcall:
RGB.SetColor(colorNumber,1.0,0.0,0.0)
ItiswisetouseError.LastandError.LastMsgtochecktoseeifthecolorchangeissuccessful.
![Page 741: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/741.jpg)
Example
Thisprogramsetsalltheavailablecolorstoshadesofred
forclr:0..maxcolor
ifnotRGB.SetColor(clr,clr/maxcolor,0,0)
put"Colorsetfailedoncolornumber",
exit
endif
endfor
Details RGB.SetColourisanalternatespellingforRGB.SetColor.
Details
![Page 742: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/742.jpg)
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingRGB.SetColor,notbycallingSetColor.
Seealso RGB.GetColorandRGB.AddColor.
![Page 743: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/743.jpg)
round real-to-integerfunction
Syntax round(r:real):int
Description
Theroundfunctionisusedtoconvertarealnumbertoaninteger.Theresultisthenearestintegertor.Inthecaseofatie,thenumericallylargervalueisreturned.Forexample,round(3)is3,round(2.85)is3andround(-8.43)is-8.
Seealso thefloorandceilfunctions.
![Page 744: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/744.jpg)
scalar type
Syntax
AscalarTypeisoneof:
(a) standardType %int,real,booleanorstring
(b) enumeratedType (c) subrangeType (d) pointerType (e) char (f) intn (g) natn (h) realn
(i) namedType %Mustnameoneoftheabovetypes
Description
Scalartypesaresometimescalledsimpleorprimitivetypes.Thenon-scalartypesarestrings,sets,arrays,records,unionsandinOOTchar(n).Theyaredefinedusingscalartypes.Scalartypesarepassedbyvaluetoparameters,whilenon-scalarsarepassedbyreference(bypassinganimplicitpointertothenon-scalarvalue).
Description
IncurrentTuringimplementationsscalartypesaredirectlyrepresentedin1,2,4or8bytesinacomputer'smemory.Thisimpliesthattheycanbeefficientlypassedbyvalue.
![Page 745: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/745.jpg)
seek (file)statement
Syntax
AseekStatementisoneof:
(a) seek:fileNumber,filePosition (b) seek:fileNumber,*
Description
Randomaccessofbothsource(ASCIIorEBCDIC)andinternalform(binary)filesisprovidedbytheseekandtellstatements.Theseekstatementrepositionsthespecifiedfilesothatthenextinput/outputoperationwillbeginatthespecifiedpoint(filePosition)inthefile.
ThefileNumbermustspecifyafilethatisopenwithseekcapability.ThefilePositionisanon-negativeintegeroffsetinbytesfromthebeginningofthefile.Usually,thisisanumberreturnedbythetellstatement.(Thefirstpositioninthefileispositionzero.)
Form(b)specifiesthatthenextoperationistobeginatthepositionimmediatelyfollowingthecurrentendofthefile.AfilePositionofzerospecifiesthatthenextoperationistostartatthebeginningofthefile.Seekingtoapositionbeyondthecurrentendofthefileandthenwriting,automaticallyfillstheinterveningpositionswiththeinternalrepresentationofzero.
Example
Thisexampleshowshowtouseseektoappendtotheendofafile.
varemployeeRecord:
record
name:string(30)
pay:int
endrecord
varfileNo:int
open:fileNo,"payroll",write,seek,mod
seek:fileNo,*%Seektotheendofthefile
write:fileNo,employeeRecord
%Thisrecordisaddedtotheendofthefile
![Page 746: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/746.jpg)
Seealsoread,write,open,close,tell,getandputstatements.Anotherexampleuseofseekisgivenwiththeexplanationofthetellstatement.
![Page 747: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/747.jpg)
self pointertocurrentobject
Syntax self
DescriptionTheselffunctionproducesapointertothecurrentobject.Thisfunctioncanbeusedonlyinsideaclassdeclaration.Seeclass.
Example
Enterthecurrentobjectontoalistofdisplayableobjects.Themodulecalleddisplayablehasexportedaprocedurecalledenterwhoseparametertypeispointertoanyclass.SinceselfisapointertoCandCisadescendantofanyclass,itislegaltopassselftodisplayable.enter.
classC
importdisplayable
…
displayable.enter(self)…
…
endC
Details
Itisillegaltocalltheexportedentriesofaclassuntilthecurrentobjecthasbeencompletelyinitialized,so,manycallstothecurrentobjectusingselfwillnotbelegal.
ThenotationtocallexportedsubprogrampofanenclosingclassCorofitsancestorD,isC.porD.p.Callsofthisform,whichcanappearonlywithinclassC,callthesubprograminC(orinDinthecaseofD.p)regardlessoftheobjecttype,orofanyoverriding,orofthestatusofinitialization.
![Page 748: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/748.jpg)
separator betweentokensinaprogram
Description
ATuringprogramismadeupofasequenceoftokens(seetokens),suchasvar,x,:,andint.Thesetokensmayhaveseparatorsbetweenthem.Aseparatorisacomment(seecomment),blank,tab,formfeedoranendofline.
![Page 749: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/749.jpg)
set type
Syntax
AsetTypeis:
setoftypeSpec
Description
Eachvalueofasettypeconsistsofasetofelements.ThetypeSpec,whichisrestrictedtobeingasubrangeoranenumeratedtype,givesthetypeoftheseelements.
Example
ThesmallSettypeisdeclaredsothatitcancontainanyandallofthevalues0,1and2.Variablesisinitializedtobethesetcontaining1and2.
typesmallSet:setof0..2
vars:smallSet:=smallSet(0,1)
…
if2insthen…
Details
Inclassicalmathematics,thesetconsistingof0and1iswrittenas{0,1}.ThisiswritteninTuringusingasetconstructorconsistingofthenameofthesettypefollowedbyaparenthesizedlistofelements,whichinthisexampleissmallInt(0,1).Theemptysetiswritten,forexample,assmallInt().ThefullsetiswrittenassmallInt(all),sosmallInt(all)=smallInt(0,1,2).
Setscanbeassignedasawhole(tosetsofanequivalenttype).Seealsoequivalenceoftypes.
Theoperatorstocombinetwosetsareunion(+),intersection(*),setsubtraction(-),equality(=),inequality(not=),subset(<=),strictsubset(<),superset(>=),strictsuperset(>),andxor("exclusiveor"alsoknownassymmetricdifference).Onlysetswithequivalenttypes(equalboundsontheirindextypes)canbecombinedbytheseoperators.Theoperatorswhichdetermineifanelementis,orisnot,inasetareinandnotin.Forexample,thetesttoseeif2isinsetsiswrittenintheaboveexampleas:2ins.
TheindexTypeofasettypemustcontainatleastoneelement.For
![Page 750: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/750.jpg)
example,therange1..0wouldnotbeallowed.SeealsoindexType.InTuring,setsarelimitedtoatmost31elements.OOTallowsaverylargenumberofelements.
Details
Itisillegaltodeclarean"anonymous"set.Theonlylegaldeclarationforansetisinatypedeclaration.Forexample,thefollowingisnowillegal:
vara:array1..10ofsetof0..3
Giventhatthereisno(easy)wayofgeneratingasetvaluewithoutitbeinganamedtype,thisshouldnotimpactanybutthemostbizarrecode.
Seealso precedenceofoperatorsfortheorderofapplyingsetoperations.
![Page 751: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/751.jpg)
setConstructor
Syntax
AsetConstructoris:
setTypeId(membersOfSet)
Description
Eachvalueofasettypeconsistsofasetofelements.Inclassicalmathematics,thesetconsistingof0and1iswrittenas{0,1}.ThisiswritteninTuringusingasetconstructorconsistingofthenameofthesettype(setTypeId)followedbyaparenthesizedlistofelements.
Example
ThesmallSettypeisdeclaredsothatitcancontainanyandallofthevalues0,1and2.Variablesisinitializedtobethesetcontaining1and2.Theset{0,1}iswritteninthisTuringexampleassmallInt(0,1).
typesmallSet:setof0..2
vars:smallSet:=smallSet(0,1)
…
if2insthen…
Details
TheformofmembersOfSetisoneof:
(a)expn{,expn}%Listofmembersofset
(b)all%Allmemberofindextypeofset
(c)%Nothing,meaningtheemptyset
Theemptysetiswritten,forexample,assmallInt().ThefullsetiswrittenassmallInt(all),sosmallInt(all)=smallInt(0,1,2).Seealsothesettype.
ThesyntaxofsetConstructorasgivenabovehasbeensimplifiedbyignoringthefactthatsettypescanbeexportedfrommodules.Whenasettypeisexportedandusedoutsideofamodule,youmustwritethemodulename,adotandthenthetypename.Forexample,thesetconstructorabovewouldbewrittenasm.smallSet(1,2),wheremisthemodulename.
![Page 752: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/752.jpg)
setpriority procedure
Syntax setpriority(p:nat)
Description
Thesetpriorityprocedureisusedtosetthepriorityofaprocessinaconcurrentprogram.Thisprioritycannotbecountedontoguaranteecriticalaccesstosharedvariables.Asmallervalueofpmeansincreasedspeed.Theargumenttosetprioritymaybelimitedtotherange0to2**15-1.
Seealsogetpriority,forkandmonitor.
SeealsopredefinedunitConcurrency.
![Page 753: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/753.jpg)
setscreen graphicsprocedure
setscreen("graphics:300;100")
Thisprogramoutputsthesquarerootsforthefirst200numbers.Theusercaninspectalltheoutputandprintthevaluesaftertheprogramhasfinishedexecution
setscreen("text")
forvalue:1..200
putvalue:3,"",sqrt(value)
endfor
Thisprogramcreatesawindowwithoutabuttonbaratthetopthatissizedtofitthescreen.Itthendrawsan“X”inredinthewindow.
setscreen("graphics:max;max,nobuttonbar")
drawline(0,0,maxx,maxy,red)
drawline(maxx,0,0,maxy,red)
Syntax setscreen(s:string)
Example
Hereareexampleusesofthesetscreenprocedure.Inmanycases,thesewillappearasthefirststatementoftheprogram.Theycan,however,appearanyplaceinaprogram.
setscreen("graphics")%Entergraphicsmode
setscreen("graphics:400;300")%Changewindowto400x300
setscreen("nocursor")%Turnoffcursor
setscreen("noecho")%Donotechokeys
Description
Thesetscreenstatementisusedtochangethemodeofthescreen,aswellasthewayinwhichTuringdoesinputandoutput.Theparametertosetscreenastring,suchas"graphics".Thestringcontainsoneormoreoptionsseparatedbycommas,suchas"text,noecho".
UsersshouldlookatView.Setinordertofindouttheimplementationspecifieddetailsofsetscreenontheirsystems.
Therearetwoscreenmodes,textandgraphics.Intextmode,outputtothewindowisonlyallowedusingputandget.Attemptingtousegraphicsormovingthecursorusinglocatewillresultinanerror.However,awindowin
![Page 754: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/754.jpg)
Details
textmodewillkeepalltextoutputsenttoit.Anyoutputthatscrollsofftheedgeofthewindowcanbereadbyadjustingthescrollbarsofthewindow.Printingatextoutputwindowprintsalltheoutputsenttothewindow,notjusttheoutputcurrentlyvisibleinthewindow.Programsoftenusewhentheyaredisplayinglargeamountsoftextdatathattheusermaywishtovieworprintlater.Savingthecontentsofatextoutputwindowcreatesatextfilecontainingalltheoutputsenttothewindow.
Ingraphicsmode,aprogramcanusebothputandget,locateandgraphicscommandstosendoutputtothewindow.However,anyoutputthatscrollsoffthewindowislost.Printingthewindowoutputsthecurrentcontentsofthewindow.SavingagraphicsoutputwindowsavesthecurrentcontentsofthewindowasaBMPfile.
Wheretheoptionstosetscreenaremutuallyexclusive,theyarelistedherewiththedefaultunderlined.Herearetheoptions:
"graphics","text",Setsthemodeofthewindowtothegivenmode.Asizecanforthewindowcanbespecifiedatthesametime.Ifthewindowmodeorsizechanges,thenthewindowwillbecleared.
Tospecifythesizeofawindowingraphicsmode,thegraphicscanhaveamodifierintheform"graphics:<width>;<height>".Thissetsthewindowtobe<width>pixelsby<height>pixelsinsize.Themaximumsizeofawindowisthesizeofthescreen.
Tospecifythesizeofawindowintextmode,thetextcanhaveamodifierintheform"text:<rows>;<columns>".Thissetsthewindowtobe<rowslinesinheightby<columns>charactersinwidth.Themaximumsizeofawindowisthesizeofthescreen.
Tosetawindowtothemaximumsizeavailableonthescreen,you"max"forthe<width>,<height>,<rows>or<columns>parameters.
"cursor","nocursor"Causesthecursortobeshown(orhidden).Thecursoronlyappearswhentheprogramiswaitingforkeyboardinputfromtheuser.
"echo","noecho"Causes(orsuppresses)echoingofcharactersthataretyped.Echoingiscommonlyturnedoffininteractiveprogramstokeeptypedcharactersfrombeingechoedatinappropriateplacesonthescreen.
![Page 755: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/755.jpg)
"nooffscreenonly","offscreenonly"Causesor(suppresses)outputfrombeingsenttothevisiblewindow.Whentheoffscreenonlyoptionisactive,anytextandgraphicsoutputisdrawntotheoffscreenbufferthatismaintainedforeveryRunwindowbutnotdrawntothescreen.View.Updateisthenusedtocopytheentirecontentsoftheoffscreenbuffertothewindow.Byallowingnumerousdrawingcommandstobesenttotheoffscreenbufferandthenupdatingthewindowatonetime,itispossibletogetsmootheranimation.
"msdos","nomsdos"CausesthewindowtousetheMS-DOScharacterset(withlinedrawingcharacters)insteadoftheWindowsANSIcharacterset.The"nomsdos"optioncausesthewindowtousetheWindowsANSIcharacterset.Notethatthe"msdos"optiononlyworksiftheWindowsfont(usuallyCourierNew)supportsit.
"buttonbar","nobuttonbar"Causesor(suppresses)thedisplayofabuttonbaratthetopoftheoutputwindowwhichallowstheusertoeasilystopprogramexecutionorsaveandprinttheoutputwindow.
Example Thisprogramcreatesagraphicswindowthatis300pixelsby100pixels.
Seealso
theDrawmodule,thedraw…subprogramsandtheView.Updateprocedurefordoingsmoothanimation.SeealsoView.Setforfurthersetscreenincludingpositioningtheoutputwindowonthescreen.
![Page 756: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/756.jpg)
shl shiftleftoperator
Syntax AshlB
Description
Theshl(shiftleft)operatorproducesthevalueofAshiftedBbitstotheleft.BothAandBmustbenon-negativeintegers(naturalnumbers).
Example
Assignthebase2value11toiandthenshiftitleftby2placesandassigntheresultingbase2value1100toj.
vari,j:int
i:=2#11%2#11=3(base10)
j:=ishl2%jbecomes2#1100=12(base10)
Details
Theshloperatorisdefinedmathematically(inamachine-independentway)asfollows:AshlB=A*(2**B).Overflowoccurswhentheresultexceedsthemaximumvalueofthenat4(4-bytenaturalnumber)type.
ValueAcanbeofanyintegertype(aslongasitisnon-negative)oranynaturalnumbertype.
Theshloperatorhasthesameprecedenceasthe*operator.
Seealso
shr(shiftright),or,andandxor,whichalsoarebitmanipulationoperatorsthatactonnon-negativevalues.SeealsoexplicitIntegerConstantwhichdescribesvaluessuchas2#1100.
![Page 757: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/757.jpg)
shr shiftrightoperator
Syntax AshrB
Description
Theshr(shiftright)operatorproducesthevalueofAshiftedBbitstotheright.BothAandBmustbenon-negativeintegers(naturalnumbers).
Example
Assignthebase2value1101toiandthenshiftitrightby2placesandassigntheresultingbase2value11toj.
vari,j:int
i:=2#1101%2#1101=13(base10)
j:=ishr2%jbecomes2#11=3(base10)
Details
Theshroperatorisdefinedmathematically(inamachine-independentway)asfollows:AshrB=Adiv2**B.
ValueAcanbeofanyintegertype(aslongasitisnon-negative)oranynaturalnumbertype.
Theshroperatorhasthesameprecedenceasthe*operator.
Seealso
shl(shiftleft),or,andandxor,whichalsoarebitmanipulationoperatorsthatactonnon-negativevalues.SeealsoexplicitIntegerConstantwhichdescribesvaluessuchas2#1101.
![Page 758: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/758.jpg)
sign function
Syntax sign(r:real):-1..1
Description
Thesignfunctionisusedtodeterminewhetheranumberispositive,zeroornegative.Itreturns1ifr>0,0ifr=0,and-1ifr<0.Forexample,sign(5)is1andsign(-23)is-1.
Example
Thisprogramreadsinnumbersanddeterminesiftheyarepositive,zeroornegative:
varx:real
getx
casesign(x)of
label1:put"Positive"
label0:put"Zero"
label-1:put"Negative"
endcase
Seealso SeealsopredefinedunitMath.
![Page 759: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/759.jpg)
signal wakeupaprocessstatement
Syntax
AsignalStatementis:
signalvariableReference
Description
Asignalstatementisusedinaconcurrentprogramtowakeupaprocessthatisblocked(waitingonaconditionvariable).Thestatementcanonlybeusedinsideamonitor(aspecialkindofmodulethathandlesconcurrency).Asignalstatementoperatesonaconditionvariable(thevariableReference),whichisessentiallyaqueueofsleepingprocesses.Seeconditionforanexampleofasignalstatement.
Details
Asignalstatementwakesuponeprocessthatisdoingawaitonthespecifiedconditionqueue,ifsuchaprocessexists.Iftheconditionisdeferred(ortimeout;seecondition),thesignalercontinuesinthemonitor,andtheawakenedprocessisallowedtocontinueonlywhenthemonitorbecomesinactive.Asignaltoanimmediate(non-deferred)conditioncausesthesignaledprocesstobeginrunninginthemonitorimmediately.Thesignalingprocesswaitstore-enterthemonitorwhenthemonitorbecomesinactive.
Seealsoconditionandwait.Seealsomonitorandfork.Seealsoempty.Seealsopause.
![Page 760: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/760.jpg)
simutime simulatedtimefunction
Syntax simutime:int
DescriptionThesimutimefunctionreturnsthenumberofsimulatedtimeunitsthathavepassedsinceprogramexecutionbegan.
Details
Simulatedtimeonlypasseswhenallprocessareeitherpausedorwaiting.ThissimulatesthefactthatCPUtimeiseffectivelyinfinitelyfastwhencomparedto"pause"time.
Example
Thisprintsoutthesimulatedtimepassingbetweentwoprocesses.Thiswillprintout3,5,6,9,10,12,15,15,18,20,21,…
processp(t:int)
loop
pauset
putsimutime
endloop
endp
forkp(3)
forkp(5)
Execute
Seealso SeealsopredefinedunitConcurrency.
![Page 761: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/761.jpg)
sin sinefunction(radians)
Syntax sin(r:real):real
DescriptionThesinfunctionisusedtofindthesineofananglegiveninradians.Forexample,sin(0)is0.
Example
Thisprogramprintsoutthesineofp/6,2p/6,3p/6,upto12p/6radians.
constpi:=3.14159
fori:1..12
constangle:=i*pi/6
put"Sinof",angle,"is",sin(angle)
endfor
Execute
Seealso
thecosandtanfunctionsforcalculatingcosineandtangent.
thesindfunctionwhichfindsthesineofananglegivenindegrees.(2pradiansarethesameas360degrees.)
SeealsopredefinedunitMath.
![Page 762: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/762.jpg)
sind sinefunction(degrees)
Syntax sind(r:real):real
DescriptionThesindfunctionisusedtofindthesineofananglegivenindegrees.Forexample,sind(0)is0.
Example
Thisprogramprintsoutthesineof30,60,90,upto360degrees.
fori:1..12
constangle:=i*30
put"Sinof",angle,"is",sind(angle)
endfor
Execute
Seealso
thecosdandtandfunctionsforcalculatingcosineandtangent.
thesinfunctionwhichfindsthesineofananglegiveninradians.(2pradiansarethesameas360degrees.)
SeealsopredefinedunitMath.
![Page 763: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/763.jpg)
sizeof sizeofatype
Dirty
Syntax sizeof(typeNameOrVariableReference)
Description
Thesizeofattributeisusedtofindthenumberofbytesusedtorepresentthetypeorvariable.Thisisimplementation-dependent(dirty).
Example
Thesizeofint2andnat2is2.
vari:int2
constnat2size:=sizeof(i)%sizeis2
Details
ThetypeNameOrVariableReferencemustbethenameofauser-definedtype,avariablereference,abasictype(suchasreal),oraconstant.
Inprinciple,sizeofreturnsthenumberofstorageunitswhichwouldnotnecessarilybe8-bitbytes.Forexample,insomeoldermachines,suchastheCDC6000series,thestorageunitsare60bitwords.However,almostallmoderncomputersuse8-bitbytessothesearetheunitsofsizeof.
Bewarethatsizesmayreflectalignmentconstraintsintheunderlyingcomputer.Forexample,stringsizesmayberoundeduptoevenvalues(2-bytewordalignments).
Seealso
theindirectionoperator@,cheat,explicitIntegerConstant(howtowritehexadecimalconstants),andpointers(inparticularuncheckedpointers).Seealsoaddr,whichreturnstheaddressofavariable.
![Page 764: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/764.jpg)
sizepic graphicsfunction
Syntax sizepic(x1,y1,x2,y2:int):int
Description
Thesizepicfunctionisusedtodeterminethesizebufferneededtorecordapicturefromthescreen(seedescriptionoftakepic).Thisgivestheminimumnumberofelementsoftheintarrayusedbytakepic.Thebufferisusedbydrawpictomakecopiesofthepictureonthescreen.
Example
Thisprogramoutputsthesizeofarrayneededtoholdapicturewithleftbottomcorneratx=10,y=20andrighttopcorneratx=50,y=60.
setscreen("graphics")
…
put"Thesizeofthearrayneedstobe",
sizepic(10,20,50,60)
Details
Seetakepicforanexampleoftheuseofsizepicandforfurtherinformationaboutbuffersfordrawingpictures.
Thescreenshouldbeina"graphics"mode.Seethesetscreenprocedurefordetails.Ifthescreenisnotina"graphics"mode,itwillautomaticallybesetto"graphics"mode.
Seealso
drawpic.Seealsosetscreen,maxx,maxy,drawdot,drawline,drawbox,anddrawoval.
SeealsopredefinedunitPic.
![Page 765: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/765.jpg)
skip usedingetstatement
Syntax skip
Description
Usingskipasaninputiteminagetstatementcausesthecurrentinputtobeskippeduntilanon-whitespacetokenisencountered.Whitespaceincludesallblanks,tabs,formfeedsandnewlines.
Example
Theskipinputitemwasoriginallyintendedtobeusedtoseeifmoreinputexistsinaninputfile.ThisusehasbeenlargelymaderedundantbyachangeintheTuringlanguage.ThenewversionofTuringreadsatoken,asingetsbutnotingets:*orgets:3,andautomaticallyskipsanywhitespacefollowingtheinputvalue,butwillnotgobeyondthebeginningofthenextinputline.Originallythisautomaticskippingdidnottakeplace,soskipwasrequired.Theformofaninputloopthatusedskipwasasfollows:
loop
getskip%Thisislinenowredundant
exitwheneof
get…
…
endloop
Details
Theskipbypassesallwhitespacecharactersincludinganytrailingnewlinesandblanklines.Byskippingthesecharacters,atrueend-of-fileconditionwasdetected.Otherwise,theend-of-filecouldhavebeenhiddenbyanywhitespacefollowingthelastinputitem.WiththechangeinTuring,thelinegetskipisnolongerneeded(althoughitstillworkscorrectly).
Example
Theskipcanalsobeusedtocorrectlyidentifythestartofalongstring(usuallytobereadinlineorcountedmode).Here,itskipsthewhitespaceandtrailingnewlineasfollows:
vari:int
varline:string
loop
geti,skip,line:*
…
![Page 766: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/766.jpg)
endloop
Details
Thefirstiteminthegetstatementreadsanintegerbyskippingallwhitespaceandreadingdigitsuntilwhitespaceisencountered.Theinputstreamisthenleftwiththewhitespaceasthenextinputcharacter.Theskipthenskipspastthewhitespace,effectivelybeginningthenextinputatthenextnon-whitespacecharacter.Thistruncatesleadingblanksandhasanother,potentiallymoreimportant,effect.Iftheintegeristhelastdataonalineandthestringisonafollowingline,theskipisnecessarytoavoidsettinglinetoanullstringvalue.
Seealso getstatementandloopstatement.
![Page 767: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/767.jpg)
skip usedinputstatement
Syntax skip
DescriptionUsingskipasanoutputiteminaputstatementcausesthecurrentoutputlinetobeendedandanewlinetobestarted.
Example
Thisexample,TobeisoutputononelineandOrnottobeonthenext.
put"Tobe",skip,"Ornottobe"
Details Usingskipisequivalenttooutputtingthenewlinecharacter"\n".
![Page 768: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/768.jpg)
sound statement
Syntax sound(frequency,duration:int)
Description
Thesoundprocedureisusedtocausethecomputertosoundanoteofagivenfrequencyforagiventime.Thefrequencyisincyclespersecond(Hertz).Thetimedurationisinmilliseconds.Forexample,middleAonapianois440Hertz,sosound(440,1000)playsmiddleAforonesecond.
Example
Thisprogramsoundsthefrequencies100,200upto1000eachforhalfasecond.
fori:1..10
puti
sound(100*i,500)%Soundnotefor1/2second
endfor
Details
OnIBMPCcompatibles,thehardwareresolutionofdurationisinunitsof55milliseconds.Forexample,sound(440,500)willdelaytheprogrambyabouthalfasecond,butmaybeoffbyasmuchas55milliseconds.
Details ThesoundproceduredoesnotcurrentlyworkunderMacOOT.
Seealso
playstatement,whichplaysnotesbasedonmusicalnotation.Forexample,play("8C")playsaneighthnoteofmiddleC.Seealsothedelay,clock,sysclock,wallclock,timeanddatestatements.
SeealsopredefinedunitMusic.
![Page 769: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/769.jpg)
Sprite
Description
SpritesareawayofdoinganimationinTuringbypassingthePicmodule.Aspriteisessentiallyapicturewithaspecificlocationand"depth".YoucreateaspritebycallingSprite.NewwithapicIDreceivedfromPic.New.YoucanthenmovethespritearoundbycallingSprite.SetPosition.Whenyouarefinishedwiththesprite,youcallSprite.Free.
Notethatspritesworkbestwhentheyaremoderatelysmall.Ifyouhavelargesprites,youwillcontinuetohaveflashing.
AllsubprogramsintheSpriteunitareexportedqualified(andthusmustbeprefacedwith"Sprite.").
EntryPoints
New Createsanewspritefromapicture.Free Disposesofaspriteandfreeupitsmemory.
SetHeight
Setstheheightofasprite.Spriteswithagreaterheightappearabovespriteswithalesserheight.Thebackgroundisconsideredheight0.Theheightmaybenegative.
SetPosition Setsthelocationofthesprite.Canspecifythecenterofthespriteorthelower-leftcorner.
SetFrameRate Setsthemaximumnumberoftimesasecondthespriteswillbemovedonscreen.
ChangePic Changesthepictureassociatedwithasprite.
Animate Changesthelocationandthepictureassociatedwithasprite.Usedforanimatingamovingchangingimage.
Show Showsapreviouslyhiddensprite.Hide Hidesavisiblesprite.
![Page 770: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/770.jpg)
Sprite.Animate PartofSpritemodule
SyntaxSprite.Animate(spriteID,picID,x,y:int,centered:boolean)
Description
MovesthespritespecifiedbyspriteIDtothelocationspecifiedby(true,thenthespriteiscenteredon(x,y).Otherwise(x,y)specifiesthelower-leftcornerofthesprite.Atthesametime,itchangesthepictureassociatedwiththesprite.
AsimpleexampleoftheSprite.Animateprocedurewouldbeofapictureassociatedwiththespritewouldconstantlychangeasthefigurewaswalking.Atthesametime,thelocationofthefigurewouldalsochange.
Example
HereisaprogramthatloadsaseriesofimagesfromananimatedGIFfilecalled"mypic.gif".ItworksbyloadingtheimagesfromtheGIFfileintoanarray(seePic.FileNewFramesformoreinformation)andthendisplaystheimagessequentiallyonthescreen,movingtheimageeightpixelseachtime.
varnumFrames:=Pic.Frames("mypic.gif")
%Loadthepicture
vardelayTime:int
varpics:array1..numFramesofint
Pic.FileNewFrames("mypic.gif",pics,delayTime)
varsprite:int
sprite:=Sprite.New(pics(1))
Sprite.SetPosition(sprite,0,100,false)
Sprite.Show(sprite)
forx:8..maxxby8
Sprite.Animate(sprite,pics((xdiv8)mod
delay(40)%Stopspritefrommovingtooquickly
endfor
Sprite.Free(sprite)
Execute
![Page 771: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/771.jpg)
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingSprite.AnimateAnimate.
Seealso Sprite.New,Sprite.SetPositionandSprite.ChangePic.
![Page 772: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/772.jpg)
Sprite.ChangePic PartofSpritemodule
Syntax Sprite.ChangePic(spriteID,picID:int)
Description
Changesthepictureassociatedwithaspritewhilemaintainingthespritesheightandvisibilitystatus.AtypicaluseSprite.ChangePicwouldbetoanimateaspritethatstaysinposition.
Example
HereisaprogramthattthatloadssiximagesfromfilesPic1.bmpthroughPic6.bmpandthendisplaysthemsequentiallyinthecenterofthescreen.
varpics:array0..5ofint
varsprite:int
fori:1..6
pics(i1):=Pic.FileNew("Pic"+intstr(
ifError.Lastnot=0then
put"Errorloadingimage:",Error.LastMsg
return
endif
endfor
figure:=Sprite.New(pics(0))
Sprite.SetPosition(sprite,maxxdiv2,maxydiv
Sprite.Show(sprite)
fori:1..100
Sprite.ChangePic(sprite,pics(imod6))
endfor
Sprite.Free(sprite)
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingSprite.ChangePic,notbycallingChangePic.
Seealso Sprite.New.
![Page 773: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/773.jpg)
Sprite.Free PartofSpritemodule
Syntax Sprite.Free(spriteID:int)
DescriptionDestroysthespriteandfreesupthememorythespriteused.ItisanerrortousethespriteIDafterthespritehasbeenfreed.
Example SeeSprite.AnimateforanexampleofSprite.Free.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingSprite.Free,notbycallingFree.
Seealso Sprite.New.
![Page 774: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/774.jpg)
Sprite.Hide PartofSpritemodule
Syntax Sprite.Hide(spriteID:int)
DescriptionHidesapreviouslyvisiblesprite.Sprite.Hidehasnoeffectifthespriteisalreadyinvisible.
Example
Thefollowingprogramanimatesfourballsonthescreen.Whentheballsareclosetoeachotherortoawall,theyappear,otherwisetheyarehidden.
varpic,sprite,x,y,dx,dy,radius:array1..6
varvisible:array1..6ofboolean
setscreen("nocursor")
%Createallthesprites.
fori:1..6
radius(i):=Rand.Int(10,25)
Draw.FillOval(25,25,radius(i),radius(i
Font.Draw(intstr(i),20,20,0,black)
pic(i):=Pic.New(0,0,50,50)
Draw.FillBox(0,0,50,50,0)
x(i):=Rand.Int(radius(i),maxx‹radius
y(i):=Rand.Int(radius(i),maxy‹radius
dx(i):=Rand.Int(3,3)
dy(i):=Rand.Int(3,3)
sprite(i):=Sprite.New(pic(i))
Sprite.SetPosition(sprite(i),x(i),y(i),
Sprite.SetHeight(sprite(i),i)
visible(i):=false
endfor
%Nowmoveallthespritesaroundthescreen.
loop
fori:1..6
ifx(i)+dx(i)<radius(i)or
x(i)+dx(i)>maxxradius(i
dx(i):=dx(i)
endif
x(i):=x(i)+dx(i)
ify(i)+dy(i)<radius(i)or
y(i)+dx(i)>maxyradius(i
dy(i):=dy(i)
endif
y(i):=y(i)+dy(i)
endfor
![Page 775: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/775.jpg)
fori:1..6
varnear:boolean:=false
if(x(i)<50)or(x(i)>maxx50)or
(y(i)<50)or(y(i)>maxy50)
near:=true
endif
ifnotnearthen
forj:1..6
ifinot=jthen
ifsqrt((x(i)‹x(j))**2+
(y(i)‹y(j))**2)<100
near:=true
exit
endif
endif
endfor
endif
ifnearandnotvisible(i)then
Sprite.Show(sprite(i))
visible(i):=true
elsifnotnearandvisible(i)then
Sprite.Hide(sprite(i))
visible(i):=false
endif
Sprite.SetPosition(sprite(i),x(i),y
endfor
Time.Delay(40)
exitwhenhasch
endloop
fori:1..6
Sprite.Free(sprite(i))
endfor
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingSprite.HidecallingHide.
Seealso Sprite.Show.
![Page 776: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/776.jpg)
Sprite.New PartofSpritemodule
Syntax Sprite.New(picID:int):int
Description
CreatesanewspritefromapicturespecifiedbypicID.ThespritestartsinvisibleandshouldbegivenadepthusingSprite.SetHeightandaposition,givenSprite.SetPositionbeforebeingmadevisibleusingSprite.Show.Whenyouarefinishedusingthesprite,thespriteshouldbefreedusingSprite.Free.
Spritesworkbestwhentheyareofmoderatesize.Largespriteswillcauseflashingwhenmovedacrossthescreen.
Anythingthatisiscolor0inthepicturewillnotappearwhenthespriteisdrawn.Inotherwords,color0istransparent.(Thisisbydefault.Youcansetthetransparentcolorforaspritebysettingthepicture'stransparentcolourusingPic.SetTransparentColor.
Example SeeSprite.AnimateforanexampleofSprite.New.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingSprite.New,notbycallingNew.
SeealsoSprite.SetHeight,Sprite.SetPosition,Sprite.ShowandSprite.Free.
![Page 777: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/777.jpg)
Sprite.SetFrameRate PartofSpritemodule
Syntax Sprite.SetFrameRate(framesPerSec:int)
Description
Specifiesthemaximumnumberoftimespersecondthatspritepositionswillbechangedonthescreen.Thehigherthenumber,thesmoothertheanimationwillappear(andthemoreprocessortimewillbeusedtoperformtheanimation).
Details
Whenyouchangethepositionorappearanceofasprite,Turingdoesnotupdatethewindowimmediately.Instead,itwaitsacertainlengthoftimeandthenupdatesallspritesthathavemovedsincethelastupdate.Thisallowsforrelativelysmoothanimation.
ThismeansthatyouhaveasimpleloopthatcallsSprite.SetPosition200timesasecond,theimageofthespriteonthescreenisstillonlybeingmoved(bydefault)33timesasecond.
YoucanspecifyhowmanytimesasecondTuringcheckstoseeifaspritehasmovedbyusingtheSprite.SetFrameRateprocedure.Ratesof5-10willmakethemovementofthespritesseemverychoppy.Ratesof100aremoreorlesscompletelysmooth(themaximumis120)andmostCRT'swillnotnoticeanydifferenceafter60.Thedefaultrateis33framespersecond.Youshouldnotethatifyousettheratehigherthanyourcomputercanhandle,everyotherpartofyourprogramwillslowdownasTuringwillbecheckingforspritemovementratherthanexecutingyourprogram.
AmodernPC(2+GHzwithadecentgraphicscard)canprobablyhandleaframerateof60+,dependingonthenumberofsprites.APentiumIIIshouldprobablyusethedefaultrate.Slowermachinesshouldprobablyusealowerrate(around20).Experimentationisthebestwaytodeterminetheidealframerate.
Status
Exportedqualified.
Thismeansthatyoucanonlycallthefunctionbycalling
![Page 778: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/778.jpg)
Sprite.SetFrameRate,notbycallingSetFrameRate.
![Page 779: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/779.jpg)
Sprite.SetHeight PartofSpritemodule
Syntax Sprite.SetHeight(spriteID,newHeight:int)
Description
SetstheheightofthespritespecifiedbyspriteIDtothevaluespecifiedbynewHeight.
Theheightofaspritedetermineswhichspriteappearsaboveanotherwhentheyoverlap.The"higher"sprite(theonewiththegreaterheight)willappearontopofthespritewiththelowerheight,evenifthelowerspriteisdrawnsecond.
Thebackground(i.e.anynon-sprite)isconsideredtobeinheight0.Spriteswithanegativeheightwillappear"behind"thebackground.Notethatiftwospriteshavethesameheight,theonedrawnlastwillappearabovethefirstone.
Example SeeSprite.HideforanexampleofSprite.SetHeight.
Details
Itshouldbenotedthatalotmorecomputationmustbedonetodisplayspriteswithanegativeheight.Ifyouareonaslowermachineandperformanceisnotsufficient,considertryingtoeliminatetheuseofspritesmovingbehindthebackground.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingSprite.SetPosition,notbycallingSetPosition.
Seealso Sprite.New.
![Page 780: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/780.jpg)
Sprite.SetPosition PartofSpritemodule
SyntaxSprite.SetPosition(spriteID,x,y:int,centered:boolean)
Description
MovesthespritespecifiedbyspriteIDtothelocationspecifiedby(x,y).Ifcenteredistrue,thenthespriteiscenteredon(x,y).Otherwise(x,y)specifiesthelower-leftcornerofthesprite.
Example SeeSprite.HideforanexampleofSprite.SetPosition.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingSprite.SetPosition,notbycallingSetPosition.
Seealso Sprite.New.
![Page 781: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/781.jpg)
Sprite.Show PartofSpritemodule
Syntax Sprite.Show(spriteID:int)
DescriptionDisplaysapreviouslyhiddensprite.Sprite.Showhasnoeffectifthespriteisalreadyvisible.
Example SeeSprite.HideforanexampleofSprite.Show.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingSprite.Show,notbycallingShow.
Seealso Sprite.Hide.
![Page 782: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/782.jpg)
sqrt squarerootfunction
Syntax sqrt(r:real):real
DescriptionThesqrtfunctionisusedtofindthesquarerootofanumber.Forexample,sqrt(4)is2.
Example
Thisprogramprintsoutthesquarerootsof1,2,3,…upto100.
fori:1..100
put"Squarerootof",i,"is",sqrt(i)
endfor
Details
Itisillegaltotrytotakethesquarerootofanegativenumber.Theresultofsqrtisalwayspositiveorzero.
Theoppositeofasquarerootisthesquare.Forexample,thesquareofxiswrittenisx**2.
Seealso SeealsopredefinedunitMath.
![Page 783: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/783.jpg)
standardType
Syntax
AstandardTypeisoneof:
(a) int (b) real
(c)string[(maximumLength)]
(d) boolean
(e) nat %naturalnumber
(f) intn %n-byteinteger(n=1,2,4)
(g) natn %n-bytenatural(n=1,2,4)
(h) realn %n-bytereal(n=4,8)
(i) char %singlecharacter
(j) char(n) %ncharacters
DescriptionThestandardtypescanbeusedthroughoutaprogram.Theyshouldnotbeincludedinanimportlist.
Seealsoint,real,stringandboolean.Seealsonat,intn,natn,realn,char,char(n)
![Page 784: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/784.jpg)
statement
Syntax
Astatementisoneof:
(a) assignmentStatement %variableReference:=expn
(b) openStatement %open… (c) closeStatement %close… (d) putStatement %put… (e) getStatement %get… (f) readStatement %read… (g) writeStatement %write… (h) seekStatement %seek… (i) tellStatement %tell… (j) forStatement %for…endfor
(k) loopStatement %loop…endloop
(l) exit[whentrueFalseExpn] (m) ifStatement %if…endif
(n) caseStatement %case…endcase
(o) asserttrueFalseExpn (p) begin statementsAndDeclarations end
(q) procedureCall %procedureId[(parameters)]
(r) return (s) resultexpn
![Page 785: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/785.jpg)
(t) new[collectionId,]pointerVariableReference
(u) free[collectionId,]pointerVariableReference
(v) tagunionVariableReference,expn
(w) forkStatement %fork… (x) signalvariableReference
(y) waitvariableReference[,expn]
(z) pauseexpn
(aa) quit[guiltyParty][:quitReason] (bb) unchecked (cc) checked
Description
Astatement(orcommand)causesaparticularaction,forexample,theputStatement:
put"Hello"
outputsHello.Seethedescriptionsoftheindividualstatementsforexplanationsoftheiractions.Eachstatementcanoptionallybyfollowedbyasemicolon(;).
Examplewidth:=24%Assignmentstatement
put"Helloworld"%Putstatement
exitwheni=100%Exitstatement
assertwidth<320%Assertstatement
Details
Youcanusearesultstatementonlyinafunction.Youcanuseareturnstatementonlytoterminateaprocedureorthemainprogram(butnottoterminatetheinitializationofamodule).Seealsoresultandreturn.
![Page 786: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/786.jpg)
Thereareanumberofpredefinedprocedures,suchasdrawline,whicharenotlistedasstatementsabove.Theseareconsideredprocedurecalls,whichisoneformofstatement.
![Page 787: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/787.jpg)
statementsAndDeclarations
Syntax
StatementsAndDeclarationsare:
{statementOrDeclaration}
Description
StatementsAndDeclarationsarealistofstatementsanddeclarations.Forexample,aTuringprogramconsistsofalistofstatementsanddeclarations.Thebodyofaprocedureisalistofstatementsanddeclarations.
EachstatementOrDeclarationisoneof:
(a)statement
(b)declaration
Seealsostatementanddeclaration.
Example
ThislistofstatementsanddeclarationsisaTuringprogramthatoutputsHelloFrank.
varname:string
name:="Frank"
put"Hello",name
![Page 788: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/788.jpg)
Str
Description
Thisunitcontainsthepredefinedconstantsformanipulatingstrings.
SeveralroutinesintheStrmoduleareexportedunqualified.
EntryPoints
Lower Convertastringtolowercase.Upper Convertastringtouppercase.Trim Removeleadingandtrailingblanks.index Findsaspecifiedstringinanotherstring.length Returnsthelengthofastring.
repeat Createsastringbyrepeatingaspecifiedstringanumberoftimes.
![Page 789: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/789.jpg)
Str.Lower PartofStrmodule
Syntax Str.Lower(s:string):string
Description
TheStr.Lowerfunctiontakesthestringsandreturnsastringinwhichalltheuppercaselettersareconvertedtolowercase.Forexample,Str.Lower("ABC123def")returns"abc123def".
Example
Thisprogramobtainslinesoftextfromtheuserandoutputsthelinesconvertedtolowercase.
varline:string
loop
put"Enteralineoftext(emptytoquit):"..
getline:*
exitwhenline=""
put"Thelowercaseversion:",Str.Lower(line
endloop
Execute
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingStr.Lower,notbycallingLower.
Seealso Str.UpperandStr.Trim.
![Page 790: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/790.jpg)
Str.Trim PartofStrmodule
Syntax Str.Trim(str:string):string
Description
TheStr.Trimfunctiontakesthestringstrandreturnsastringinalltheleadingandtrailingspaces(thespacesatthebeginningandtheend)aredeleted.Forexample,Str.Trim("Thisisatest")returns"Thisisatest".Ifstronlyhasspacesinit,thenStr.Trimwillreturnanemptystring.
Example
Thisprogramobtainsinputfromtheuseruntiltheuserentersalinewithnon-whitespacecharactersinit.
varline:string
loop
put"Enteranon-emptylineoftext:"..
getline:*
exitwhenStr.Trim(line)not=""
endloop
put"Youentered",line
Execute
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingStr.Trim,notbycallingTrim.
Seealso Str.LowerandStr.Upper.
![Page 791: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/791.jpg)
Str.Upper PartofStrmodule
Syntax Str.Upper(s:string):string
Description
TheStr.Upperfunctiontakesthestringsandreturnsastringinwhichallthelowercaselettersareconvertedtouppercase.Forexample,Str.Upper("ABC123def")returns"ABC123DEF".
Example
Thisprogramobtainslinesoftextfromtheuserandoutputsthelinesconvertedtouppercase.
varline:string
loop
put"Enteralineoftext(emptytoquit):"..
getline:*
exitwhenline=""
put"Theuppercaseversion:",Str.Upper(line
endloop
Execute
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingStr.Upper,notbycallingUpper.
Seealso Str.LowerandStr.Trim.
![Page 792: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/792.jpg)
Stream
Description
ThisunitcontainsthepredefinedsubprogramsthatdealwithI/Ostreams.ThebasicI/OinTuringisdonewithI/Ostatements.However,extrafunctionsareallpartoftheStreamunit.
AllroutinesintheStreamunitareexportedqualified(andthusmustbeprefacedwith"Stream."),withtheexceptionofeofwhichispartofthelanguagebutconceptuallypartofthisunitandisconsideredtobeexportedunqualified.
EntryPoints
eof* Determinesiftheendoffilehasbeenreached.Flush Flushesaspecifiedstream.FlushAll Flushesallopenoutputstreams.
*Partofthelanguage,conceptuallypartoftheStreamunit.
![Page 793: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/793.jpg)
Stream.eof PartofStreammodule
Syntax eof(streamNumber:int):boolean
Description
Theeof(endoffile)functionisusedtodetermineifthereisanymoreinput.Itreturnstruewhentherearenomorecharacterstoberead.Theparameteranditsparenthesesareomittedwhenreferringtothestandardinput(usuallythisisthekeyboard);otherwisetheparameterspecifiesthenumberofastream.Thestreamnumberhasbeendetermined(inmostcases)byanopenstatement.
Example
Thisprogramreadsandoutputsallthelinesinthefilecalled"info".
varline:string
varfileNumber:int
open:fileNumber,"info",get
loop
exitwheneof(fileNumber)
get:fileNumber,line:*
putline
endloop
Details
Seealsothedescriptionofthegetstatement,whichgivesmoreexamplesoftheuseofeof.Seealsotheopenandreadstatements.
Whentheinputisfromthekeyboard,theusercansignalend-of-filebytypingcontrol-ZonaPC(orcontrol-DonUNIX).Ifaprogramtestsforeofonthekeyboard,andtheuserhasnottypedcontrol-Z(orcontrol-D)andtheuserhastypednocharactersbeyondthosethathavebeenread,theprogrammustwaituntilthenextcharacteristyped.Oncethischaracteristyped,theprogramknowswhetheritisattheendoftheinput,andreturnsthecorrespondingtrueorfalsevalueforeof.
Status
PartofthelanguageandonlyconceptuallypartoftheStreamunit.
![Page 794: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/794.jpg)
Thismeansthatyoucanonlycallthefunctionbycallingeof,notbycallingStream.eof.
![Page 795: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/795.jpg)
Stream.Flush PartofStreammodule
Syntax Stream.Flush(streamNumber:int)
DescriptionTheStream.FlushprocedureisusedtoflushanybufferedoutputassociatedwiththestreamNumberparameter.
Details
Turingautomaticallyflushesanybufferedoutputwhenastreamisclosed.Turingalsoautomaticallyclosesanyopenfileswhenexecutionisterminated.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingStream.Flush,notbycallingFlush.
![Page 796: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/796.jpg)
Stream.FlushAll PartofStreammodule
Syntax Stream.FlushAll
DescriptionTheStream.FlushAllprocedureisusedtoflushanybufferedoutputinanyopenfile.
Details
Turingautomaticallyflushesanybufferedoutputwhenastreamisclosed.Turingalsoautomaticallyclosesanyopenfileswhenexecutionisterminated.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingStream.FlushAll,notbycallingFlushAll.
![Page 797: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/797.jpg)
string type
Syntax
AstringTypeis:
string[(maximumLength)]
Description
EachvariablewhosetypeisastringTypecancontainasequence(astring)ofcharacters.ThelengthofthissequencemustnotexceedthestringType'smaximumlength.
Examplevarname:string
name:="Nancy"
varlicenceNumber:string(6)
licenceNumber:="175AJN"
Details
Stringscanbeassignedandtheycanbecomparedforbothequalityandforordering.Seealsostringcomparisonandassignmentstatement.
Stringscanbecatenated(joinedtogether)usingthe+operatorandseparatedintosubstrings.Seecatenationandsubstring.Stringfunctionsareprovidedtofindthelengthofastring,tofindwhereonestringappearsinsideanother,andtomakerepeatedcopiesofastringalljoinedtogether.Seelength,index,andrepeat.
Astringtypewrittenwithoutamaximumlengthislimitedtoholdingamaximumof255characters.
ThemaximumLengthofastring,ifgivenasapartofthetype,mustbeknownatcompiletime,andmustbeatleast1andatmost255.Themaximumlengthofastringisgivenbyupper,forexample,upper(licenceNumber)is6.Seealsoupper.
Inthedeclarationofastringthatisavarformalparameterofaprocedureorfunction,themaximumLengthcanbewrittenasanasterisk(*).Here,themaximumlengthistakentobethatofthecorrespondingactualparameter,asin:
![Page 798: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/798.jpg)
proceduredeblank(vars:string(*)).
Thestarcanalsobeusedwhentheparameterisanarrayofstrings.
SeealsoexplicitStringConstantsforexactrulesforwritingstringvaluessuchas"Nancy".Seealsochar(n)andchartypes.
![Page 799: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/799.jpg)
string comparison
Syntax
AstringComparisonisoneof:
(a) stringExpn=stringExpn (b) stringExpnnot=stringExpn (c) stringExpn>stringExpn (d) stringExpn<stringExpn (e) stringExpn>=stringExpn (f) stringExpn<=stringExpn
DescriptionStrings(stringExpns)canbecomparedforequality(=andnot=)andforordering(>,<,>=and<=).
Examplevarname:string:="Nancy"
varlicenceNumber:string(6)
licenceNumber:="175AJN"
Details
Twostringsareconsideredtobeequal(=)iftheyhavethesamelengthandaremadeup,characterbycharacter,ofthesamecharacters.Iftheydiffer,theyareconsideredtobeunequal(not=).
Orderingamongstringsisessentiallyalphabeticorder.StringSisconsideredtocomebeforestringT,thatisS<T,ifthetwoareidenticaluptoacertainpositionandafterthatposition,eitherthenextcharacterofScomesbeforethenextcharacterofT,orelsetherearenomorecharactersinSwhileTcontainsmorecharacters.
S>T(ScomesafterT)meansthesamethingasT<S.S>=TmeansthesamethingasS>TorS=T.S<=TmeansthesamethingasS<TorS=T.
ASCIIgivestheorderingamongindividualcharacters.Itspecifies,amongotherthings,thatlettercapitalLcomes
![Page 800: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/800.jpg)
alphabeticallybeforecapitalletterMandsimilarlyforsmall(lowercase)letters.
OnIBMmainframecomputers,theEBCDICspecificationofcharactersmaybeusedinsteadofASCII.
![Page 801: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/801.jpg)
strint string-to-integer
function
Syntax strint(s:string[,base:int]):int
Description
Thestrintfunctionisusedtoconvertastringtoaninteger.Theintegerisequivalenttostrings.Thenumberbaseparameterisoptional,forexample,strint("47")=47.InTuringproper,thebaseisnotallowedandisassumedtobe10.
Stringsmustconsistofapossiblynullsequenceofblanks,thenanoptionalplusorminussign,andfinallyasequenceofoneormoredigits.Fornumberbaseslargerthan10,thedigitscanincludea,b,c…(alternatelyA,B,C…)whichrepresentthedigitvalues10,11,12…Thebase,ifgiven,mustbeintherange2to36(36becausethereare10basetendigitsand26letters).Forexample,strint("FF",16)=255.
Theintstrfunctionistheinverseofstrint,soforanyintegeri,
strint(intstr(i))=i.
Seealso chr,ord,intstrandstrnatfunctions.
![Page 802: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/802.jpg)
strintok string-to-integer
function
Syntax strintok(s:string[,base:int]):boolean
Description
Thestrintokfunctionisuseddeterminewhetherthestrintfunctioncanbeusedtoconvertthestringtoanintegerwithoutcausinganerror.Ifthestringcanbesuccessfullyconverted,thenstrintokreturnstrue,otherwiseitreturnsfalse.
Stringsshouldconsistofapossiblynullsequenceofblanks,thenanoptionalplusorminussign,andfinallyasequenceofoneormoredigits.Fornumberbaseslargerthan10,thedigitscanincludea,b,c…(alternatelyA,B,C…)whichrepresentthedigitvalues10,11,12…Ifsiscorrectlyconstructed,thenstrnatokwillreturntrue,otherwiseitreturnsfalse.Thebase,ifgiven,mustbeintherange2to36(36becausethereare10basetendigitsand26letters).Forexample,strintok("FF",16)=true.
Seealso strintfunctionthatdoestheactualconversion.
![Page 803: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/803.jpg)
strnat stringtonaturalnumberfunction
Syntax strnat(s:string[,base:int]):nat
Description
Thestrnatfunctionisusedtoconvertastringtoanaturalnumber.Thenaturalnumberisequivalenttostrings.Thenumberbaseparameterisoptional,forexample,strnat("47")=47.
Stringsmustconsistofapossiblynullsequenceofblanks,thenanoptionalplussign,andfinallyasequenceofoneormoredigits.Fornumberbaseslargerthan10,thedigitscanincludea,b,c…(alternatelyA,B,C…)whichrepresentthedigitvalues10,11,12…Thebase,ifgiven,mustbeintherange2to36(36becausethereare10basetendigitsand26letters).Forexample,strnat("FF",16)=255.
Thenatstrfunctionistheinverseofstrnat,soforanynaturalnumbern,strnat(natstr(n))=n.
Thestrnatfunctionissimilartostrint,exceptthatstrnathandlesvaluesthatarelargerthanintvaluesanddoesnothandlenegativevalues.
Seealso thechr,ord,intstrandstrintfunctions.
![Page 804: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/804.jpg)
strnatok stringtonaturalnumberfunction
Syntax strnatok(s:string[,base:int]):boolean
Description
Thestrnatokfunctionisuseddeterminewhetherthestrnatfunctioncanbeusedtoconvertthestringtoanaturalnumberwithoutcausinganerror.Ifthestringcanbesuccessfullyconverted,thenstrnatokreturnstrue,otherwiseitreturnsfalse.
Stringsshouldconsistofapossiblynullsequenceofblanks,thenanoptionalplussign,andfinallyasequenceofoneormoredigits.Fornumberbaseslargerthan10,thedigitscanincludea,b,c…(alternatelyA,B,C…)whichrepresentthedigitvalues10,11,12…Ifsiscorrectlyconstructed,thenstrnatokwillreturntrue,otherwiseitreturnsfalse.Thebase,ifgiven,mustbeintherange2to36(36becausethereare10basetendigitsand26letters).Forexample,strnatok("FF",16)=true.
Seealso strnatfunctionthatdoestheactualconversion.
![Page 805: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/805.jpg)
strreal string-to-realfunction
Syntax strreal(s:string):real
Description
Thestrrealfunctionisusedtoconvertastringtoarealnumber.Forexample,strreal("2.5e1")willproduceanapproximationtothenumber25.0.
Stringsmustconsistofapossiblynullsequenceofblanks,thenanoptionalplusorminussignandfinallyanexplicitunsignedrealorintegerconstant.
Therealstr,erealstrandfrealstrfunctionsapproximatetheinverseofstrreal,althoughround-offerrorskeepthesefrombeingexactinverses.
Seealso realstr,erealstr,frealstr,intstrandstrintfunctions.
![Page 806: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/806.jpg)
strrealok string-to-realfunction
Syntax strrealok(s:string):boolean
Description
Thestrrealokfunctionisuseddeterminewhetherthestrrealfunctioncanbeusedtoconvertthestringtoarealnumberwithoutcausinganerror.Ifthestringcanbesuccessfullyconverted,thenstrrealokreturnstrue,otherwiseitreturnsfalse.
Stringsshouldconsistofapossiblynullsequenceofblanks,thenanoptionalplusorminussignandfinallyanexplicitunsignedrealorintegerconstant.Ifitdoesso,thenstrrealokwillreturntrue,otherwiseitreturnsfalse.
Seealso strrealfunctionthatdoestheactualconversion.
![Page 807: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/807.jpg)
subprogramHeader
Syntax
AsubprogramHeaderisoneof:
(a) procedure[pervasive]id
[([paramDeclaration{,paramDeclaration}])]
(b) function[pervasive]id
[([paramDeclaration{,paramDeclaration}])]
[id]:typeSpec
Description
Asubprogramheaderisusedtodescribetheinterfacetoasubprogram.Subprogramheadersareusedwithinotherlanguagefeaturessuchassubprogramtypesandexternaldeclarations.
Parameterlesssubprogramsmayuseparentheses(withnothingbetweenthem),asisrequiredintheCprogramminglanguage.Theseparenthesescanbeusedtodisambiguatebetweenthecalltothesubprogram(parenthesespresent)andareferencethesubprogram(parenthesesmissing).
Supposefisaparameterlesssubprogramdeclaredwithoutparenthesesandgisaparameterlesssubprogramdeclaredwithparentheses.Theirheadersare:
proceduref
procedureg()
Inaprogram,fandg()arecallstothesefunctions,whilegisareferenceto(notacallto)theprocedure.Thereisnowaytowriteareferencetof.Whenindoubt,useparenthesesinthedeclaration,asinthecaseforg,sothatcallsalwayshaveparenthesesandreferencesalwaysdonot.Areferencetoasubprogramcanbeassignedtoasubprogramvariable.Seesubprogramtype.
![Page 808: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/808.jpg)
ExampleSpecifythattisthetypeofprocedurewithavarintegerparameterandarealparameter.SeealsosubprogramType.
typet:procedureq(varj:int,y:real)
Details
Thekeywordpervasivecanbeinsertedjustafterprocedureorfunction.Whenthisisdone,thesubprogramisvisibleinsideallsubconstructsofthesubprogram'sscope.Withoutpervasive,thesubprogramisnotvisibleinsidemodulesunlessexplicitlyimported.Pervasivesubprogramsneednotbeimported.Youcanabbreviatepervasiveasanasterisk(*).
Seealso pervasive.
![Page 809: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/809.jpg)
subprogramType
Syntax
AsubprogramTypeis:
subprogramHeader
Description
Avariableorconstantcancontainareferencetoasubprogram.ThetypeofthevariableorconstantisasubprogramType.SeealsosubprogramHeader.
Example
Inthefollowingtisasubprogramtype,anduisavariableoftypetinitializedtorefertoprocedurernd.
procedurernd(vari:int,x:real)
i:=round(x)
endrnd
typet:procedureq(varj:int,y:real)
varu:t:=rnd%Procedurevariableureferstornd
…
varj:int
u(j,24.6)%Callprocedureureferringtornd
…
varv:=u%Subprogramvariablevinitializedtou
Details
Thenameofthesubprogram,forexampleq,andtheparameters,forexampleiandx,havenomeaninginasubprogramtype.Theyarepresentonlybecauseoftheformofsubprogramheaders.
Ifvisavariableorconstantthatreferstoasubprogram,vcanbecalled,comparedforequalitytoothersubprogramvariables,assignedandpassedasaparameter.Variablevisnotaninteger,stringorpointerandcannotparticipateintheircorrespondingoperations.
Areferencetoasubprogram,ratherthatthecodeofthesubprogram,iscontainedinavariablevwhosetypeisasubprogramtype.Thisimpliesthataddr(v)istheaddressofthereferencetosubprogram,ratherthantheaddressofthesubprogram.Theaddressofthecodeisgivenby#v.Seecheatforanexplanationofthe#operator.
![Page 810: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/810.jpg)
Youcannotassignareferencetoasubprogramexportedfromaclass.Thisrestrictionexistsbecausethesesubprogramsaremeaninglesswithoutanaccompanyingreferencetoanobject.
Manypotentialusesofsubprogramvariablesarebetterprogrammedusingclassesandoverridingexportedsubprograms.Seeclass.
![Page 811: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/811.jpg)
subrangeType
Syntax
AsubrangeTypeis:
expn..expn
DescriptionAsubrangetypedefinesasetofvalues,forexample,thesubrange1..4consistsof1,2,3and4.
Example
vari:1..10%icanbe1,2…upto10
typexRange:0..319%Defineintegersubrange
varpixels:arrayxRangeofint
%Arrayelementsare
%numbered0,1,…319
fork:xRange%krangesfrom0to319
pixels(k):=0
endfor
Details
Asubrangemustcontainatleastoneelement.Inotherwords,thesecondexpression(expn)mustbeatleastaslargeasthefirstexpression.
Thelowerboundofasubrangemustbeknownatcompiletime.Theupperboundisallowedtobearuntimevalueonlyinonesituationandthatiswhenitgivestheupperboundofanarraybeingdeclaredinavariabledeclaration,inotherwordswhendeclaringadynamicarray.
Subrangesareusuallyasubsetoftheintegers,asin1..10.Youcanalsohavesubrangesofenumeratedtypesandcharacters(thechartype).
Youcanapplyloweranduppertosubrangetypes.
![Page 812: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/812.jpg)
substring ofanotherstring
Syntax
Asubstringisoneof:
(a) stringReference(leftPosition..rightPosition) (b) stringReference(charPosition)
Description
Asubstringselectsapartofanotherstring.Inform(a)thesubstringstartsattheleftpositionandrunstotherightposition.Inform(b),thesubstringisonlyasinglecharacter.Turingsupportsubstringsofchar(n)values.
Example
varword:string:="bring"
putword(2..4)%Outputsrin
putword(3)%Outputsi
putword(2..*)%Outputsring;thestar
%theendofthestring.
putword(*-2..*-1)%Outputsin
Details
Theleftmostpossiblepositioninastringisnumbered1.Thelastpositioninastringcanbewrittenasanasterisk(*).Forexample,word(2..*)isequivalenttoword(2..length(word)).
EachofleftPosition,rightPosition,andcharPositionmusthaveoneoftheseforms:
(a)expn (b)* (c)*-expn
TheexactrulesfortheallowedvaluesofleftPositionandrightPositionare:
(1)leftPositionmustbeatleast1, (2)rightPositionmustbeatmostlength(stringReference),and (3)thelengthoftheselectedsubstringmustzeroormore.
![Page 813: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/813.jpg)
Thisspecificallyallowsnullsubstringssuchasword(1,0)inwhichrightPositionis0andword(6,5)inwhichleftPositionisonemorethatlength(stringReference).
Notethatsubstringsarenotassignable.Forexample,ifsisastring,thestatements(3):="a"isillegalinTuring.
Turingsupportssubstringsofchar(n)values.Seechar(n).Ifasubstringofchar(n)valuethastwooperands,asint(2..77),theresulttypeofthisoperationisastring.Ifthesubstringhasoneoperand,asint(7),thisbecomes,ineffect,asubscriptintoanarrayofcharacters.Theresultisareferencetoachar,whichcanbeassignedtoorpassedtoavarparameter.
Seealsostring,char,char(n),explicitStringConstant,explicitCharConstantcatenationandlength.
![Page 814: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/814.jpg)
succ successorfunction
Syntax succ(expn)
Description
Thesuccfunctionacceptsaninteger,characteroranenumeratedvalueandreturnstheintegerplusone,thenextcharacter,orthenextvalueintheenumeration.Forexample,succ(7)is8.
Example
ThispartofaTuringprogramfillsuparrayawiththeenumeratedvaluesgreen,yellow,red,green,yellow,red,etc.
typecolors:enum(green,yellow,red)
vara:array1..100ofcolors
varc:colors:=colors.green
fori:1..100
a(i):=c
ifc=colors.redthen
c:=colors.green
else
c:=succ(c)
endif
endfor
Details Youcannotapplysucctothelastvalueofanenumeration.
Seealso thepred,lowerandupperfunctions.
![Page 815: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/815.jpg)
Sys
Description
Thisunitcontainsthepredefinedsubprogramsthatdealwiththeoperatingsystemdirectly(gettingtheprocessid,gettingruntimeargumentsandexecutingcommandsintheoperatingsystem,etc.).
AllroutinesintheSysunitareexportedqualified(andthusmustbeprefacedwith"Sys.").
EntryPoints
GetComputerName Getsthenameofthecomputer.
GetEnv Getsastringassociatedwithanenvironmentvariable.
GetPid GetsthecurrentprocessIDforTuring.
GetUserName Getsthenameoftheusercurrentlyloggedon.
Exec Executesaprogramoropensadatafileusingtheoperatingsystem.
Nargs Getsthenumberofruntimearguments(exportedunqualified).
FetchArg Getsaspecifiedruntimeargument(exportedunqualified).
![Page 816: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/816.jpg)
Sys.Exec PartofSysmodule
Syntax Sys.Exec(command:string):boolean
Description
TheSys.Execfunctionisusedtoexecuteanapplicationormoreoften,openadatafilewithitsassociatedapplication.Sys.ExeccanbeusedtolaunchsuchprogramsastheInternetBrowserbyspecifyingaURL.Sys.Execlaunchestheapplicationassociatedwithfile'ssuffix.(Inessence,itperformsthesameoperationasifauserdoubleclickedonthefile.)
Example
ThisprogramlaunchesaninternetbrowserandpointsittoHoltSoftware'shomepage.Itthenlaunchesamovieusingthedefaultvideoplayer.
ifnotSys.Exec("http://www.holtsoft.com/turing/support")
put"TheSys.Execcallfailed"
put"Error:",Error.LastMsg
endif
ifnotSys.Exec("skate.avi")then
put"TheSys.Execcallfailed"
put"Error:",Error.LastMsg
endif
DetailsWhentheSys.Execprocedureisused,theexecutingprogramcontinuesexecutionimmediatelywhilethelaunchedapplicationisrunning.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingSys.ExecExec.
Seealso Sys.Nargs,Sys.FetchArgandSys.GetEnvfunctions.
![Page 817: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/817.jpg)
Sys.FetchArg PartofSysmodule
Syntax System.FetchArg(i:int):string
Description
TheSys.FetchArgfunctionisusedtoaccessthei-thargumentthathasbeenpassedtoaprogramfromthecommandline.Forexample,iftheprogramisrunfromtheTuringenvironmentusing
:rfile1file2
thenSys.FetchArg(2)willreturn"file2".Ifaprogramcalledprog.xunderUNIXusingthiscommand:
prog.xfile1file2
thevalueofSys.FetchArg(2)willsimilarlybe"file2".
TheSys.Nargsfunction,whichgivesthenumberofargumentspassedtotheprogram,isusuallyusedtogetherwiththeSys.FetchArgfunction.ParameteripassedtoSys.FetchArgmustbeintherange0..Sys.Nargs
The0-thargumentisthenameoftherunningprogram.
Example
Thisprogramlistsitsownnameanditsarguments.
put"Thenameofthisprogramis:",Sys.FetchArg
fori:1..Sys.Nargs
put"Argument",i,"is",Sys.FetchArg(i
endfor
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingSys.FetchArgbycallingFetchArg.
Seealso Sys.Nargs
![Page 818: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/818.jpg)
Sys.GetComputerName PartofSysmodule
Syntax Sys.GetComputerName:string
Description
TheSys.GetComputerNamefunctionisusedtodeterminethenameofthecomputer.OnthePC,thisistheNetBIOSname.Itreturns“NoName”ifanamecouldnotbedetermined.
Example
Thisprogramoutputsagreetingtotheuser.
varcomputerName,userName:string
computerName:=Sys.GetComputerName
userName:=Sys.GetUserName
put"Hello",userName,"on",computerName
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingSys.GetComputerName,notbycallingGetComputerName.
SeealsoSys.GetUserNametoobtaintheusernameoftheusercurrentlyloggedin.
![Page 819: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/819.jpg)
Sys.GetEnv PartofSysmodule
Syntax Sys.GetEnv(symbol:string):string
Description
TheSys.GetEnvfunctionisusedtoaccesstheenvironmentstringwhosenameissymbol.Thesestringsaredeterminedbytheshell(commandprocessor)ortheprogramthatcausedyourprogramtorun.SeealsotheSys.NargsandSys.FetchArgfunctions.
Example
OnaPC,thisretrievestheenvironmentvariableUSERLEVELandprintsextrainstructionsifUSERLEVELhadbeensettoNOVICE.USERLEVELcanbesettoNOVICEwiththecommandSETUSERLEVEL=NOVICEintheautoexec.batfileorinanybatchfile.
constuserLevel:string
userLevel:=Sys.GetEnv("USERLEVEL")
ifuserLevel="NOVICE"then
…%putasetofinstructions
endif
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingSys.GetEnv,notbycallingGetEnv.
![Page 820: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/820.jpg)
Sys.GetPid PartofSysmodule
Syntax Sys.GetPid:int
Description
TheSys.GetPidfunctionisusedtodeterminetheI.D.(number)thatidentifiesthecurrentoperatingsystemtask(process).Bewarethatthereareprocesses,activatedbytheforkstatement,thatareindependentoftheoperatingsystemstasks.
UnderUNIX,thenumberisused,forexample,forcreatingauniquenameofafile.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingSys.GetPid,notbycallingGetPid.
Seealso Sys.Nargs,Sys.FetchArgandSys.GetEnv.
![Page 821: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/821.jpg)
Sys.GetUserName PartofSysmodule
Syntax Sys.GetUserName:string
Description
TheSys.GetUserNamefunctionisusedtodeterminethenameofthecurrentuser.Itreturns“Unknown”ifanamecouldnotbedetermined.
Example
Thisprogramoutputsagreetingtotheuser.
varcomputerName,userName:string
computerName:=Sys.GetComputerName
userName:=Sys.GetUserName
put"Hello",userName,"on",computerName
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingSys.GetUserName,notbycallingGetUserName.
Seealso Sys.GetComputerNametoobtainthenameofthecomputer.
![Page 822: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/822.jpg)
Sys.Nargs PartofSysmodule
Syntax Sys.Nargs:int
Description
TheSys.Nargsfunctionisusedtodeterminethenumberofargumentsthathavebeenpassedtoaprogramfromthecommandline.Forexample,iftheprogramisrunfromtheTuringenvironmentusing
:rfile1file2
thenSys.Nargswillreturn2.Ifaprogramcalledprog.xisrununderUNIXusingthiscommand:
prog.xfile1file2
thevalueofSys.Nargswillsimilarlybe2.
TheSys.NargsfunctionisusuallyusedtogetherwiththeSys.FetchArgfunctiontoaccesstheargumentsthathavebeenpassedtotheprogram.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingSys.Nargs,notbycallingNargs.
Seealso Sys.FetchArgforanexampleoftheuseofSys.Nargs.
![Page 823: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/823.jpg)
sysclock millisecsusedprocedure
Syntax sysclock(varc:int)
Description
ThesysclockstatementisusedonamultitaskingsystemsuchasUNIXtodeterminetheamountoftimethathasbeenusedbythisprogram(process).Variablecisassignedthenumberofcentralprocessormillisecondsassignedtothisprogram.Thisisoflittleuseonapersonalcomputer,wheresysclockreturnsthesamevalueasclock.
Example
OnaUNIXsystem,thisprogramtellsyouhowmuchtimeithasused.
vartimeUsed:int
sysclock(timeUsed)
put"Thisprogramhasused",timeUsed,
"millisecondsofCPUtime"
Seealsodelay,time,clock,wallclockanddatestatements.
SeealsopredefinedunitTime.
![Page 824: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/824.jpg)
system statement
Syntax system(command:string,varret:int)
Description
Thesystemstatementisusedtoexecutetheshell(operatingsystem)ifitweretypedattheterminal.Thereturncodeisinret.Areturncodeof0(zero)meansnodetectederrors.Areturncodeof127meansthecommandprocessorcouldnotbeaccessed.Areturncodeof126meansthecommandprocessordidnothaveroomtorunonthePC.
Example
ThisprogramcreatesadirectorylistingwhenrununderDOSonanIBMPCcompatiblecomputer.ThesameprogramwillrununderUNIXbychanging"to"ls".
varsuccess:int
system("dir",success)
ifsuccessnot=0then
ifsuccess=127then
put"Sorry,can'tfind'command.com'"
elsifsuccess=126then
put"Sorry,noroomtorun'dir'"
else
put"Sorry,'dir'didnotwork"
endif
endif
Details
Whenthesystemprocedureisused,theexecutingprogramusuallyremainsinmemorywhilethesystemcommandisexecuting,andonceexecutionofthesystemcommandisfinished,controlreturnstotheoriginalprogram.However,onthePC,thereisvariantofthesystemprocedurethatallows"chaining".Thismeansthatwhenthesystemcommandisexecuted,theoriginallyrunningprogramis"thrownaway"(i.e.removedfrommemory).Whentheexecutedprogramterminates,oneisreturnedtoDOS.
Tochainanotherprogram,oneprepends"chain:"tothestartcommand
i.e.system("chain:myprog.exe",retCode)
Notethatthiscommandis"hazardous".Specifically,ifyoucallitfromTuring(asopposedtoaprogramcompiledwithTComp)andyouhavenotsavedyoursourcefile,youwillloseit!Turingwillberemovedfrommemorywithoutanywarning
![Page 825: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/825.jpg)
whenthesystemprocedureisexecuted.Likewiseanyopenfileswillbeclosedinstantly.Thismeansthereisadangerifallfileswerenotproperlyclosedbeforethesystemprocedurewascalled.
The"chain:"commandisoftenusedforstartingmenuprograms,wheretheuserselectsaprogramtorunanddoesn'twantTuringtoremaininmemory.ItcanalsobeusedwithextraordinarilylargeTuringprogramsthatcanbesplitintodifferentparts.ByusingTCompandcompilingeachpartseparately,onecanhaveeachprogramcalltheotherandneverhaveallpartsinmemoryatonce.
Example
Thisprogramuseschainingtolaunchoneofseveralpossibleprogramsbasedonuserchoice.Itgivesanerrorifforsomereasonthesystemcommandfailstowork.Itassumesthatc:\chemistry.exe,c:\math.exe,c:\english.exeandc:\history.exealreadyexist.
varchoice,success:int
put"Enterthesubject(1-4):"..
getchoice
varcommand:string
casechoiceof
%Notetheuseofthedoublebackslashinthefilename
%isbecausethebackslashisaspecialcharacterinTuring(as
%in\tfortaband\nforanewline).Togetasinglebackslash
%oneuses\\.
label1:command:="c:\\chemistry.exe"
label2:command:="c:\\math.exe"
label3:command:="c:\\english.exe"
label4:command:="c:\\history.exe"
label:put"Choicemustbefrom1-4."
assertfalse%Wasn'ta1-4.Terminate.
endcase
system("chain:"+command,success)
%IfIreachthisline,thesystemcommandfailedandoneshouldgive
%anerrormessage.
put"Systemcalledfailed."
put"Program\"",command,"\"couldn'tberun."
assertfalse%Terminatetheprogram
Details
HerearethepossibleerrorsunderPC-Turing
-1 NotenoughmemorytoloadCOMMAND.COM -2 Notenoughmemorytoruncommand -3 Argumentlistgreaterthan128bytesorenvironmentinfo
![Page 826: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/826.jpg)
-4 Couldn'tfindCOMMAND.COM -5 COMMAND.COMcorrupt -6 -noshelloptionisselected,thesystemprocedureis disallowed
Seealsonargs,fetchargandgetenvfunctions.
SeealsopredefinedunitSys.
![Page 827: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/827.jpg)
tag statement
Syntax
AtagStatementis:
tagunionVariableReference,expn
DescriptionAtagstatementisaspecial-purposeassignmentthatisusedforchangingthetagofaunionvariable.
Example
Inthisexample,thetagfieldofunionvariablevissettobepassenger,therebyactivatingthepassengerfieldofv.
typevehicleInfo:
unionkind:passenger..recreational
labelpassenger:
cylinders:1..16
labelfarm:
farmClass:string(10)
label:%Nofieldsfor"otherwise"clause
endunion
varv:vehicleInfo
…
tagv,passenger%Activatepassengerpart
Details
Atagstatementistheonlywaytomodifythetagfieldofaunionvariable(otherthanbyassigninganentireunionvaluetotheunionvariable).
Youcannotaccessaparticularsetoffieldsofaunionunlessthetagissettomatchthecorrespondinglabelvalue.
Seealso uniontypes.
![Page 828: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/828.jpg)
takepic graphicsprocedure
setscreen("graphics")
…drawhappyfaceinthebox(0,0)to(100,100)…
%Createbufferbigenoughtoholdhappyface
varface:array1..sizepic(0,0,100,100)ofint
%Copypictureintothebuffer,whichisthefacearray
takepic(0,0,100,100,face)
%Redrawthepicturewithitsleftbottomat(200,0)
drawpic(200,0,face,0)
Syntax takepic(x1,y1,x2,y2:int,varbuffer:array1..*ofint)
Description
Thetakepicprocedureisusedtorecordthepixelvaluesinarectangle,withleftbottomandrightcornersof(x1,y1)and(x2,y2),inthebufferarray.Thisrequiresasufficiently-largebuffer(seesizepic).Thedrawpicprocedureisusedtomakecopiesoftherecordedrectangleonthescreen.
Example
Afterdrawingahappyface,thisprogramcopiesthefacetoanewlocation.
Execute
Theintegervaluesthattakepicplacesinthebuffercanbereadorwritten(usingthereadandwritestatements).Unfortunately,ifa
![Page 829: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/829.jpg)
Details
valuehappenstobethepatternusedtorepresenttheuninitializedvalue(thelargestnegativenumberthehardwarecanrepresent)assignment(by:=)andputoftheindividualintegervaluesinthebufferwillfail.
Thescreenshouldbeina"graphics"mode.Seethesetscreenprocedurefordetails.Ifthescreenisnotina"graphics"mode,itwillautomaticallybesetto"graphics"mode.
Details
Thedrawpic,takepic,andsizepicsubprogramshavebeenmadeobsoletebythesubprogramsPic.DrawandPic.NewofthePicmodule.Usersarestronglysuggestedtousethoseroutinesinstead.ThePicmodulealsocontainssubprogramstoloadimagesfromfiles.
Seealso
sizepicanddrawpic.Seealsosetscreen,maxx,maxy,drawdot,drawline,drawbox,anddrawoval.
SeealsopredefinedunitPic.
![Page 830: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/830.jpg)
tan tangentfunction(radians)
Syntax tan(r:real):real
DescriptionThetanfunctionisusedtofindthetangentofananglegiveninradians.Forexample,tan(p/4)is0.5.
Example
Thisprogramprintsoutthetangentof0,p/6,2p/6,3p/6,upto12p/6radians.
fori:0..12
constangle:=i*Math.PI/6
put"Tangentof",angle,"is",tan(angle
endfor
Execute
Details
Anargumenttotanofp/2,3*p/2,etc.mayresultinanoverflow(andhaltoftheprogram)astheresultistechnically¥.(Itmaynotcauseanoverflowduetorounding,inwhichcasetheresultwillsimplybeaverylargenumber.)
Seealso
thesinandcosfunctionsforcalculatingsineandcosine.
thetandfunctionwhichfindsthetangentofananglegivenindegrees.(2pradiansarethesameas360degrees.)
SeealsopredefinedunitMath.
![Page 831: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/831.jpg)
tand tangentfunction(degrees)
Syntax tand(r:real):real
DescriptionThetandfunctionisusedtofindthetangentofananglegivenindegrees.Forexample,tand(45)is1.
Example
Thisprogramprintsoutthetangentof0,30,60,90,upto360degrees.
fori:0..12
constangle:=i*30
put"Tanof",angle,"is",tand(angle)
endfor
Execute
Details
Anargumenttotanof90,270,etc.mayresultinanoverflow(andhaltoftheprogram)astheresultistechnically¥.(Itmaynotcauseanoverflowduetorounding,inwhichcasetheresultwillsimplybeaverylargenumber.)
Seealso
thesindandcosdfunctionsforcalculatingsineandcosine.
thetanfunctionwhichfindsthetangentofananglegiveninradians.(2pradiansarethesameas360degrees.)
SeealsopredefinedunitMath.
![Page 832: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/832.jpg)
tell filestatement
Syntax
AntellStatementis:
tell:fileNumber,filePositionVar
Description
ThetellstatementsetsfilePositionVar,whosetypemustbeint,tothecurrentoffsetinbytesfromthebeginningofthespecifiedfile.ThefileNumbermustspecifyafilethatisopenwithseekcapability(orelseaprogramargumentfilethatisimplicitlyopened).Thetellstatementisusefulforrecordingthefilepositionofacertainpieceofdataforlateraccessusingseek.
Example
Thisexampleshowshowtousetelltorecordthelocationofarecordinafile.Thislocationislaterusedbyseektoallowtherecordtoberead.
varemployeeRecord:
record
name:string(30)
pay:int
dept:0..9
endrecord
varfileNo:int
varlocation:int
open:fileNo,"payroll",write,seek
…
tell:fileNo,location%Makenoteofthislocation
write:fileNo,employeeRecord%Writerecordatthislocation
…
seek:fileNo,location%Gobacktolocation
read:fileNo,employeeRecord%Readtherecord
%thatwaspreviouslywritten
Seealso theread,write,open,close,seek,getandputstatements.
![Page 833: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/833.jpg)
Text
Description
Thisunitcontainsthepredefinedsubprogramsthathandlecharacter(text)outputonthescreen(i.e.outputusingput).
AllroutinesintheTextunitareexportedqualified(andthusmustbeprefacedwith"Text.")withtheexceptionofmaxrowandmaxcolwhichareexportedunqualified.
EntryPoints
Cls Clearsthescreentothetextbackgroundcolor.
Color Setsthetextcolorusedbyput.Colour Setsthetextcolorusedbyput.
ColorBack Setsthetextbackgroundcolorusedbyput.
ColourBack Setsthetextbackgroundcolorusedbyput.
Locate Movesthecursortothespecifiedrowandcolumn.
LocateXY Movesthecursortothecursorlocationclosesttoaspecifiedpixelposition.
maxcol Thenumberofcolumnsonthescreen(exportedunqualified).
maxrow Thenumberofrowsonthescreen(exportedunqualified).
WhatRow Returnsthecurrentcursorrow.WhatCol Returnsthecurrentcursorcolumn.WhatColor Returnsthecurrenttextcolor.WhatColour Returnsthecurrenttextcolor.WhatColorBack Returnsthecurrenttextbackgroundcolor.WhatColourBack Returnsthecurrenttextbackgroundcolor.
![Page 834: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/834.jpg)
Text.Cls PartofTextmodule
Syntax Text.Cls
Description
TheText.Cls(clearscreen)procedureisusedtoblankthescreentothetextbackgroundcolor.Thecursorissettothetopleft(torow1,column1).
Details
Thescreenshouldbeina"screen"or"graphics"mode.Ifthescreenmodehasnotbeenset,itwillautomaticallybesetto"screen"mode.SeeView.Setfordetails.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingText.Cls,notbycallingCls.
![Page 835: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/835.jpg)
Text.Color PartofTextmodule
Syntax Text.Color(Color:int)
Description
TheText.Colorprocedureisusedtochangethecurrently-activecolor.Thisisthecolorofcharactersthataretobeputonthescreen.ThealternatespellingisText.Colour.
Example
Thisprogramprintsoutthemessage"Bravo"threetimes,eachinadifferentcolor.
View.Set("graphics")
fori:1..3
Text.Color(i)
put"Bravo"
endfor
Example
Thisprogramprintsoutamessage.Thecolorofeachletterisdifferentfromtheprecedingletter.Forletternumberithecolornumberisimodmaxcolor+1.Thiscyclesrepeatedlythroughalltheavailablecolors.
View.Set("screen")
constmessage:="HappyNewYear!!"
fori:1..length(message)
Text.Color(imodmaxcolor+1)
putmessage(i)..
endfor
Details
In"screen"modeontheIBMPC,thecolorspecifiedcanactuallyrangefrom0-31.Theupper16colors(16-31)arethesameasthelower16,exceptthattheyblink.
SeeView.Setforthenumberofcolorsavailableinthevarious"graphics"modes.
Thescreenshouldbeina"screen"or"graphics"mode.Ifthescreenmodehasnotbeenset,itwillautomaticallybesetto"screen"mode.SeeView.Setfordetails.
![Page 836: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/836.jpg)
StatusExportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingText.Color,notbycallingColor.
SeealsoText.ColorBack,Text.WhatColor,Text.WhatCharandView.maxcolor.
![Page 837: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/837.jpg)
Text.ColorBack PartofTextmodule
Syntax Text.ColorBack(Color:int)
Description
TheText.ColorBackprocedureisusedtochangethecurrenttextbackgroundcolor.ThealternatespellingisText.ColourBack.
TheText.ColorBackproceduresetsthetextbackgroundcolortothespecifiedcolor.Thisisthecolorthatsurroundscharacterswhentheyareputontothescreen.OnanIBMPCin"screen"mode,thecolorcanbefrom0-7.(Youcannothavetheupper8colorsastextbackgroundcolors.OnUNIXdumbterminals,Text.ColorBack(1)turnsonhighlightingandText.ColorBack(0)turnsitoff.Onothersystems,thisproceduremayhavenoeffect.
Example
Sincethisprogramisin"screen"mode,changingthebackgroundcolorhasnoimmediatelyobservableeffect.Whenthemessage"Greetings"isoutput,thebackgroundsurroundingeachletterwillbered.
View.Set("screen")
…
Text.ColorBack(red)
put"Greetings"
Details
Thescreenshouldbeina"screen"or"graphics"mode.Ifthescreenmodehasnotbeenset,itwillautomaticallybesetto"screen"mode.SeeView.Setfordetails
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingText.ColorBack,notbycallingColorBack.
Seealso Text.ColorandText.WhatColorBack.
![Page 838: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/838.jpg)
Text.Locate PartofTextmodule
Syntax Text.Locate(row,column:int)
Description
TheText.Locateprocedureisusedtomovethecursorsothatthenextoutputfromputwillbeatthegivenrowandcolumn.Row1isthetopofthescreenandcolumn1istheleftsideofthescreen.
Example
Thisprogramoutputsstarsofrandomcolorstorandomlocationsonthescreen.Thevariablecolrispurposelyspelleddifferentlyfromthewordcolortoavoidtheprocedureofthatname(usedtosetthecolorofoutput).Therownumberispurposelychosensothatitisonelessthanmaxrow.Thisavoidsthescrollingofthescreenwhichoccurswhenacharacterisplacedinthelastcolumnofthelastrow.
View.Set("screen")
varrow,column,colr:int
loop
row:=Rand.Int(1,maxrow)
column:=Rand.Int(1,maxcol)
colr:=Rand.Int(0,maxcolor)
Text.Color(colr)
Text.Locate(row,column)
put"*"..%Usedot-dottoavoidclearingendofline
endloop
Details
TheText.Locateprocedureisusedtolocatethenextoutputbasedonrowandcolumnpositions.SeealsotheText.LocateXYprocedurewhichisusedtolocatetheoutputbasedxandypositions,wherex=0,y=0istheleftbottomofthescreen.
Thescreenshouldbeina"screen"or"graphics"mode.SeetheView.Setprocedurefordetails.Ifthescreenisnotinoneofthesemodes,itwillautomaticallybesetto"screen"mode.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingText.Locate,notbycallingLocate.
![Page 839: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/839.jpg)
Seealso View.SetandDraw.Dot.
![Page 840: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/840.jpg)
Text.LocateXY PartofTextmodule
Syntax Text.LocateXY(x,y:int)
Description
TheText.LocateXYprocedureisusedtomovethecursorsothatthenextoutputfromputwillbeatapproximately(x,y).Theexactlocationmaybesomewhattotheleftofxandbelowytoforcealignmenttoacharacterboundary.
Example
ThisprogramoutputsHellostartingatapproximately(100,50)onthescreen.
View.Set("graphics")
Text.LocateXY(100,50)
put"Hello"
Details
TheText.LocateXYprocedureisusedtolocatethenextoutputbasedonxandypositions,wherethepositionx=0,y=0istheleftbottomofthescreen.SeealsotheText.Locateprocedurewhichisusedtolocatetheoutput-basedrowandcolumnpositions,whererow1isthetoprowandcolumn1istheleftcolumn.
Thescreenshouldbeina"graphics"mode.SeetheView.Setprocedurefordetails.Ifthescreenisnotina"graphics"mode,itwillautomaticallybesetto"graphics"mode.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingText.LocateXY,notbycallingLocateXY.
Seealso View.SetandDraw.Dot.
![Page 841: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/841.jpg)
Text.maxcol PartofTextmodule
Syntax maxcol:int
DescriptionThemaxcolfunctionisusedtodeterminethenumberofcolumnsonthescreen.
ExampleThisprogramoutputsthemaximumcolumnnumber.
put"Numberofcolumnsonthescreenis",maxrow
Details
ForIBMPCcompatiblesaswellasmostUNIXdumbterminals,in"text"or"screen"mode,maxcol=80.ForthedefaultIBMPCcompatible"graphics"mode(CGA),maxcol=40.
Status
Exportedunqualified.
ThismeansthatyoucancallthefunctionbycallingmaxcolorbycallingText.maxcol.
Seealso Text.Locateprocedureforanexampleoftheuseofmaxcol.
![Page 842: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/842.jpg)
Text.maxrow PartofTextmodule
Syntax maxrow:int
DescriptionThemaxrowfunctionisusedtodeterminethenumberofrowsonthescreen.
ExampleThisprogramoutputsthemaximumrownumber.
put"Numberofrowsonthescreenis",maxrow
DetailsForIBMPCcompatibles,maxrow=25.FormanyUNIXdumbterminals,maxrow=24.
Status
Exportedunqualified.
ThismeansthatyoucancallthefunctionbycallingmaxroworbycallingText.maxrow.
Seealso Text.Locateprocedureforanexampleoftheuseofmaxrow.
![Page 843: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/843.jpg)
Text.WhatCol PartofTextmodule
Syntax Text.WhatCol:int
DescriptionTheText.WhatColfunctionisusedtodeterminethecursorposition'scolumn.
Example
ThisprogramoutputsThecurrentrowis5,thecurrentcolumnis15.
Text.Locate(5,10)
put"12345"..
put"Thecurrentrowis",Text.WhatRow
put"Thecurrentcolumnis",Text.WhatCol
DetailsThescreenshouldbeina"screen"or"graphics"mode.Text.WhatColfunctionsproperlyevenifthecursorisinvisible.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingText.WhatCol,notbycallingWhatCol.
Seealso
theText.WhatRowfunction,whichisusedtodeterminethecursorrow.SeealsotheText.Locate,Text.maxrowandText.maxcolprocedure.
![Page 844: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/844.jpg)
Text.WhatColor PartofTextmodule
Syntax Text.WhatColor:int
Description
TheText.WhatColorfunctionisusedtodeterminethecurrenttext(foreground)color,ie.,thecolorusedforcharactersthatareoutputusingput.ThealternatespellingisText.WhatColour.
Example
Thisprogramoutputsthecurrently-activecolornumber.Themessageisalsogiveninthecurrently-activecolor.
View.Set("graphics")
…
put"Thiswritingisincolornumber",Text.WhatColor
DetailsThescreenshouldbeina"screen"or"graphics"mode.SeeView.Setfordetails.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingText.WhatColor,notbycallingWhatColor.
SeealsotheText.Colorprocedure,whichisusedtosetthecolor.SeealsoText.ColorBackandText.WhatColorBack.
![Page 845: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/845.jpg)
Text.WhatColorBack PartofTextmodule
Syntax Text.WhatColorBack:int
Description
TheText.WhatColorBackfunctionisusedtodeterminethecurrenttextbackgroundcolor.Thealternatespellingiswhatcolourback.
Example
Thisprogramoutputsthecurrently-activebackgroundcolornumber.Thebackgroundcolorofthemessageisdeterminedbythisnumber.
View.Set("screen")
…
put"Thebackgroundofthiswriting"
put"isincolornumber",Text.WhatColorBack
Details
Thescreenshouldbeina"screen"or"graphics"mode.Bewarethatthemeaningofbackgroundcolorisdifferentinthesetwomodes.SeeText.ColorBackfordetails.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingText.WhatColorBack,notbycallingWhatColorBack.
Seealso Text.ColorandText.WhatColor.
![Page 846: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/846.jpg)
Text.WhatRow PartofTextmodule
Syntax Text.WhatRow:int
DescriptionTheText.WhatRowfunctionisusedtodeterminethecursorposition'srow.
Example
ThisprogramoutputsThecurrentrowis5,thecurrentcolumnis15.
Text.Locate(5,10)
put"12345"..
put"Thecurrentrowis",Text.WhatRow
put"Thecurrentcolumnis",Text.WhatCol
DetailsThescreenshouldbeina"screen"or"graphics"mode.Text.WhatRowfunctionsproperlyevenifthecursorisinvisible.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingText.WhatRow,notbycallingWhatRow.
Seealso
theText.WhatColfunction,whichisusedtodeterminethecursorcolumn.SeealsotheText.Locate,Text.maxrowandText.maxcolprocedure.
![Page 847: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/847.jpg)
Time
Description
Thisunitcontainsthepredefinedsubprogramsthathandleanythingtodowithtime,eitherasadateorasatimer.
AllroutinesintheTimeunitareexportedqualified(andthusmustbeprefacedwith"Time.").
EntryPoints
Sec Returnsthenumberofsecondssince1/1/197000:00:00GMT.
Date Returnsthecurrentdateandtimeasastring.
SecDate Convertsanumberofsecondsintoadate/timestring.
DateSec Convertsadate/timestringtoanumberofseconds.
SecParts
Convertsthenumberofsecondssince1/1/197000:00:00GMTintoadayofmonth,month,year,dayofweek,hour,minuteandsecondintegers.
PartsSec Convertsadayofmonth,month,year,hour,minuteandsecondintegersintothenumberofsecondssince1/1/197000:00:00GMT.
SecStr Convertsthenumberofsecondssince1/1/197000:00:00GMTintoauserspecifiedformattedstringrepresentingthedate.
Elapsed Returnsthenumberofmillisecondselapsedsincetheprogramstartedtorun.
ElapsedCPU ReturnsthenumberofmillisecondsofCPUtimeelapsedsincetheprogramstartedtorun.
Delay Sleepsforaspecifiednumberofmilliseconds.
DelaySinceLast SleepsuntilaspecifiednumberofmillisecondssincethelastcalltoTime.DelaySinceLast.
![Page 848: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/848.jpg)
Time.Date PartofTimemodule
Syntax Time.Date:string
Description
TheTime.Datefunctionreturnsthecurrentdateandtimeasastring.Thereturnedstringintheformat"ddmmmyyhh:mm:ss",wheremmmisthefirst3charactersofthemonth,e.g.,"Apr".Forexample,ifthedateisChristmas1989at9:02:37inthemorning,Time.Datewillreturn"25Dec8909:02:37".Twenty-fourhourtimeisused,soeleventhirtyatnightthesamedaywouldreturn"25Dec8923:30:00"
Example
Thisprogramgreetsyouandtellsyouthedateandtime.
vartheDateTime,theDate,theTime:string
theDateTime:=Time.Date
theDate:=theDateTime(1..9)
theTime:=theDateTime(11..*)
put"Greetings!!Thedateandtimetodayis",
Details
Bewarnedthatonsomecomputers,suchasIBMPCcompatiblesorAppleMacintoshes,thedatemaynotbesetcorrectlyintheoperatingsystem;inthatcase,theTime.Dateprocedurewillgiveincorrectresults.
ThestringformofthedatecanbeconvertedtoanumericformforcomparisonpurposesusingtheTime.DateSecfunction.ThenumericformcanbeconvertedtoastringusingtheTime.SecDatefunction.ThenumericformofthetimecanbeobtainedusingtheTime.Secfunction.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingTime.Date,notbycallingDate.
Seealso Time.Sec,Time.DateSecandTime.SecDatefunctions.
![Page 849: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/849.jpg)
Time.DateSec PartofTimemodule
Syntax Time.DateSec(dateString:string):int
Description
TheTime.DateSecfunctionisusedtoconvertadateandtimestringintoanumber,specifically,thenumberofsecondssince00:00:00GMTJan1,1970.
Thefunctioncanalsoconvertjustthedate("ddmmmyy"),inwhichcaseitreturnsthenumberofsecondssince00:00:00GMTJan1,1970frommidnightoftheenteredday.Itwillalsoconvertatimewithoutthedate("hh:mm:ss"),inwhichcaseitreturnsthenumberofsecondsthathavepassedsincemidnightofthatday.
Iftheformatisincorrectorcan'tbeinterpreted,thenTime.DateSecwillreturn1andError.LastandError.LastMsgwillbesettotheappropriateerror.
Example
Thisprogramgivesthenumberofsecondssince00:00:00GMTJan1,1970.
vartheDateTime,theDate,theTime:string
theDateTime:=Time.Date
theDate:=theDateTime(1..9)
theTime:=theDateTime(11..*)
put"Thenumberofsecondsfrom00:00:00GMTJan1,1970",
"frommidnight",theDate,"is",Time.DateSec
put"Thenumberofsecondsfrommidnightto",theTime
Time.DateSec(theTime)
put"Thenumberofsecondsfrom00:00:00GMTJan1,1970",
"from",theDateTime,"is",Time.DateSec(theDateTime
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingTime.DateSec,notbycallingDateSec.
Seealso Time.Sec,Time.DateandTime.SecDatefunctions.
![Page 850: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/850.jpg)
Time.Delay PartofTimemodule
Syntax Time.Delay(duration:int)
DescriptionTheTime.Delayprocedureisusedtocausetheprogramtopauseforagiventime.Thetimedurationisinmilliseconds.
Example
Thisprogramprintstheintegers1to10withaseconddelaybetweeneach.
fori:1..10
puti
Time.Delay(1000)%Pausefor1second
endfor
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingTime.Delay,notbycallingDelay.
Seealso Time.ElapsedandTime.ElapsedCPU.
![Page 851: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/851.jpg)
Time.DelaySinceLast PartofTimemodule
Syntax Time.DelaySinceLast(duration:int)
Description
TheTime.DelaySinceLastprocedureisusedtocausetheprogramtopauseforagiventimesincethelastcalltoTime.DelaySinceLast.Thetimedurationisinmilliseconds.
Example
Thisprogramoutputsfrom1to100,000,thenoutputshowlongittooktodothis(inmilliseconds).ItthencallsTime.DelaySinceLasttowaituntil10secondshaspassedsincethebeginningoftheprogram(regardlessofhowlongittooktoexecutetheloop).Finallyitoutputshowmanymillisecondshaspassedsincetheprogramstarted.Thisshouldbecloseto10,000milliseconds.
vart:int:=Time.Elapsed
put"Startingnow,countto100,000"
fori:1..100000
puti..
locate(whatrow,1)
endfor
put"Finishedcountingto100,000"
put"Elapsedtime:",Time.Elapsed-t,"milliseconds"
Time.DelaySinceLast(10000)
put"Elapsedtime:",Time.Elapsed-t,"milliseconds"
Execute
TheTime.DelaySinceLastisusuallyusedtotimeaprocesssothatitoperatesonthesamespeednomatterwhatthemachine.Forexample,intheaboveexample,theprogramwillalwyastake10secondstoexecute,regardlessofthespeedofthemachine(up
![Page 852: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/852.jpg)
Details
toapoint).FastmachineswillspendlittletimeintheforloopandlongerwaitingtoreturnfromTime.DelaySinceLast.SlowermachineswilltakelongertoexecutetheloopandwillconsequentlywaitlesstimebeforereturningfromTime.DelaySinceLast.
TheTime.DelaySinceLastprocedureisoftenusedtotimethespeedofanimationingames.
Notethatthisonlyworksuptoapoint.Onaveryslowmachine,theforloopmaytakelongerthan10secondstoexecute,inwhichcasethecalltoTime.DelaySinceLastwillreturninstantly.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingTime.DelaySinceLast,notbycallingDelaySinceLast.
Seealso Time.ElapsedandTime.ElapsedCPU.
![Page 853: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/853.jpg)
Time.Elapsed PartofTimemodule
Syntax Time.Elapsed:int
Description
TheTime.Elapsedfunctionreturnstheamountoftimesinceaprogram(process)startedrunning.Thenumberofmillisecondssincetheprogramstartedrunningisreturned.
Example
Thisprogramtellsyouhowmuchtimeithasused.
vartimeRunning:int
timeRunning:=Time.Elapsed
put"Thisprogramhasrun",timeRunning,"milliseconds"
Details
OnIBMPCcompatibles,thisisthetotaltimesincetheTuringsystemwasstartedup.Thehardwareresolutionofdurationisinunitsof55milliseconds.Forexample,Time.Elapsedmaybeoffbyasmuchas55milliseconds.
OnAppleMacintoshes,thisisthetotaltimesincethemachinewasturnedon.Thehardwareresolutionofdurationisinunitsof17milliseconds(1/60-thofasecond).
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingTime.Elapsed,notbycallingElapsed.
Seealso Time.ElapsedCPUandTime.Delaysubprograms.
![Page 854: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/854.jpg)
Time.ElapsedCPU PartofTimemodule
Syntax Time.ElapsedCPU:int
Description
TheTime.ElapsedCPUfunctionisusedonamultitaskingsystemsuchasUNIXtodeterminetheamountoftimethathasbeenusedbythisprogram(process).Thenumberofcentralprocessormillisecondsassignedtothisprogramisreturned.Thisisoflittleuseonapersonalcomputer,whereTime.ElapsedCPUreturnsthesamevalueasTime.Elapsed.
Example
OnaUNIXsystem,thisprogramtellsyouhowmuchtimeithasused.
vartimeUsed:int
timeUsed:=Time.ElapsedCPU
put"Thisprogramhasused",timeUsed,
"millisecondsofCPUtime"
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingTime.ElapsedCPU,notbycallingElapsedCPU.
Seealso Time.ElapsedandTime.Delaysubprograms.
![Page 855: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/855.jpg)
Time.PartsSec PartofTimemodule
SyntaxTime.PartsSec(year,month,day,hour,minute,second:int):int
Description
TheTime.PartsSecfunctionisusedtoconvertthenumericpartsofadate(specificallytheyear,month,day,hour,minuteandsecond)intothenumberofsecondssince00:00:00GMTJan1,1970andthedatespecifiedbytheparts.
Thefunctioncanalsoconvertatimewithoutadate(year,monthanddayareall0),inwhichcaseitreturnsthenumberofsecondsthathavepassedsincemidnightofthecurrentday.
Ifthenumbersdon'tmakeanysenseorcan'tbeinterpreted,thenTime.PartsSecwillreturn1andError.LastandError.LastMsgwillbesettotheappropriateerror.
Example
Thisprogramgivesthenumberofsecondsbetween00:00:00GMTJan1,1970and9:27inthemorning,ChristmasDay,1989).
put"Thenumberofsecondsfrom00:00:00GMTJan1,1970",
"is",Time.PartsSec(1989,12,25,9,27,0
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingTime.PartsSec,notbycallingPartsSec.
Seealso Time.SecParts,Time.DateandTime.Secfunctions.
![Page 856: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/856.jpg)
Time.Sec PartofTimemodule
Syntax Time.Sec:int
Description
TheTime.Secfunctionreturnsthecurrentdateandtimeasanumber.Thereturnedintegeristhetimeinsecondssince00:00:00GMT(GreenwichMeanTime)January1,1970.
ExampleThisprogramtellsyouhowmanysecondssince1970.
put"Thenumberofsecondssince1970is",Time.Sec
Details
Bewarnedthatonsomecomputers,suchasIBMPCcompatiblesorAppleMacintoshes,thedatemaynotbesetcorrectlyintheoperatingsystem;inthatcase,theTime.Dateprocedurewillgiveincorrectresults.
ThestringformofthedatecanbeconvertedtoanumericformforcomparisonpurposesusingtheTime.DateSecfunction.ThenumericformcanbeconvertedtoastringusingtheTime.SecDatefunction.ThenumericformofthetimecanbeobtainedusingtheTime.Secfunction.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingTime.SecbycallingSec.
Seealso Time.Date,Time.DateSecandTime.SecDatefunctions.
![Page 857: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/857.jpg)
Time.SecDate PartofTimemodule
Syntax Time.SecDate(timeInSecs:int):string
Description
TheTime.SecDatefunctionisusedtoconvertthenumberofsecondssince00:00:00GMTJan1,1970intoadateandtimestring.
IftimeInSecsisincorrectorcan'tbeinterpreted,thenTime.SecDatewillreturntheemptystringandError.LastandError.LastMsgwillbesettotheappropriateerror.
Example
Thisprogramgivesthenumberofsecondssince00:00:00GMTJan1,1970andthedateinstringform.
vartimeInSecs:int:=Time.Sec
vartheDateTime:string
theDateTime:=Time.SecDate(timeInSecs)
put"Thenumberofsecondssince1970is",timeInSecs
put"Greetings!!Thedateandtimetodayis",theDateTime
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingTime.SecDate,notbycallingSecDate.
Seealso Time.Sec,Time.DateandTime.DateSecfunctions.
![Page 858: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/858.jpg)
Time.SecParts PartofTimemodule
SyntaxTime.SecParts(sec:int,varyear,month,day, dayOfWeek,hour,minute,second:int)
Description
TheTime.SecPartsfunctionisusedtoconvertasinglenumberformofthetime(thenumberofsecondssince00:00:00GMTJan1,1970)intoadatewithnumericcomponentparts.
ThedayOfWeekparameteris1forMonday,2forTuesdaythrough7forSunday.
Ifthesecparameterdoesn'tmakeanysenseorcan'tbeinterpreted,thenTime.PartsSecwillsetallthevarparametersto1andError.LastError.LastMsgwillbesettotheappropriateerror.
Example
Thisprogramreturnsthecurrentdayoftheweek.
varyear,month,day,dayOfWeek,hour,minute,second
Time.SecParts(Time.Sec,year,month,day,dayOfWeek
hour,minute,second)
vardays:array1..7ofstring(10):=init("Monday","Tuesday",
"Wednesday","Thursday","Friday","Saturday","Sunday")
put"Thecurrentdayoftheweekis",days(dayOfWeek
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingTime.SecPartscallingSecParts.
Seealso Time.PartsSec,Time.DateandTime.Secfunctions.
![Page 859: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/859.jpg)
Time.SecStr PartofTimemodule
Syntax Time.SecStr(timeInSecs:int,formatString:string):string
Description
TheTime.SecStrfunctionisusedtoconvertthenumberofsecondssince00:00:00GMTJan1,1970intoadateandtimestring.
IftimeInSecsisincorrectorcan'tbeinterpreted,thenTime.SecStrwillreturntheemptystringandError.LastandError.LastMsgwillbesettotheappropriateerror.
Detailsn
TheformatStringparameterspecifieshowtheoutputstringwilllook.TheformatStringconsistsofdifferentlettersspecifyingthedifferentformatsandspacesorcommasbetweentheseletters.Thedifferentletterscanbecombinedtoprovidedifferentdateformats.
Herearetheletters:
a AbbreviatedweekdaynameA Fullweekdaynameb AbbreviatedmonthnameB Fullmonthnamec Dateandtimerepresentationappropriateforlocaled Dayofmonthasdecimalnumber(01-31)H Hourin24-hourformat(00-23)I Hourin12-hourformat(01-12)j Dayofyearasdecimalnumber(001-366)m Monthasdecimalnumber(01-12)M Minuteasdecimalnumber(00-59)p Currentlocale’sA.M./P.M.indicatorfor12-hourclockS Secondasdecimalnumber(00-59)
U Weekofyearasdecimalnumber,withSundayasfirstdayofweek(00-53)
w Weekdayasdecimalnumber(0-6;Sundayis0)
![Page 860: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/860.jpg)
W Weekofyearasdecimalnumber,withMondayasfirstdayofweek(00-53)
x DaterepresentationforcurrentlocaleX Timerepresentationforcurrentlocaley Yearwithoutcentury,asdecimalnumber(00-99)Y Yearwithcentury,asdecimalnumberz,Z Time-zonename
Example
Thisprogramoutputsthecurrentdateandthedaynumberintheyear.Exampleoutput:ThursdayNovember13,2003isdaynumber317of2003
putTime.SecStr(Time.Sec,"ABd,Y"),"isdaynumber",
Time.SecStr(Time.Sec,"j"),"of",Time.SecStr
Execute
Execute
Thisexampledemonstrateseachoftheformattingletters.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingTime.SecStrcallingSecStr.
Time.SecandTime.SecPartsfunctions.
![Page 861: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/861.jpg)
Seealso
![Page 862: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/862.jpg)
time timeofdayasastringprocedure
Syntax time(vart:string)
Description
Thetimestatementisusedtodeterminethecurrenttimeofday.Variabletisassignedastringintheformat"hh:mm:ss".Forexample,ifthetimeistwominutesand47secondsafternineA.M.,twillbesetto"09:02:47".Twenty-fourhourtimeisused.Forexample,eleventhirtyP.M.givesthestring"23:30:00".
Example
Thisprogramgreetsyouandtellsyouthetimeofday.
vartimeOfDay:string
time(timeOfDay)
put"Greetings!!Thetimeis",timeOfDay
Details
BewarnedthatonsomecomputerssuchasIBMPCcompatiblesorAppleMacintoshes,thetimemaynotbesetcorrectlyintheoperatingsystem.Inthiscase,thetimeprocedurewillgiveincorrectresults.
Seealsodelay,clock,sysclock,wallclockanddatestatements.
SeealsopredefinedunitTime.
![Page 863: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/863.jpg)
token ininput
Description
Atokenisessentiallyaword,anumberoraspecialsymbolsuchas:=.InaTuringprogramtherearefourkindsoftokens:keywordssuchasget,identifierssuchasincomeTax,operatorsandspecialsymbols,suchas+and:=,andexplicitconstants,suchas1.5and"Hello".Somekeywords,suchasindex,arereservedandcannotbeusedinprogramstonamevariables,procedures,etc.
Agetstatement,suchas
getincomeTax
usestoken-orientedinput.Thismeansthatwhitespace(blanks,tabs,etc.)isskippedbeforereadingtheinputitemandaftertheitem(uptothebeginningofthenextline).Seethegetstatementfordetails.
Example
Inthisexample,thetokensarevar,x,:,real,x,:=and9.84.
varx:real
x:=9.84
![Page 864: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/864.jpg)
true booleanvalue(notfalse)
Syntax true
DescriptionAboolean(true/false)variablecanbeeithertrueorfalse(seebooleantype).
Example
varpassed:boolean:=true
varmark:int
fori:1..10
getmark
passed:=passedandmark>=60
endfor
ifpassed=truethen
put"Youpassedalltensubjects"
endif
DetailsThelineifpassed=truethencanbesimplifiedtoifpassedthenwithnochangetothemeaningoftheprogram.
![Page 865: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/865.jpg)
type declaration
Syntax
AtypeDeclarationisoneof:
(a) typeid:typeSpec (b) typeid:forward
DescriptionAtypedeclarationgivesanametoatype.Thisnamecanbeusedinplaceofthetype.
Example
typenameType:string(30)
typerange:0..150
typeentry:
record
name:nameType
age:int
endrecord
Details
Thekeywordpervasivecanbeinsertedjustaftertype.Whenthisisdone,thetypeisvisibleinsideallsubconstructsofthetypescope.Withoutpervasive,thetypeisnotvisibleinsidemodules,monitorsandclassesunlessexplicitlyimported.Pervasivetypesneednotbeimported.Youcanabbreviatepervasiveasanasterisk(*).
Aforwardtypeallowspointerstobedeclaredtothetypebeforethetypeisresolved.Toresolveatype,youmustfollowaforwardwithadeclarationofthesamenameandinthesamescope.ThistypedeclarationmustincludeatypeSpec.
![Page 866: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/866.jpg)
TypeConv
Description
ThisunitcontainsthepredefinedsubprogramsthatconvertbetweendifferentTuringstandardtypes.Therearealsosixroutinesthatarepartofthelanguage,ratherthanpartoftheunit,butareconceptuallypartofthisunit.
AllroutinesintheTypeConvunitareexportedunqualified.
DescriptionoftheroutinesintheTypeConvmodulecanbefoundinthischapter.
EntryPoints
intreal Convertsanintegertoareal.intstr* Convertsanintegertoastring.natreal Convertsanaturalnumbertoareal.natstr* Convertsanaturalnumbertoastring.round Convertsarealtoaninteger(rounding).floor Convertsarealtoaninteger(rounddown).ceil Convertsarealtoaninteger(roundup).realstr Convertsarealtoastring.erealstr Convertsarealtoastring(exponentialnotation).frealstr Convertsarealtoastring(noexponent).strint* Convertsastringtoaninteger.
strintok* Returnswhetherastringcanlegallybeconvertedtoaninteger.
strnat* Convertsastringtoanaturalnumber.
strnatok* Returnswhetherastringcanlegallybeconvertedtoanaturalnumber.
strreal Convertsastringtoareal.
strrealok Returnswhetherastringcanlegallybeconvertedtoareal.
chr* ReturnstheASCIIvalueofaspecifiedstringoflengthone.
ord* ReturnsastringoflengthonewiththeASCIIvaluespecified.
![Page 867: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/867.jpg)
*Partofthelanguage,conceptuallypartoftheTypeConvunit.
![Page 868: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/868.jpg)
typeSpec typespecification
Syntax
AtypeSpec(typespecification)isoneof:
(a) int (b) real (c) boolean (d) stringType %Example:string(20) (e) subrangeType %Example:1..150
(f) enumeratedType %Example:enum(red,green,blue)
(g) arrayType %Example:array1..150ofreal
(h) setType %Example:setof1..10
(i) recordType %Example:record…endrecord
(j) unionType %Example:union…endunion
(k) pointerType %Example:pointertocollectionVar
(l) namedType %Example:colorRange (m) nat %naturalnumber
(n) intn %n-byteinteger(n=1,2,4)
(o) natn %n-bytenatural(n=1,2,4)
(p) realn %n-bytereal(n=4,8) (q) char %singlecharacter (r) char(n) %ncharacters (s) subprogramType
![Page 869: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/869.jpg)
Description
Atypespecificationdeterminestheallowedvaluesforavariableorconstant.Forexample,ifvariablexisaninteger(itstypeSpecisint),thepossiblevaluesforxarenumberssuchas-15,0,3and348207.Ifxisarealnumber(itstypeSpecisreal),thenitspossiblevaluesinclude7.8,-35.0,and15e12.Ifxisaboolean,itspossiblevaluesaretrueandfalse.Ifxisastring,itspossiblevaluesincludeHelloandGood-bye.
Example
varnumberOfSides:int
varx,y:real
typerange:0..150%ThetypeSpechereis0
typeentry:%HereisarecordtypeSpec
record
name:string(25)
age:range
endrecord
Seealso
int,real,boolean,string,subrangeType,enum,array,set,record,union,pointer,named,nat,intn,natn,realn,char,andchar(n)types.
![Page 870: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/870.jpg)
unchecked compilerdirective
Dangerous
Description
OOTaddstheconceptof"unchecked"toTuring.Here,youcanrequestthatcertainruntimetests,whichtakeplacebydefault,canbeeliminated.Thismakestheprogrammoreefficientattheriskofunreliability.
Example
Declareptobeanuncheckedpointertoaninteger(seepointersfordetails).Pointerpwillbedangeroustouse,becausetheruntimesystemwillnotchecktoseeifitactuallylocatesaninteger,asopposedtoarbitrarycomputermemory.Inotherwords,uncheckedpointersarelikeClanguagepointers.
varp:unchecked^int
Example
DeclareCtobeanuncheckedcollectionofrecordsoftypeR(seecollectionsfordetails).PointerstoCwillbeunchecked.
varC:uncheckedcollectionofR
Example
Removecheckingfromthebodyofaloop.
fori:1..500
unchecked
ifa(i)=keythen
exit
endif
endfor
Details
Intheaboveexample,theuncheckedkeywordrequeststhatallchecking,inparticular,arrayboundscheckingforarraya,aretobeomitted.Thedisablinglastsfromtheoccurrenceofthekeyworduncheckedtotheendofthesurroundingconstruct,inthiscase,untilendfor.Inasimilarway,thecheckedkeywordwillrequestthatcheckingbere-enabledfromtheoccurenceofcheckedtotheendofthesurroundingconstruct.
Inthecurrent(1999)implementation,theuseofuncheckedto
![Page 871: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/871.jpg)
turnoffcheckinginablockofstatementsisignored.Ingeneral,animplementationmaychoosetoignorerequeststodisablechecking.
![Page 872: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/872.jpg)
union type
Syntax
AunionTypeis:
union[id]:indexTypeof
labellabelExpn{,labelExpn}:
{id{,id}:typeSpec}
{labellabelExpn{,labelExpn}:
{id{,id}:typeSpec}}
[label:{id{,id}:typeSpec}]
endunion
Description
Auniontype(alsocalledavariantrecord)islikearecordinwhichthereisaruntimechoiceamongsetsofaccessiblefields.Thischoiceismadebythetagstatement,whichdeletesthecurrentsetoffieldsandactivatesanewset.
Example
Thisuniontypekeepstrackofvariousinformationaboutavehicle,dependingonthekindofvehicle.
constpassenger:=0
constfarm:=1
constrecreational:=2
typevehicleInfo:
unionkind:passenger..recreationalof
labelpassenger:
cylinders:1..16
labelfarm:
farmClass:string(10)
label:%Nofieldsfor"otherwise"clause
endunion
varv:vehicleInfo
…
tagv,passenger%Activatepassengerpartv.cylinders
Theoptionalidentifierfollowingthekeywordunionisthenameofthetagoftheuniontype.Iftheidentifierisomitted,thetagisstillconsideredtoexist,althoughitsvaluecannotbeaccessed.Thetagmustbeofanindextype,forexample1..7.Youshouldlimittherangeofthisindextype,asthecompilermayhavealimit(atleast255)onthemaximumrangeitcanhandle.
![Page 873: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/873.jpg)
Details
EachlabelExpnmustbeknownatcompiletimeandmustliewithintherangeofthetag'stype.Thefields,includingthetag,ofaunionvaluearereferencedusingthedotoperator,asinv.cylindersandthesecanbeusedasvariablesorconstants.Afieldcanbeaccessedonlywhenthetagmatchesoneofthelabelexpressionscorrespondingtothefield.Thetagcanbechangedbythetagstatementbutitcannotbeassignedto,passedtoavarparameter,orboundtousingvar.
Inaunion,id'soffields,includingthetag,mustbedistinct.However,theseneednotbedistinctfromidentifiersoutsidetheunion.Unionscanbeassignedasawhole(tounionsofanequivalenttype),buttheycannotbecompared.AsemicoloncanoptionallyfolloweachtypeSpec.
Anyarraycontainedinaunionmusthaveboundsthatareknownatcompiletime.
Thenotation>canbeusedtoaccessunionfields.Forexample,ifppointertovehicleRecord,p>farmClasslocatesthefarmClassfield.
Seealso pointer.
![Page 874: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/874.jpg)
unit filecontainingmodule,monitor,orclass
Syntax
AcompilationUnitisoneof:
(a) [importList]mainProgram (b) unitmoduleDeclaration (c) unitmonitorDeclaration (d) unitclassDeclaration
Description
Aprogramcanbedividedupintounits,eachinaseparatefile.Allfilesexceptthemainprogrambeginwiththekeywordunit.Theunitcontainsthemainprogram,amodule,amonitororaclass.
Example
Hereisstackmodulethatisseparatedoutintoafilewhosenameis
unit%Thekeywordunitbeginseachseparatefile
modulestack
exportpush,pop
vartop:int:=0
varcontents:array1..100ofint
procedurepush(i:int)
top+=1
contents(top):=i
endpush
procedurepop(i:int)
i:=contents(top)
top-=1
endpop
endstack
Themainprogram,whichisinanotherfile,gainsaccesstothestackbyimportingit.Hereisthemainprogram:
importvarstack%Usethestack
varn:int
…
stack.push(n)
…
stack.pop(n)
![Page 875: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/875.jpg)
Details
Inthisexample,thekeywordvarintheimportlistisrequiredbecausethemainprogramcausesachangeinthestack,bycallingpushandpopimportlistsofunitsthataremodules,monitorsandclassesareusedtogainaccesstofurtherunits.
Ifthestackwereinafilewithadifferentname,saystk.t,theimportlistwouldberewrittentouseaninclause,asfollows:
importvarstackin"stk.t"
AmainProgramissimplyaprogram.Seeprogram.
Seealsomodule,monitorandclass.Seealsoexportlist,importlist,inheritimplementlistandimplementbylist.
![Page 876: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/876.jpg)
unqualified export
Description
Whenanidentifierxisexportedfromamodule,monitororclassMusingthekeywordunqualified,itcanbeusedoutsideofMwithoutthequalification"M.".Inotherwords,outsideofM,itcanbereferredtoassimplyx.Thekeywordunqualifiedcanbewritteninitsshortformas~.whichispronounced"notdot",asin:
export~.x
Seeals o exportlist.
![Page 877: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/877.jpg)
upper bound
Syntax upper(reference[,dimension]):int
Description
Theupperattributeisusedtofindtheupperboundofanarray,string,char(n)ornon-opaquesubrangetype.(Seelowerforfindingthelowerbound.)
Example
Inaprocedure,seeiftheboundofarrayparameteraislargeenoughthatitcanbesubscriptedbyi.Ifitislargeenough,itisseta(i)tozero.
proceduretest(vara:array1..*ofreal)
ifi<=upper(a)then
a(i):=0.0
endif
endtest
Details
Inasimilarway,ifsisastring,itsupperbound(notlength!)isgivenbyupper(s).Ifanarrayhasmorethanonedimension,asinvarb:array1..10,1..60ofint,youmustspecifythedimension.Forexample,upper(b,2)returns60.
![Page 878: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/878.jpg)
var declaration
Syntax
AvariableDeclarationisoneof:
(a) varid{,id}[:typeSpec][:=initializingValue] (b) collectionDeclaration
Description
Avariabledeclarationcreatesanewvariable(orvariables).Onlyform(a)willbeexplainedhere.SeecollectionDeclarationforexplanationofform(b).ThetypeSpecofform(a)canbeomittedonlyiftheinitializingvalueispresent.
Examplevarj,k:int:=1%jandkareassignedvalue1
vart:="Sample"%Thetypeoftisstring
varv:array1..3ofstring(6):=
init("George","Fred","Alice")
Details
Theinitializingvalue,ifpresent,mustbeanexpressionorelsealistofitemsseparatedbycommasinsideinit(…).ThesyntaxofinitializingValueisoneof:
(a) expn (b) init(initializingValue{,initializingValue})
Eachinit(…)correspondstoanarray,recordorunionvaluethatisbeinginitialized.Thesemustbenestedforinitializationofnestedtypes.
IfthetypeSpecisomitted,thevariable'stypeistakentobethe(root)typeoftheinitializingexpression,forexample,intorstring.ThetypeSpeccannotbeomittedfordynamicarraysorwhentheinitializingvalueisoftheforminit(…).Thevaluesinsideinit(…)mustbeknownatcompiletime.
Thekeywordpervasivecanbeinsertedjustaftervar.Whenthisisdone,thevariableisvisibleinsideallsubconstructsofthevariable'sscope.Withoutpervasive,thevariableisnotvisibleinsidemodulesunlessexplicitlyimported.Pervasivevariablesneednotbeimported.Youcanabbreviateanasterisk(*).
OOTextendsTuringinthefollowingway.OOTchangesform(a)toallowtheoptionaluseoftheregisterkeywordtorequestthatthevariablebeplacedinamachineregister.TheOOTsyntaxforform(a)isactually:
![Page 879: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/879.jpg)
var[pervasive][register]id{,id}[:typeSpec
Inthecurrent(1994)OOTimplementation,programsareruninterpretivelyusingpseudo-code,whichhasnomachineregisters,andtheregisterkeywordisignored.Seeofregistervariables.
Seealsocollection,bind,procedureandfunctiondeclarations,parameterdeclarations,importlistsforotherusesofthekeywordvar.
![Page 880: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/880.jpg)
variableReference useofavariable
Syntax
AvariableReferenceis:
variableId{componentSelector}
Description
InaTuringprogram,avariableisdeclaredandgivenaname(variableId)andthenused.Eachuseiscalledavariablereference.
Ifthevariableisanarray,collection,recordorunion,itsparts(components)canbeselectedusingsubscriptsandfieldnames(usingcomponentSelectors).TheformofacomponentSelectorisoneof:\
(a) (expn{,expn}) (b) .fieldId
Form(a)isusedforsubscripting(indexing)arraysandcollections.Thenumberofarraysubscriptsmustbethesameasinthearray'sdeclaration.Acollectionhasexactlyonesubscript,whichmustbeapointertothecollection.Form(b)isusedforselectingafieldofarecordorunion.
Example
Followingthedeclarationsofk,aandr,eachofk,a(k)andr.namearevariablereferences.
vark:int
vara:array1..100ofreal
varr:
record
name:string(20)
phone:string(8)
endrecord
…
k:=5
a(k):=3.14159
r.name:="SteveCook"
Avariablereferencecancontainmorethanonecomponent
![Page 881: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/881.jpg)
Detailsselector,forexample,whenthevariableisanarrayofrecords.Foranexample,seetherecordtype.SeealsoconstantReferenceandvardeclaration.
![Page 882: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/882.jpg)
View
Description
Thisunitcontainsthepredefinedsubprogramsthatdealwiththecurrentoutputsurface,whichisawindow.
AllroutinesintheViewunitareexportedqualified(andthusmustbeprefacedwith"View.")withtheexceptionofmaxx,maxy,maxcolorandmaxcolourwhichareexportedunqualified.
maxx
Returnsthemaximumxcoordinate(width1)(exportedunqualified).
maxy
Returnsthemaximumycoordinate(height1)(exportedunqualified).
maxcolor
Returnsthemaximumcolornumber(#colors1)(exportedunqualified).
maxcolour
Returnsthemaximumcolornumber(#colors1)(exportedunqualified).
Set Changestheconfigurationoftheoutputsurface.
ClipSet Clipsoutputtoaspecifiedrectangle.
ClipAdd
Addsanotherspecifiedrectangletotheclipping
![Page 883: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/883.jpg)
EntryPoints
region.
ClipAddOval Addsanotherspecifiedovaltotheclippingregion.
ClipOff Stopsallclipping.
WhatDotColor
Getsthecolorofthepixelataspecifiedlocation.
WhatDotColour Getsthecolorofthepixelataspecifiedlocation.
Update
Updatestheonscreenwindowfromtheoffscreenbitmap.
UpdateArea
Updatespartoftheonscreenwindowfromtheoffscreenbitmap.
SetTransparentColor
SetsthetransparentcolortobeignoredwhenusingpicUnderMerge
mode.
SetTransparentColour
SetsthetransparentcolourtobeignoredwhenusingpicUnderMerge
mode.
![Page 884: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/884.jpg)
View.ClipAdd PartofViewmodule
Syntax View.ClipAdd(x1,y1,x2,y2:int)
Description
TheView.ClipAddprocedureaddsanotherrectanglespecifiedby(x1,y1)-(x2,y2)totheclippingregion.Thisonlyworksonsystemsthatsupportcomplexclippingregions.Ifnoclippingregionhasbeenspecified,thentherectanglebecomesthecompleteclippingregion.
Aclippingregionistheregionthattheoutputwillappearin.Iftherectangleisspecifiedastheclippingregion,anydrawingdoneoutsidetherectanglewillnotappear.
Tosettheinitialclipping,orremovetheoldregionandreplaceitwithanewone,useView.ClipSet.Tosettheclippingregionbacktotheentirescreenorwindow,useView.ClipOff.
Thesecommandsonlyworkin"graphics"mode.
Example
Thisprogramsetstheclippingregiontofiverectanglesandthendrawsrandomcircles.Thecircleswillonlyappear(orpartiallyappear)intherectangles.
constmaxx13:int:=maxxdiv3
constmaxx23:int:=2*maxxdiv3
constmaxy13:int:=maxydiv3
constmaxy23:int:=2*maxydiv3
View.ClipSet(0,0,maxx13,maxy13)
View.ClipAdd(maxx23,0,maxx,maxx13)
View.ClipAdd(maxx13,maxy13,maxx23,maxy23)
View.ClipAdd(0,maxy23,maxx13,maxy)
View.ClipAdd(maxx23,maxy23,maxx,maxy)
%Drawtherandomovalsinthebox
varx,y,clr:int
loop
x:=Rand.Int(0,maxx)%Randomx
y:=Rand.Int(0,maxy)%Randomy
clr:=Rand.Int(0,maxcolor)%Randomcolor
Draw.FillOval(x,y,30,30,clr)
endloop
![Page 885: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/885.jpg)
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingView.ClipAdd,notbycallingClipAdd.
Seealso View.ClipSetandView.ClipOfffunctions.
![Page 886: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/886.jpg)
View.ClipAddOval PartofViewmodule
Syntax View.ClipAddOval(x,y,xradius,yradius:int)
Description
TheView.ClipAddOvalprocedureaddsanotherovalspecifiedby(x,y)andxradiusandyradius)totheclippingregion.Ifnoclippingregionhasbeenspecified,thentheovalbecomesthecompleteclippingregion.
Aclippingregionistheregionthattheoutputwillappearin.Iftherectangleisspecifiedastheclippingregion,anydrawingdoneoutsidetheovalwillnotappear.
Tosettheinitialclipping,orremovetheoldregionandreplaceitwithanewrectangle,useView.ClipSet.Tosettheclippingregionbacktotheentirescreenorwindow,useView.ClipOff.
Thesecommandsonlyworkin"graphics"mode.
Example
Thisprogramsetstheclippingregiontofivecirclesandthendrawsrandomsquares.Thesquareswillonlyappear(orpartiallyappear)intheovals.
constc1:int:=maxydiv4
constc2:int:=3*maxydiv4
constradius:int:=maxydiv4
View.ClipAddOval(c1,c1,radius,radius)
View.ClipAddOval(c1,c2,radius,radius)
View.ClipAddOval(c2,c1,radius,radius)
View.ClipAddOval(c2,c2,radius,radius)
%Drawtherandomsquaresinthebox
varx,y,clr:int
loop
x:=Rand.Int(0,maxx-30)%Randomx
y:=Rand.Int(0,maxy-30)%Randomy
clr:=Rand.Int(0,maxcolor)%Randomcolor
Draw.FillBox(x,y,x+30,y+30,clr)
endloop
![Page 887: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/887.jpg)
Execute
Execute
BycombininganimationusingView.UpdateandView.ClipAddOval,youcanachieveamovingspotlighteffect.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingView.ClipAddOval,notbycallingClipAddOval.
Seealso View.ClipSet,View.ClipAddandView.ClipOfffunctions.
![Page 888: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/888.jpg)
View.ClipOff PartofViewmodule
Syntax View.ClipOff
Description
TheView.ClipOffprocedureturnsoffclipping.Thismeansthatanydrawingcommandscanappearontheentiredrawingsurface(thescreenorthewindow,dependingonthesystem).
Thesecommandsonlyworkin"graphics"mode.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingView.ClipOff,notbycallingClipOff.
Seealso View.ClipAddandView.ClipSetfunctions.
![Page 889: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/889.jpg)
View.ClipSet PartofViewmodule
Syntax View.ClipSet(x1,y1,x2,y2:int)
Description
TheView.ClipSetproceduresetstheclippingregiontotherectanglespecifiedby(x1,y1)-(x2,y2).Ifaclippingregionalreadyexist,itisreplacedbythespecifiedrectangle.
Aclippingregionistheregioninwhichtheoutputwillappear.Iftherectangleisspecifiedastheclippingregion,anydrawingdoneoutsidetherectanglewillnotappear.
Tosettheinitialclipping,orremovetheoldregionandreplaceitwithanewone,useView.ClipSet.Tosettheclippingregionbacktotheentirescreenorwindow,useView.ClipOff.
Thesecommandsonlyworkin"graphics"mode.
Example
Thisprogramsetstheclippingregiontofiverectanglesandthendrawsrandomcircles.Thecircleswillonlyappear(orpartiallyappear)intherectangles.
constmaxx13:int:=maxxdiv3
constmaxx23:int:=2*maxxdiv3
constmaxy13:int:=maxydiv3
constmaxy23:int:=2*maxydiv3
View.ClipSet(0,0,maxx13,maxy13)
View.ClipAdd(maxx23,0,maxx,maxy13)
View.ClipAdd(maxx13,maxy13,maxx23,maxy23)
View.ClipAdd(0,maxy23,maxx13,maxy)
View.ClipAdd(maxx23,maxy23,maxx,maxy)
%Drawtherandomovalsinthebox
varx,y,clr:int
loop
x:=Rand.Int(0,maxx)%Randomx
y:=Rand.Int(0,maxy)%Randomy
clr:=Rand.Int(0,maxcolor)%Randomcolor
Draw.FillOval(x,y,30,30,clr)
endloop
Exportedqualified.
![Page 890: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/890.jpg)
Status ThismeansthatyoucanonlycallthefunctionbycallingView.ClipSet,notbycallingClipSet.
Seealso View.ClipAddandView.ClipOfffunctions.
![Page 891: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/891.jpg)
View.maxcolor PartofViewmodule
Syntax View.maxcolor:int
Description
Themaxcolorfunctionisusedtodeterminethemaximumcolornumberforthecurrentmodeofthescreen.Thealternatespellingismaxcolour.
Example
Thisprogramoutputsthemaximumcolornumber.
setscreen("graphics")
…
put"Themaximumcolornumberis",View.maxcolor
Details
Thescreenshouldbeina"screen"or"graphics"mode.Ifitisnot,itwillautomaticallybesetto"screen"mode.SeeView.Setfordetails.
ForIBMPCcompatiblesin"screen"mode,maxcolor=15.ForthedefaultIBMPCcompatible"graphics"mode(VGA),maxcolor=15.
DetailsView.maxcolorisidenticaltoRGB.maxcolor.Itisplacedhereforconsistencywithotherscreeninformationroutines.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingView.maxcolor.NotethatRGB.maxcolorisexportedunqualified,sothatonecancallmaxcolor.
Seealso
Draw.Dotforexamplesoftheuseofmaxcolor.SeetheText.Colorprocedurewhichisusedforsettingthecurrently-activecolor.
![Page 892: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/892.jpg)
View.maxx PartofViewmodule
Syntax maxx:int
DescriptionThemaxxfunctionisusedtodeterminethemaximumvalueofxforthecurrentgraphicsmode.
Example
Thisprogramoutputsthemaximumxvalue.
setscreen("graphics")
…
put"Themaximumxvalueis",maxx
Details
Thescreenshouldbeina"graphics"mode.Ifitisnot,itwillautomaticallybesetto"graphics"mode.Seesetscreenfordetails.
ForthedefaultIBMPCcompatiblegraphicsmode(CGA),maxx=319.
Status
Exportedunqualified.
ThismeansthatyoucancallthefunctionbycallingmaxxorbycallingView.maxx.
SeealsoDraw.Dotforanexampleoftheuseofmaxxandforadiagramillustratingxandypositions.
![Page 893: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/893.jpg)
View.maxy PartofViewmodule
Syntax maxy:int
DescriptionThemaxyfunctionisusedtodeterminethemaximumvalueofyforthecurrentgraphicsmode.
Example
Thisprogramoutputsthemaximumyvalue.
setscreen("graphics")
…
put"Themaximumyvalueis",maxy
Details
Thescreenshouldbeina"graphics"mode.Ifitisnot,itwillautomaticallybesetto"graphics"mode.Seesetscreenfordetails.
ForthedefaultIBMPCcompatiblegraphicsmode(CGA),maxy=199.
Status
Exportedunqualified.
ThismeansthatyoucancallthefunctionbycallingmaxyorbycallingView.maxy.
SeealsoDraw.Dotforanexampleoftheuseofmaxyandforadiagramillustratingxandypositions.
![Page 894: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/894.jpg)
View.Set PartofViewmodule
Syntax View.Set(s:string)
Example
HereareexampleusesoftheView.Setprocedure.Inmanycases,thesewillappearasthefirststatementoftheprogram.However,theycanappearanyplaceinaprogram.
View.Set("graphics")%Switchtographicsmode
View.Set("screen")%Switchtoscreenmode
View.Set("nocursor")%Turnoffcursor
View.Set("noecho")%Donotechokeystrokes
Description
TheView.Setstatementisusedtochangethemodeofthescreen,aswellasthewayinwhichTuringdoesinputandoutput.TheparametertoView.Setisastring,suchas"graphics".Thestringcontainsoneormoreoptionsseparatedbycommas,suchas"text,noecho".View.Setaffectstheactivewindow.
Details
Therearetwowindowmodes,textandgraphics.
textmodedoesnotallowanygraphicswhatsoever(includingcursorpositioning,etc.).Onlyputandgetareallowed.Anyoutputthatscrollsoffthetopofthewindowispreservedandcanviewedorprintedlater.
graphicsmodeallowscharactergraphicsandpixelgraphicscommandssuchandText.LocateandDraw.Box.
ThedefaultgraphicsmodeisdefinedintheTuringpreferences.Itisgoodpracticetosetthedesiredmodesothattheprogramwillfunctionproperlyregardlessofthedefaultgraphicsmode.Notethatiftheuserprintstheoutputwindow,intextmode,alloutputsenttothewindowisprinted.Ingraphicsmode,onlythecurrentoutputofthewindowisprinted.Iftheusersavestheoutputwindow,atextmodewindowwillproduceatextfilecontainingalltheoutputsenttothewindow.AgraphicswindowwillproduceaBMPgraphicsfilecontainingthecurrentcontentsofthewindow.
WheretheoptionstoView.Setaremutuallyexclusive,theyarelisted
![Page 895: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/895.jpg)
Details
herewiththedefaultunderlined.Herearetheoptions:
"cursor","nocursor"-Causesthecursortobeshown(orhidden).Thecursorisonlydisplayedwhentheprogramisawaitinginput.
"echo","noecho"-Causes(orsuppresses)echoingofcharactersthataretyped.Echoingiscommonlyturnedoffininteractiveprogramstokeeptypedcharactersfrombeingechoedatinappropriateplacesonthescreen.
"noxor","xor"-noxormodemeansthatalldrawingisdonenormally.Inxormode,allpixelgraphicsaredrawnXOR'edonthebackground(withtheexceptionofthePicroutines,wherethedrawingmodeisspecified).ThemostimportantpropertyofanXOR'edobjectisthatitcanbeerasedandthebackgroundrestoredbyXOR'ingtheobjectontopofitself.
"msdos","nomsdos"-CausesthewindowtousetheMS-DOScharacterset(withlinedrawingcharacters)insteadoftheWindowsANSIcharacterset.The"nomsdos"optioncausesthewindowtousetheWindowsANSIcharacterset.Notethatthe"msdos"optiononlyworksiftheWindowsfont(usuallyCourierNew)supportsit.
"visible","invisible","popup"-Causestheactivewindowtobecomevisible(invisibleor,forpopup,invisibleuntilinputoroutputoccursinthewindow).
"title:<text>"-Causesthetitleoftheactivewindowtobesetto<text
"position:<x>;<y>"-Causesthepositionoftheupperleftcorneroftheactivewindowtobesetto(x,y).The<x>parametercanalsobeoneof:“left”,“center”,“center”or“right”,inwhichcasethewindowwillbeplacedontheleft,centerorrightsideofthescreen.The<y>parametercanalsobeoneof:“top”,“middle”,“truemiddle”,or“bottom”inwhichcasethewindowwillbeplacedatthetop,middleabout1/3fromthetop,middleorbottomofthescreen.Notethatwhenawindowissupposedtobecenteredinthemiddleofthescreen,“middle”usuallylooksbetterthan“truemiddle”.
"nooffscreenonly","offscreenonly"Causesor(suppresses)outputfrom
![Page 896: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/896.jpg)
beingsenttothevisiblewindow.Whentheoffscreenonlyoptionisactive,anytextandgraphicsoutputisdrawntotheoffscreenbufferthatismaintainedforeveryRunwindowbutnotdrawntothescreen.View.UpdateisthenusedtocopytheentirecontentsoftheoffscreenbuffertotheRunwindow.Byallowingnumerousdrawingcommandstobesenttotheoffscreenbufferandthenupdatingthewindowatonetime,itispossibletogetsmootheranimation.
"buttonbar","nobuttonbar"Causesor(suppresses)thedisplayofabuttonbaratthetopoftheoutputwindowwhichallowstheusertoeasilystopprogramexecutionorsaveandprinttheoutputwindow.
"text","screen","graphics"-Setswindowtothegivenmodeandalwayserasesthescreen,evenwhenalreadyintherequestedmode.
Thetextmodecanhaveamodifierintheform"text:<rows>;<cols>".Thissetsthewindowtobe<rows>by<cols>oftextinsize.
Thescreenmodeactuallysetsthewindowtographicsmode.Itcanhaveamodifierintheform"screen:<rows>;<cols>".Thissetsthewindowtobe<rows>by<cols>oftextinsize.
Thegraphicsmodecanhaveamodifierintheform"graphics:<width<height>".Thissetsthewindowtobe<width>by<height>pixelsinsize.
Tosetawindowtothemaximumsizeavailableonthescreen,youcanuse“max”forthe<width>,<height>,<rows>or<columns>parameters.Ifthewindowrequestedislargerthanwillfitonthescreen,thewindowwillfilltheentirescreenandscrollbarswillbeaddedtotheoutputwindowtoallowthewindowusertoseetherestofthewindow.
Thisprogramcreatesagraphicswindowthatis300pixelsby100pixels.
View.Set("graphics:300;100")
Thisprogramoutputsthesquarerootsforthefirst200numbers.Theusercaninspectalltheoutputandprintthevaluesaftertheprogramhasfinishedexecution
![Page 897: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/897.jpg)
Example
View.Set("text")
forvalue:1..200
putvalue:3,"",sqrt(value)
endfor
Thisprogramcreatesawindowwithoutabuttonbaratthetopthatissizedtofitthescreen.Itthendrawsan“X”inredinthewindow.
View.Set("graphics:max;max,nobuttonbar")
Draw.Line(0,0,maxx,maxy,red)
Draw.Line(maxx,0,0,maxy,red)
Thisprogramresizesthewindowto200x200,movestheoutputwindowtothebottom-leftofthescreenandhidesthebuttonbar.Itthensetsthewindowtitleto“BottomLeftWindow”andoutputstheword“Hello”.
View.Set("graphics:200;200,position:bottom;left,nobuttonbar")
View.Set("title:BottomLeftWindow")
put"Hello"
Seealso setscreenforfurtherinformation.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingView.Set,notbycallingSet.
![Page 898: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/898.jpg)
View.SetTransparentColor PartofViewmodule
Syntax View.SetTransparentColor(colorNumber:int)
Description
TheView.SetTransparentColorproceduresetsthecolorintheRunwindowthatshouldbeconsideredtransparentwhenapictureisdrawnonthewindowusingthepicUnderMergemode.Ifnocolorisspecified,thenthedefaultbackgroundcolor(colorbg,usuallywhite)isusedasthetransparentcolor.YoucanchangethisbackgroundcolorusingRGB.SetColoroncolor0.
DetailsThiscallisoftenusedwhenyouwanttheRunwindowtohaveabackgroundcolorotherthancolor0.
Example
Thisprogramdisplaystwoimagesloadedfromthesamefile.Inthesecondimage,thetransparentcolorhasbeensettobrightred(thatis,thepartsoftheimagethataremeanttobetransparentareinbrightred).
constSIZE:int:=20
procedureDrawCheckerBoard
cls
forx:0..maxxbySIZE
fory:0..maxybySIZE
if((x+y)divSIZE)mod2=0then
Draw.FillBox(x,y,x+SIZE,y+
endif
endfor
endfor
endDrawCheckerBoard
varpic:int:=Pic.FileNew("datafiles/airplane.bmp")
Pic.SetTransparentColor(pic,brightred)
RGB.SetColor(0,1.,0.,0.)
DrawCheckerBoard
Pic.Draw(pic,100,100,picUnderMerge)
View.SetTransparentColor(brightgreen)
Pic.Draw(pic,400,100,picUnderMerge)
![Page 899: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/899.jpg)
Execute
DetailsView.SetTransparentColourisanalternatespellingforView.SetTransparentColor.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingView.SetTransparentColor,notbycallingSetTransparentColor.
Seealso Pic.SetTransparentColor.
![Page 900: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/900.jpg)
View.Update PartofViewmodule
Syntax View.Update
Description
TheView.UpdateprocedureupdatesaRunwindowfromanoffscreenbitmap.ItisusedwiththecommandView.Set("offscreenonly")whichpreventstheRunwindowfrombeingupdateduntiltheView.Updatecommandisgiven.
Example
Thisprogramdisplays30circlesbouncingaroundthescreen.ToseetheeffectwithoutView.Update,commentoutthelineView.Set("offscreenonly")
%Placesomecirclesaroundthescreen
constRADIUS:int:=30
constNUM_BALLS:int:=20
varx,y,dx,dy,clr:array1..NUM_BALLSofint
fori:1..NUM_BALLS
x(i):=Rand.Int(RADIUS,maxx-RADIUS)
y(i):=Rand.Int(RADIUS,maxy-RADIUS)
dx(i):=Rand.Int(-3,3)
dy(i):=Rand.Int(-3,3)
clr(i):=Rand.Int(1,15)
endfor
%Now,anydrawingtothescreenwon'tappearuntila
%View.Updateisgiven.
View.Set("offscreenonly")
loop
cls%Cleartheoffscreenwindow
fori:1..NUM_BALLS
ifx(i)+dx(i)<RADIUSor
x(i)+dx(i)>maxx-RADIUSthen
dx(i):=-dx(i)
endif
ify(i)+dy(i)<RADIUSor
y(i)+dy(i)>maxy-RADIUSthen
dy(i):=-dy(i)
endif
x(i):=x(i)+dx(i)
y(i):=y(i)+dy(i)
Draw.FillOval(x(i),y(i),RADIUS,RADIUS
endfor
%Allthecircleshavebeendrawn.Nowupdatethescreen.
View.Update
![Page 901: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/901.jpg)
Time.Delay(5)
endloop
Execute
Details
AllTuringRunwindowshavebothanonscreenvisiblewindowandanoffscreenwindow.Wheneveranyoutputissenttothescreen,boththeonscreenwindowandtheoffscreenwindowareupdated.WhentheRunwindowneedstobeupdated(forexamplewhenanotherwindowismovedovertopofitandthenremoved),Turingcopiestheoffscreenwindowontotheonscreenwindow.
WhentheView.Set("offscreenonly")commandisgiven,Turingnolongerdrawstotheonscreenwindowwhenanydrawingcommandisgiven.However,itdoesupdatetheoffscreenwindow.WhentheView.Updatecommandisgiven,theentireoffscreenwindowiscopiedtotheonscreenwindow.
Thiscanbeusedtoprovidesmooth,flicker-freeanimation.Animatedobjectsflickerwhentheobjectbeinganimateddisappearsfromtheonscreenwindowforaperiodoftime.ByusingView.Set("offscreenonly")/View.Update,theonscreenwindowisneverblank.Instead,theoffscreenwindowdrawnovertopofftheonscreenwindow,replacingit.Thismeansthattheon-screenwindowisneverblankedout,eliminatingtheflickeringfoundintheanimation.
Details
It'sveryeasytoforgetthatnooutputwillappearintheRunwindowwhenusingView.Update.RemembertouseView.Set("nooffscreenonly")toturnoffthisfeaturesendingoutputfordebuggingpurposes.
Details
View.UpdateshouldnotbeusedinconjunctionwiththeSpritemodule.Spritescanbeconsideredalimitedversionofthistechnique.View.Updatealsoworkswellwhentheentirebackgroundis
![Page 902: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/902.jpg)
changing.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingView.Update,notbycallingUpdate.
SeealsoView.Setforthe"offscreenonly"and"nooffscreenonly"options.
View.UpdateAreaforupdatingpartofthewindowatatime.
![Page 903: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/903.jpg)
View.UpdateArea PartofViewmodule
Syntax View.UpdateArea(x1,y1,x2,y2)
Description
TheView.UpdateAreaprocedureupdatesarectanglularareaRunwindow,specifiedby(x1,y1)-(x2,y2)fromtheoffscreenbitmap.ItisusedwiththecommandView.Set("offscreenonly")whichpreventstheRunwindowfrombeingupdateduntiltheView.UpdateAreaorView.Updatecommandisgiven.
Becausetheentirescreenisnotupdatedeachtime,theanimationcanbemuchfaster,especiallyonslowmachines.ThisproceduredoestakemoreefforttousethanView.Updateasitrequirestheprogrammertocalculatewhichportionofthescreenmustbeupdated.
Example
Thisprogrammovesastarbackandforthacrossthescreen.TocomparethespeedupView.UpdateAreawithView.Update,replacethecallstoView.UpdateAreawithView.Update.
View.Set("offscreenonly")
varSIZE:int:=50
loop
forx:0..maxx-SIZE
Draw.FillStar(x,100,x+SIZE,100+SIZE
View.UpdateArea(x-1,100,x+SIZE,100+
Draw.FillStar(x,100,x+SIZE,100+SIZE
endfor
fordecreasingx:maxx-SIZE..0
Draw.FillStar(x,100,x+SIZE,100+SIZE
View.UpdateArea(x,100,x+SIZE+1,100+
Draw.FillStar(x,100,x+SIZE,100+SIZE
endfor
endloop
Execute
![Page 904: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/904.jpg)
Details
Iftheentirescreenisbeingupdatedeachtimethroughtheanimationloop(forexampleifthebackgroundimageischanging),thenuseView.Updateinstead.
WhenusingView.UpdateArea,itisimportanttocorrectlycalculatetheregiontobeupdated.Thisregionmustnotonlycontaintheitembeingdrawn,butalsoanyareawherethebackgroundshouldbereplaced.Forexample,intheprogramabove,theareaupdatedincludedtheonepixeltotheleftofthestarwhenthestarwasmovingright-wardandonepixeltotherightofthestarwhenthestarwasmovingleft-ward.
Execute
HereisanexampleprogramthatallowsyoutocomparethespeedofanimationusingView.UpdatewithView.UpdateArea.Theprogramanimatesanobjectonabackgroundofstars.Pressinganykeyswitchesbetweenthetwocalls.
AllTuringRunwindowshavebothanonscreenvisiblewindowandanoffscreenwindow.Wheneveranyoutputissenttothescreen,boththeonscreenwindowandtheoffscreenwindowareupdated.WhentheRunwindowneedstobeupdated(forexamplewhenanotherwindowismovedovertopofitandthenremoved),Turingcopiestheoffscreenwindowontotheonscreenwindow.
![Page 905: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/905.jpg)
Details
WhentheView.Set("offscreenonly")commandisgiven,Turingnolongerdrawstotheonscreenwindowwhenanydrawingcommandisgiven.However,itdoesupdatetheoffscreenwindow.WhentheView.Updatecommandisgiven,theentireoffscreenwindowiscopiedtotheonscreenwindow.
Thiscanbeusedtoprovidesmooth,flicker-freeanimation.Animatedobjectsflickerwhentheobjectbeinganimateddisappearsfromtheonscreenwindowforaperiodoftime.ByusingView.Set("offscreenonly")/View.Update,theonscreenwindowisneverblank.Instead,theoffscreenwindowdrawnovertopofftheonscreenwindow,replacingit.Thismeansthattheon-screenwindowisneverblankedout,eliminatingtheflickeringfoundintheanimation.
Details
It'sveryeasytoforgetthatnooutputwillappearintheRunwindowwhenusingView.UpdateArea.RemembertouseView.Set("nooffscreenonly")toturnoffthisfeaturesendingoutputfordebuggingpurposes.
Details
View.UpdateAreashouldnotbeusedinconjunctionwiththeSpritemodule.Spritescanbeconsideredalimitedversionofthistechnique.View.UpdateAreaalsoworkswellwhentheentirebackgroundischanging.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingView.UpdateArea,notbycallingUpdateArea.
SeealsoView.Setforthe"offscreenonly"and"nooffscreenonly"options.
View.Updateforproceduretoupdatetheentirescreenatonetime.
![Page 906: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/906.jpg)
View.WhatDotColor PartofViewmodule
Syntax View.WhatDotColor(x,y:int):int
Description
TheView.WhatDotColorfunctionisusedtodeterminethecolornumberofthespecifiedpixel.ThealternatespellingisView.WhatDotColour.
Example
Thisprogramdrawsalinewhichbouncesofftheedgesofthescreenandmakesabeepwhenitfindsapixelthathasalreadybeencolored.
View.Set("graphics")
varx,y:int:=0
vardx,dx:int:=1
loop
ifView.WhatDotColor(x,y)not=0and
View.WhatDotColor(x,y)not=brightred
Draw.FillOval(x,y,10,10,brightred)
endif
Draw.Dot(x,y,1)
x:=x+dx
y:=y+dy
ifx=0orx=maxxthen
dx:=-dx
endif
ify=0ory=maxythen
dy:=-dy
endif
endloop
Execute
AnotherexampleillustratestheuseofView.WhatDotColortodeterminethecolorofpixelsinawindowpaintedwithmulti-colorblocks.Theactualcolornumberappearsintheblock.The
![Page 907: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/907.jpg)
Example
colorofthedotunderthemousecursorappearsintheupper-leftcornerofthewindow.Notethatyoucanalsoplacethemousecursorovertheblacktextindicatingthecolornumber.
Details
Thescreenshouldbeina"graphics"mode.Ifisnotsetto"graphics"mode,itwillautomaticallybesetto"graphics"mode.SeeView.Setfordetails.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingView.WhatDotColor,notbycallingWhatDotColor.
Seealso
Draw.Dot,whichisusedforsettingthecolorofapixel.Seealsomaxxandmaxy,whichareusedtodeterminethenumberofpixelsonthescreen.
![Page 908: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/908.jpg)
wait blockaprocessstatement
Syntax
AwaitStatementis:
waitvariableReference[,expn]
Description
Thewaitstatementisusedinaconcurrentprogramtocausetheexecutingprocesstobeblocked(togotosleep)untilitisawakenedbyasignalstatement.Thestatementcanonlybeusedinsideamonitor(aspecialkindofmodulethathandlesconcurrency).Awaitstatementoperatesonaconditionvariable(thevariableReference),whichisessentiallyaqueueofsleepingprocesses.Seeconditionforanexampleofawaitstatement.
Details
Awaitstatementforapriorityconditionmustincludetheoptionalexpn,.Thisexpressionmustbeanon-negativeintvaluewhichisusedtoorderprocesseswaitingforthecondition,lownumbersfirst.
Awaitstatementforatimeoutconditionmustincludetheoptionalexpn,whichmustbeanon-negativeintvaluewhichgivesthetimeoutinterval.Aprocesswaitingforatimeoutconditionisimplicitlyawakenedifitwaitslongerthanitstimeoutinterval.
Seealsoconditionandsignal.Seealsomonitorandfork.Seealsoempty.Seealsopause.
![Page 909: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/909.jpg)
wallclock secondssince1/1/1970procedure
Syntax wallclock(varc:int)
DescriptionThewallclockstatementisusedtodeterminethetimeinsecondssince00:00:00GMT(GreenwichMeanTime)January1,1970.
Example
Thisprogramtellsyouhowmanysecondssince1970.
varseconds:string
wallclock(seconds)
put"Thenumberofsecondssince1970is",seconds
Details
BewarnedthatonsomecomputerssuchasIBMPCcompatiblesorAppleMacintoshes,thetimemaynotbesetcorrectlyintheoperatingsystem;inthatcase,thewallclockprocedurewillgiveincorrectresults.Also,onIBMPCcompatibles,thecallisdependentonhavingthetimezoneTZvariablecorrectlyset.OnanIBMPC,thedefaulttimezoneissettoPST(6hoursfromGMT).
OntheAppleMacintosh,thewallclockprocedurereturnsthenumberofsecondssince00:00:00localtimeJan.1,1970.
Seealsodelay,time,clock,sysclockanddatestatements.
SeealsopredefinedunitTime.
![Page 910: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/910.jpg)
whatcol cursorpositionfunction
Syntax whatcol:int
DescriptionThewhatcolfunctionisusedtodeterminethecursorposition'scolumn.
Example
ThisprogramoutputsThecurrentrowis5,thecurrentcolumnis15.
locate(5,10)
put"12345"..
put"Thecurrentrowis",whatrow
put"Thecurrentcolumnis",whatcol
DetailsThescreenshouldbeina"screen"or"graphics"mode.whatcolfunctionsproperlyevenifthecursorisinvisible.
Seealso
thewhatrowfunction,whichisusedtosetthedeterminethecursorrow.Seealsothelocate,maxrowandmaxcolprocedure.
SeealsopredefinedunitText.
![Page 911: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/911.jpg)
whatcolor textcolorgraphicsfunction
Syntax whatcolor:int
Description
Thewhatcolorfunctionisusedtodeterminethecurrent(foreground)color,ie.,thecolorusedforcharactersthatareoutputusingput.Thealternatespellingiswhatcolour.
Example
Thisprogramoutputsthecurrently-activecolornumber.Themessageisalsogiveninthecurrently-activecolor.
setscreen("graphics")
…
put"Thiswritingisincolornumber",whatcolor
DetailsThescreenshouldbeina"screen"or"graphics"mode.Seesetscreenfordetails.
Seealso
thecolorprocedure,whichisusedtosetthecolor.Seealsocolorbackandwhatcolorback.
SeealsopredefinedunitText.
![Page 912: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/912.jpg)
whatcolorback colorofbackgroundfunction
Syntax whatcolorback:int
DescriptionThewhatcolorbackfunctionisusedtodeterminethecurrentbackgroundcolor.Thealternatespellingiswhatcolourback.
Example
Thisprogramoutputsthecurrently-activebackgroundcolornumber.Thebackgroundcolorofthemessageisdeterminedbythisnumber.
setscreen("screen")
…
put"Thebackgroundofthiswriting"
put"isincolornumber",whatcolorback
Details
Thescreenshouldbeina"screen"or"graphics"mode.Bewarethatthemeaningofbackgroundcolorisdifferentinthesetwomodes.Seecolorbackfordetails.
Seealsocolorandwhatcolor.
SeealsopredefinedunitText.
![Page 913: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/913.jpg)
whatdotcolor graphicsfunction
Syntax whatdotcolor(x,y:int):int
DescriptionThewhatdotcolorfunctionisusedtodeterminethecolornumberofthespecifiedpixel.Thealternatespellingiswhatdotcolour.
Example
Thisprogramdrawsalinewhichbouncesofftheedgesofthescreenandmakesabeepwhenitfindsapixelthathasalreadybeencolored.
setscreen("graphics")
varx,y:int:=0
vardx,dx:int:=1
loop
ifwhatdotcolor(x,y)not=0then
sound(400,50)
endif
drawdot(x,y,1)
x:=x+dx
y:=y+dy
ifx=0orx=maxxthen
dx:=-dx
endif
ify=0ory=maxythen
dy:=-dy
endif
endloop
Details
Thescreenshouldbeina"graphics"mode.Ifisnotsetto"graphics"mode,itwillautomaticallybesetto"graphics"mode.Seesetscreenfordetails.
Seealso
drawdot,whichisusedforsettingthecolorofapixel.Seealsomaxxandmaxy,whichareusedtodeterminethenumberofpixelsonthescreen.Seealsosound,whichcausesthecomputertomakeasound.
SeealsopredefinedunitView.
![Page 914: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/914.jpg)
whatrow cursorpositionfunction
Syntax whatrow:int
DescriptionThewhatrowfunctionisusedtodeterminethecursorposition'srow.
Example
ThisprogramoutputsThecurrentrowis5,thecurrentcolumnis15.
locate(5,10)
put"12345"..
put"Thecurrentrowis",whatrow
put"Thecurrentcolumnis",whatcol
DetailsThescreenshouldbeina"screen"or"graphics"mode.whatrowfunctionsproperlyevenifthecursorisinvisible.
Seealso
thewhatcolfunction,whichisusedtosetthedeterminethecursorcolumn.Seealsothelocate,maxrowandmaxcolprocedure.
SeealsopredefinedunitText.
![Page 915: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/915.jpg)
Window
Description
Thisunitcontainsthepredefinedsubprogramsthathandlewindows.Thereareroutinestoopen,close,hide,showandselectwindows.
AllroutinesintheWindowunitareexportedqualified(andthusmustbeprefacedwith"Window.").
Details
ThepredefinedsubprogramsoftheWindowmoduleallusewindowidentifierstoindicatewhichwindowtoactupon.ThedefaultRunwindowcanbespecifiedbyusingdefWindID.Forexample,thefollowingcodecausesthemainRunwindowtoappearandthenblinkonandoffthreetimes.
%OutputsomedatatomaketheRunwindowappear.
put"Hello,World!"
fori:1..3
delay(1000)
Window.Hide(defWinID)
delay(1000)
Window.Show(defWinID)
endfor
put"Howareyou?"
EntryPoints
Open Opensanewexecutionwindow.Close Closesanexecutionwindow.Select Selectsanexecutionwindowforoutput.GetSelect Returnsthecurrently-selectedexecutionwindow.
SetActive Selectsandactivate(makefront-most)anexecutionwindow.
GetActive Getsthecurrentactivewindow.GetPosition Getthescreenpositionofanexecutionwindow.SetPosition Setthescreenpositionofanexecutionwindow.Hide Hidesanexecutionwindow.Show Showsthecurrentexecutionwindow.Set Setstheconfigurationoftheexecutionwindow.
Update Updatestheonscreenwindowfromtheoffscreenbitmap.
![Page 916: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/916.jpg)
Window.Close PartofWindowmodule
Syntax Window.Close(windowID:int)
DescriptionTheWindow.CloseprocedureclosesthewindowspecifiedbythewindowIDparameter.
Example
Thefollowingprogramopensawindow,makesitactiveandthenclosesthewindowaftergettingakeystrokefromtheuser.
%Openthewindow
varwinID:int
winID:=Window.Open("position:300;300,graphics:200;200")
%Drawtherandomovalsinthebox
varx,y,clr:int
for:1..20
x:=Rand.Int(0,maxx)%Randomx
y:=Rand.Int(0,maxy)%Randomy
clr:=Rand.Int(0,maxcolor)%Randomcolor
Draw.FillOval(x,y,30,30,clr)
endfor
varch:char:=getchar%Waitforinput
Window.Close(winID)%Closethewindow
DetailsIfawindowisselected(i.e.outputisgoingtothatwindow)whenitisclosed,themainRunwindowbecomestheselectedwindow.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingWindow.Close,notbycallingClose.
Seealso Window.OpenandWindow.Select.
![Page 917: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/917.jpg)
Window.GetActive PartofWindowmodule
Syntax Window.GetActive:int
Description
TheWindow.GetActivefunctionreturnsthewindowIDoftheactivewindow.IftheactivewindowisaTuringrunwindow,thenWindow.GetActivereturnsdefWinID(whichis-1)ifthewindowisthedefaultrunwindow,orwhatevernumberwasreturnedfromWindow.Openforanyotherrunwindow.Iftheactivewindowisnotarunwindow,thenitreturns-5andsetsError.LastandError.LastMsgtoindicatethefact.
Anactivewindowisdefinedasthewindowthathastheinputfocus.Thismeansthatanytypingwillbesenttotheactivewindow.Undermostsystemsanactivewindowisindicatedbyachangeintheappearanceofthewindow.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingWindow.GetActive,notbycallingGetActive.
Seealso Window.SetActive.
![Page 918: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/918.jpg)
Window.GetPosition PartofWindowmodule
Syntax Window.GetPosition(windowID:int,varx,y:int)
Description
TheWindow.GetPositionprocedurereturnsthelocationofthespecifiedexecutionwindowonthescreenintheyparameters.Thexandyparametersspecifythelowerleftcornerofthewindowinscreencoordinates.(0,0)isthelowerleftcornerofthescreen.
Example
Thefollowingprogramoutputsthecurrentpositionoftherunwindow.
%Constantsforwindows
consttitleBarHeight:int:=21
constwindowEdgeSize:int:=13
%Calculatetheactualsizeofawindow
varwindowWidth:int:=maxx+windowEdgeSize
varwindowHeight:int:=maxy+windowEdgeSize+
%Getthescreensize
varscreenWidth:int:=Config.Display(cdScreenWidth
varscreenHeight:int:=Config.Display(cdScreenHeight
%Openthewindow
varwinID:int:=Window.Open("title:UpperRight")
Window.SetPosition(winID,screenWidthwindowWidth
%Returnthecurrentposition
varwindowXPosition,windowYPosition:int
Window.GetPosition(winID,windowXPosition,windowYPosition
put"Windowlocatedat",windowXPosition,",",
StatusExportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingWindow.GetPosition
Seealso Window.SetPositiontosetthecurrentwindowpositionandConfig.Display
![Page 919: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/919.jpg)
Window.GetSelect PartofWindowmodule
Syntax Window.GetSelect:int
Description
TheWindow.GetSelectfunctionreturnsthewindowIDoftheselectedwindow.Iftheselectwindowisthemain(default)runwindow,thenitreturnsdefWinID(whichis-1).
Aselectedwindowisdefinedasthewindowthatoutputwillbesentto.Itcanbeinvisible.Whenaprogramstartsexecution,theselectedwindowisthemainRunwindow.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingWindow.GetSelect,notbycallingGetSelect.
Seealso Window.Select.
![Page 920: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/920.jpg)
Window.Hide PartofWindowmodule
Syntax Window.Hide(windowID:int)
Description
TheWindow.Hideprocedurehidesthespecifiedwindow.Thismeansitdisappearsfromtheuser'sscreen.However,itisstillpossibletoselectanddrawthewindowwhileitremainshidden.Iftheuseractivatesit(usingWindow.GetActive)itwillautomaticallyappear.
Tomakeawindowappearafterit'shidden,youuseWindow.Show.
Details
Whenawindowishidden,outputtoitisfaster.Itisquitepossiblefortheyoutohideawindow,docomplicateddrawingtoitandthenmakeitappearinordertohavetheprogramexecutefaster.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingWindow.Hide,notbycallingHide.
Seealso Window.SelectandWindow.SetActive.
![Page 921: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/921.jpg)
Window.Open PartofWindowmodule
Syntax Window.Open(setUpString:string):int
Description
TheWindow.Openfunctionisusedtocreateawindow.AwindowIDisreturnedifthewindowissuccessfullycreated.Ifthewindowisnotcreatedthenitreturns0.Error.LastandError.LastMsgcanthenbeusedtodeterminethecauseofthefailure.
ThesetUpStringparameterisidenticaltothatofView.Set.SeeView.Setforthelistofoptionsavailable.
Whenthewindowiscreated,itisautomaticallyselected(i.e.alloutputwillbesenttothatwindowunlessredirectedbyaWindow.Selectcommand).
Example
Thefollowingprogramopensawindow,makesitactiveandthenclosethewindowaftergettingakeystrokefromtheuser.
%Openthewindow
varwinID:int
winID:=Window.Open("position:top;center,graphics:200;200")
%Drawtherandomovalsinthebox
varx,y,clr:int
for:1..20
x:=Rand.Int(0,maxx)%Randomx
y:=Rand.Int(0,maxy)%Randomy
clr:=Rand.Int(0,maxcolor)%Randomcolor
Draw.FillOval(x,y,30,30,clr)
endfor
varch:char:=getchar%Waitforinput
Window.Close(winID)%Closethewindow
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingWindow.Open,notbycallingOpen.
![Page 922: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/922.jpg)
SeealsoView.SetforthesyntaxofstartUpString.SeealsoWindow.SelectandWindow.SetActive.
![Page 923: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/923.jpg)
Window.Select PartofWindowmodule
Syntax Window.Select(windowID:int)
Description
TheWindow.Selectselectsthewindowthatoutputistobesentto.
Aselectedwindowisdefinedasthewindowthatoutputwillbesentto.Itcanbeinvisible.Whenaprogramstartsexecution,theselectedwindowisthemainRunwindow.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingWindow.Select,notbycallingSelect.
Seealso Window.SelectandWindow.SetActive.
![Page 924: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/924.jpg)
Window.Set PartofWindowmodule
Syntax Window.Set(windowID:int,setUpString:string)
Description
TheWindow.SetproceduresetstheconfigurationofthewindowspecifiedbythewindowIDparameter.SeeView.Setforacompletelistofavailableoptions.ThesetUpStringparametercanbeanycombinationoptions,separatedbycommas.Hereisaselectionoftheavailableoptions.
text:<rows>;<cols>-Setstheoutputwindowtotextmodeandchangesthewindowsizetobe<rows>rowsby<cols>columnsinsize.
graphics:<xsize>;<ysize>-Setstheoutputwindowtographicsmodeandchangesthewindowsizetobe<xsize>pixelsacrossand<ysize>pixelsinheight.
visible|invisible|popup-Setsthescreentobevisible,invisibleorpopup.Apopupwindowishiddenuntiloutputissenttothatwindow.ThemainRunwindowisapopupwindow.Ifyouneversendanyoutputtoit,itneverappears.
noxor|xor-SetswhetheralldrawingoperationsdrawusingXOR.
nocursor|cursor-Setswhetherthecursorisvisibleornot.
noecho|echo-Setswhethertheinputfromthekeyboardisechoedtothescreen.
title:<text>-Setsthewindowtitlebarto<text>.
position:<x>;<y>-Setsthepositionofthetopleftcornerofthewindowtobe(<x>,<y>).
offscreenonly|nooffscreenonly-Setswhetheroutputtothewindowgoestooffscreenwindowalone,orboththeonscreenandoffscreenwindow.
![Page 925: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/925.jpg)
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingWindow.Set,notbycallingSet.
Seealso
View.SetforacompletelistoftheoptionsavailablewithWindow.Set.SeeWindow.Openforhowtocreateanewwindow.
![Page 926: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/926.jpg)
Window.SetActive PartofWindowmodule
Syntax Window.SetActive(windowID:int)
Description
TheWindow.SetActiveprocedureactivatesthewindowspecifiedbythewindowIDparameter.
Anactivewindowisdefinedasthewindowthathastheinputfocus.Thismeansthatanytypingwillbesenttotheactivewindow.Undermostsystemsanactivewindowisindicatedbyachangeintheappearanceofthewindow.
Details
Ingeneral,itisunwisetochangetheactivewindow.IftheuserisworkingonanotherprogramatthesametimetheprogramisrunningandtheprogramexecutestheWindow.SetActiveprocedure,sheorhewillsuddenlybereturnedtoOOTwithoutwarning.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingWindow.SetActive,notbycallingSetActive.
Seealso Window.GetActiveandWindow.Select.
![Page 927: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/927.jpg)
Window.SetPosition PartofWindowmodule
Syntax Window.SetPosition(windowID:int,x,y:int)
DescriptionTheWindow.SetPositionproceduremovesthelocationofthespecifiedexecutionwindowonthescreen.specifythelowerleftcornerofthewindowinscreencoordinates.(0,0)isthelowerleftcornerofthescreen.
Example
Thefollowingprogramopensfourwindows,oneateachcornerofthescreen.
%Constantsforwindows
consttitleBarHeight:int:=21
constwindowEdgeSize:int:=13
%Calculatetheactualsizeofawindow
varwindowWidth:int:=maxx+windowEdgeSize
varwindowHeight:int:=maxy+windowEdgeSize+
%Getthescreensize
varscreenWidth:int:=Config.Display(cdScreenWidth
varscreenHeight:int:=Config.Display(cdScreenHeight
%Openthewindow
varwinID1:int:=Window.Open("title:UpperRight")
Window.SetPosition(winID1,screenWidthwindowWidth
varwinID2:int:=Window.Open("title:UpperLeft")
Window.SetPosition(winID2,0,screenHeightwindowHeight
varwinID3:int:=Window.Open("title:LowerLeft")
Window.SetPosition(winID3,0,0)
varwinID4:int:=Window.Open("title:LowerRight")
Window.SetPosition(winID4,screenWidthwindowWidth
StatusExportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingWindow.SetPosition
Seealso Window.GetPositiontogetthecurrentwindowpositionandConfig.Display
![Page 928: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/928.jpg)
Window.Show PartofWindowmodule
Syntax Window.Show(windowID:int)
Description
TheWindow.Showproceduremakesthespecifiedwindowappearifitwasinvisible.
Tomakeawindowdisappearafterit'svisible,youuseWindow.Hide.
Details
Whenawindowishidden,outputtoitisfaster.Itisquitepossiblefortheyoutohideawindow,docomplicateddrawingtoitandthenmakeitappearinordertohavetheprogramexecutefaster.
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingWindow.Show,notbycallingShow.
Seealso Window.SelectandWindow.SetActive.
![Page 929: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/929.jpg)
Window.Update PartofWindowmodule
Syntax Window.Update(windowID:int)
Description
TheWindow.UpdateprocedureupdatesaspecifiedRunwindowfromanoffscreenbitmap.ItisusedwiththecommandView.Set("offscreenonly")whichpreventstheRunwindowfrombeingupdateduntiltheWindow.Updatecommandisgiven.
ThiscommandisidenticaltotheView.Updatecommandexceptthatitupdatesthespecifiedwindow.Itshouldbeusedwhendoinganimationwithmorethanonewindow.
Seealso View.Updateforinformationonflicker-freeanimation.
![Page 930: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/930.jpg)
write filestatement
Syntax
AwriteStatementis:
write:fileNumber[:status],writeItem{,writeItem}
Description
ThewritestatementoutputseachofthewriteItemstothespecifiedfile.Theseitemsareoutputdirectlyusingthebinaryformatthattheyhaveinthecomputer.Inotherwords,theitemsarenotinsource(ASCIIorEBCDIC)format.Inthecommoncase,theseitemswilllaterbeinputfromthefileusingthereadstatement.Bycontrast,thegetandputstatementsusesourceformat,whichapersoncanreadusingatexteditor.
Example
Thisexampleshowshowtooutputacompleteemployeerecordusingawritestatement.
varemployeeRecord:
record
name:string(30)
pay:int
dept:0..9
endrecord
varfileNo:int
open:fileNo,"payroll",write
…
write:fileNo,employeeRecord
Anarray,recordorunionmaybereadandwrittenasawhole.ThefileNumbermustspecifyafilethatisopenwithwritecapability(orelseaprogramargumentfilethatisimplicitlyopened).
Theoptionalstatusisanintvariablethatissettoimplementation-dependentinformationaboutthewrite.Ifstatusisreturnedaszero,thewritewassuccessful.Ifstatusisnotreturnedaszero,statusgivesinformationabouttheincompleteorfailedwrite(whichisnotdocumentedhere).Programmersoftenusestatuswhentheyarewritingarecordorarraytoafileandare
![Page 931: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/931.jpg)
Details
notsureifthereisenoughroomonthedisktoholdtheitem.Ifthereisnotenoughroom,thewritewillfailpartwaythrough,buttheprogramcancontinueanddiagnosetheproblembyinspectingstatus.
AwriteItemis:
reference[:requestedSize[:actualSize]]
EachwriteItemisavariableorconstant,tobewrittenininternalform.TheoptionalrequestedSizeisanintegerexpressiongivingthenumberofbytesofdatatobewritten.TherequestedSizeshouldbelessthanorequaltothesizeoftheitem'sinternalforminmemory(ifitisnot,awarningmessageisissued).IfnorequestedSizeisgiven,thesizeoftheiteminmemoryisused.TheoptionalactualSizeissettothenumberofbytesactuallywritten.
Seealso write,open,close,seek,tell,getandputstatements.
![Page 932: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/932.jpg)
xor exclusive"or"operator
Syntax AxorB
Description
Whenappliedtosetvalues,xor(symmetricdifference)yieldsasetwhichincludeselementeifandonlyifeiscontainedinexactlyoneoftheoperands.Whenappliedtonon-negativeintegervalues,xoryieldsanaturalnumberwhosebitsarethexorofthecorrespondingbitsoftheoperands.BothoperandsAandBareevaluated.
Example
Statuss3willcontainelementsthatareins1ors2butnotboth.Herexorisasetoperator.Seeenumandsettypesforexplanationsofthesetypes.
typestatus:enum(ready,sending,repeating)
typestatusSet:setofstatus
vars1,s2,s3:statusSet
s1:=statusSet(status.read,status.sending)
s2:=statusSet(status.read,status.repeating)
…
s3:=s1xors2%Sameas(s1+s2)-(s1*s2)
Example
Eachbitofnaturalnumbern3willbe1ifexactlyoneofthecorrespondingbitsofn1andn2are1.Forexample,ifn1=2#110(6)andn2=2#010(2),n3willbesetto2#100(4).Herexorisanintegeroperator.
varn1,n2,n3:nat
…
n3:=n1xorn2
Details
Thexoroperatorisnotashortcircuitoperator;inotherwords,bothofitsoperandsarealwaysevaluated.Theprecedenceofxoristhesameasthatofplus(+).
Seealsoset.SeealsoexplicitIntegerConstantwhichdescribesvaluessuchas2#110.
![Page 933: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/933.jpg)
TuringLanguageElements#if-usedforconditionalcompilationaddressint-typeall-allmembersofasetand-operatoranyclass-theancestorofallclassesarray-typeassert-statementassignability-ofexpressiontovariableassignment-statementbegin-statementbind-declarationbody-declarationboolean-true-falsetypebreak-debuggerpausestatementcase-selectionstatementcatenation(+)-joiningtogetherstringschar-typechar(n)-typechecked-compilerdirectiveclass-declarationclose-filestatementcollection-declarationcomment-remarkstatementcomparisonOperatorcondition-declarationconst-constantdeclarationconstantReference-useofaconstantdeclaration-createavariabledeferred-subprogramdeclarationdiv-integertruncatingdivisionoperatorenum-enumeratedtypeenumeratedValue-enumeratedvalueequivalence-oftypesexit-statement
![Page 934: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/934.jpg)
explicitCharConstant-characterliteralexplicitConstant-literalexplicitIntegerConstant-integerliteralexplicitRealConstant-realliteralexplicitStringConstant-stringliteralexplicitTrueFalseConstant-booleanliteralexpn-expressionexport-listexternal-declarationfalse-booleanvalue(nottrue)flexible-arrayinitializationfor-statementfork-statementforward-subprogramdeclarationfree-statementfunction-declarationfunctionCallget-filestatementhandler-exceptionhandlerid-(identifier)nameofaniteminaprogramif-statementimplement-clauseimplementby-clauseimport-listin-memberofasetinclude-sourcefilesindexTypeindirection-operator(@)infix-operatorinherit-inheritanceclauseinit-arrayinitializationint-integertypeintn-n-byteintegertypeinvariant-assertionloop-statementmod-modulooperatormodule-declarationmonitor-declarationnamed-type
![Page 935: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/935.jpg)
nat-naturalnumbertypenatn-n-bytenaturalnumbertypenew-statementnil-pointertoacollectionnot-true/false(boolean)operatoropaque-typeopen-filestatementor-operatorparamDeclaration-parameterdeclarationpause-statementpervasive-declarationmodifierpointer-typepost-assertionpre-assertionprecedence-ofoperatorsprefix-operatorprocedure-declarationprocedureCall-statementprocess-declarationprogram-a(main)programput-statementquit-failstatementread-filestatementreal-therealnumbertyperealn-n-byterealnumbertyperecord-typeregister-usemachineregisterrem-remainderoperatorresult-statementreturn-statementscalar-typeseek-(file)statementseparator-betweentokensinaprogramset-typesetConstructorshl-shiftleftoperatorshr-shiftrightoperatorsignal-wakeupaprocessstatementskip-usedingetstatement
![Page 936: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/936.jpg)
skip-usedinputstatementstandardTypestatementstatementsAndDeclarationsstring-typestring-comparisonsubprogramHeadersubprogramTypesubrangeTypesubstring-ofanotherstringtag-statementtell-filestatementtoken-ininputtrue-booleanvalue(notfalse)type-declarationtypeSpec-typespecificationunchecked-compilerdirectiveunion-typeunit-filecontainingmodule,monitor,orclassunqualified-exportvar-declarationvariableReference-useofavariablewait-blockaprocessstatementwrite-filestatementxor-exclusive"or"operator
![Page 937: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/937.jpg)
BasicPredefinedSubprogramsTypeConversion
FromIntegerintreal-integer-to-realfunctionintstr-integer-to-stringfunction
FromRealceil-real-to-integerfunctionerealstr-real-to-stringfunctionfloor-real-to-integerfunctionfrealstr-real-to-stringfunctionrealstr-real-to-stringfunctionround-real-to-integerfunction
FromNatnatreal-naturalnumbertorealfunctionnatstr-natural-number-to-stringfunction
FromStringstrint-string-to-integer:functionstrintok-string-to-integer:functionstrnat-stringtonaturalnumberfunctionstrnatok-stringtonaturalnumberfunctionstrreal-string-to-realfunctionstrrealok-string-to-realfunction
To/FromASCIIchr-integer-to-characterfunctionord-character-to-integerfunction
MaximumNumbersmaxint-maximumintegerfunctionmaxnat-maximumnaturalnumberfunctionminint-minimumintegerfunctionminnat-minimumnaturalnumberfunction
Mathabs-absolutevaluefunctionarctan-arctangentfunction(radians)arctand-arctangentfunction(degrees)cos-cosinefunction(radians)
![Page 938: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/938.jpg)
cosd-cosinefunction(degrees)exp-exponentiationfunctionln-naturallogarithmfunctionmax-maximumfunctionmin-minimumfunctionsign-functionsin-sinefunction(radians)sind-sinefunction(degrees)sqrt-squarerootfunction
Stringsindex-findpatterninstringfunctionlength-ofastringfunctionrepeat-makecopiesofstring:function
EnumeratedTypespred-predecessorfunctionsucc-successorfunction
Fileseof-end-of-filefunction
Arrayslower-boundupper-bound
RandomNumbersrand-randomrealnumberprocedurerandint-randomintegerprocedurerandnext-procedurerandomize-procedurerandseed-procedure
Timeclock-millisecsusedproceduredate-proceduresysclock-millisecsusedproceduretime-timeofdayasastringprocedurewallclock-secondssince1/1/1970procedure
Soundplay-procedureplaydone-functionsound-statement
Systemdelay-procedure
![Page 939: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/939.jpg)
fetcharg-fetchargumentfunctiongetenv-getenvironmentfunctiongetpid-getprocessidfunctionnargs-numberofargumentssystem-statement
ParallelPortparallelget-parallelportfunctionparallelput-parallelportprocedure
Mousebuttonchoose-switchmousemodesbuttonmoved-hasamouseeventoccurredbuttonwait-getamouseeventproceduremousewhere
CharacterGraphicscls-clearscreengraphicsprocedurecolor-textcolorgraphicsprocedurecolorback-backgroundcolorprocedurecolour-textcolorgraphicsprocedurecolourback-backgroundcolorprocedurelocate-proceduremaxcol-maximumcolumnfunctionmaxcolor-graphicsfunctionmaxcolour-graphicsfunctionmaxrow-maximumrowfunctionsetscreen-graphicsprocedurewhatcol-cursorpositionfunctionwhatcolor-textcolorgraphicsfunctionwhatcolorback-colorofbackgroundfunctionwhatcolour-textcolorgraphicsfunctionwhatcolourback-colorofbackgroundfunctionwhatrow-cursorpositionfunction
PixelGraphicscls-clearscreengraphicsprocedurecolor-textcolorgraphicsprocedurecolorback-backgroundcolorprocedurecolour-textcolorgraphicsprocedurecolourback-backgroundcolorproceduredrawarc-graphicsproceduredrawbox-graphicsprocedure
![Page 940: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/940.jpg)
drawdot-graphicsproceduredrawfill-graphicsproceduredrawfillarc-graphicsproceduredrawfillbox-graphicsproceduredrawfillmapleleaf-graphicsproceduredrawfilloval-graphicsproceduredrawfillpolygon-graphicsproceduredrawfillstar-graphicsproceduredrawline-graphicsproceduredrawmapleleaf-graphicsproceduredrawoval-graphicsproceduredrawpic-graphicsproceduredrawpolygon-graphicsproceduredrawstar-graphicsprocedurelocate-procedurelocatexy-graphicsproceduremaxcol-maximumcolumnfunctionmaxcolor-graphicsfunctionmaxcolour-graphicsfunctionmaxrow-maximumrowfunctionmaxx-graphicsfunctionmaxy-graphicsfunctionsetscreen-graphicsproceduresizepic-graphicsfunctiontakepic-graphicsprocedurewhatcol-cursorpositionfunctionwhatcolor-textcolorgraphicsfunctionwhatcolorback-colorofbackgroundfunctionwhatcolour-textcolorgraphicsfunctionwhatcolourback-colorofbackgroundfunctionwhatdotcolor-graphicsfunctionwhatdotcolour-graphicsfunctionwhatrow-cursorpositionfunction
CharacterInputgetch-getcharacterproceduregetchar-getcharacterfunctionhasch-hascharacterfunction
Concurrencyempty-conditionfunction
![Page 941: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/941.jpg)
getpriority-functionsetpriority-proceduresimutime-simulatedtimefunction
AddressesandSizesaddr-addressofavariablesizeof-sizeofatype
BitManipulationbits-extraction
Classesobjectclass-ofapointerself-pointertocurrentobject
TypeCheatscheat-typecheating
![Page 942: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/942.jpg)
PredefinedModulesConcurrency
Concurrency.emptyConcurrency.getpriorityConcurrency.setpriorityConcurrency.simutime
ConfigConfig.DisplayConfig.LangConfig.Machine
DirDir.ChangeDir.CloseDir.CreateDir.CurrentDir.DeleteDir.GetDir.GetLongDir.Open
DrawDraw.ArcDraw.BoxDraw.ClsDraw.DotDraw.FillDraw.FillArcDraw.FillBoxDraw.FillMapleLeafDraw.FillOvalDraw.FillPolygonDraw.FillStarDraw.LineDraw.MapleLeafDraw.OvalDraw.Polygon
![Page 943: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/943.jpg)
Draw.StarDraw.Text
ErrorError.LastError.LastMsgError.LastStrError.MsgError.StrError.Trip
ErrorNumExceptionsFile
File.CopyFile.DeleteFile.DiskFreeFile.ExistsFile.RenameFile.Status
FontFont.DrawFont.FreeFont.GetNameFont.GetSizeFont.GetStyleFont.NameFont.NewFont.SizesFont.StartNameFont.StartSizeFont.Width
GUIGUI.AddLineGUI.AddTextGUI.AlertGUI.Alert2GUI.Alert3GUI.AlertFullGUI.ChooseGUI.ChooseFull
![Page 944: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/944.jpg)
GUI.ClearTextGUI.CloseWindowGUI.CreateButtonGUI.CreateButtonFullGUI.CreateCanvasGUI.CreateCanvasFullGUI.CreateCheckBoxGUI.CreateCheckBoxFullGUI.CreateFrameGUI.CreateHorizontalScrollBarGUI.CreateHorizontalScrollBarFullGUI.CreateHorizontalSliderGUI.CreateLabelGUI.CreateLabelFullGUI.CreateLabelledFrameGUI.CreateLineGUI.CreateMenuGUI.CreateMenuItemGUI.CreateMenuItemFullGUI.CreatePictureGUI.CreatePictureButtonGUI.CreatePictureButtonFullGUI.CreatePictureRadioButtonGUI.CreatePictureRadioButtonFullGUI.CreateRadioButtonGUI.CreateRadioButtonFullGUI.CreateTextBoxGUI.CreateTextBoxFullGUI.CreateTextFieldGUI.CreateTextFieldFullGUI.CreateVerticalScrollBarGUI.CreateVerticalScrollBarFullGUI.CreateVerticalSliderGUI.DisableGUI.DisposeGUI.Draw...GUI.EnableGUI.FontDrawGUI.GetCheckBox
![Page 945: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/945.jpg)
GUI.GetEventTimeGUI.GetEventWidgetIDGUI.GetEventWindowGUI.GetHeightGUI.GetMenuBarHeightGUI.GetScrollBarWidthGUI.GetSliderValueGUI.GetTextGUI.GetVersionGUI.GetWidthGUI.GetXGUI.GetYGUI.HideGUI.HideMenuBarGUI.OpenFileGUI.OpenFileFullGUI.Pic...GUI.ProcessEventGUI.QuitGUI.RefreshGUI.SaveFileGUI.SaveFileFullGUI.SelectRadioGUI.SetActiveGUI.SetBackgroundColorGUI.SetBackgroundColourGUI.SetCheckBoxGUI.SetDefaultGUI.SetDisplayWhenCreatedGUI.SetKeyEventHandlerGUI.SetLabelGUI.SetMouseEventHandlerGUI.SetNullEventHandlerGUI.SetPositionGUI.SetPositionAndSizeGUI.SetScrollAmountGUI.SetSelectionGUI.SetSizeGUI.SetSliderMinMax
![Page 946: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/946.jpg)
GUI.SetSliderReverseGUI.SetSliderSizeGUI.SetSliderValueGUI.SetTextGUI.SetXORGUI.ShowGUI.ShowMenuBar
InputInput.KeyDown-getkeyboardstateInput.Pause-pauseforkeystrokeInput.getchInput.getcharInput.hasch
JoystickJoystick.GetInfo
KeyboardLimits
maxint-maximumintegerfunctionmaxnat-maximumnaturalnumberfunctionminint-minimumintegerfunctionminnat-minimumnaturalnumberfunction
Mathabs-absolutevaluefunctionarctan-arctangentfunction(radians)arctand-arctangentfunction(degrees)cos-cosinefunction(radians)cosd-cosinefunction(degrees)exp-exponentiationfunctionln-naturallogarithmfunctionmax-maximumfunctionmin-minimumfunctionsign-functionsin-sinefunction(radians)sind-sinefunction(degrees)sqrt-squarerootfunction
MouseMouse.ButtonChooseMouse.ButtonMovedMouse.ButtonWait
![Page 947: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/947.jpg)
Mouse.WhereMusic
Music.PlayMusic.PlayFileMusic.PlayFileStopMusic.SoundMusic.SoundOff
NetNet.BytesAvailableNet.CharAvailableNet.CloseConnectionNet.HostAddressFromNameNet.HostNameFromAddressNet.LineAvailableNet.LocalAddressNet.LocalNameNet.OpenConnectionNet.OpenURLConnectionNet.TokenAvailableNet.WaitForConnection
PCPC.ParallelGetPC.ParallelPutparallelget-parallelportfunctionparallelput-parallelportprocedure
PicPic.BlendPic.BlurPic.DrawPic.DrawFramesPic.DrawFramesBackPic.DrawSpecialPic.DrawSpecialBackPic.FileNewPic.FileNewFramesPic.FlipPic.FramesPic.FreePic.Height
![Page 948: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/948.jpg)
Pic.MirrorPic.NewPic.RotatePic.SavePic.ScalePic.ScreenLoadPic.ScreenSavePic.SetTransparentColorPic.SetTransparentColourPic.Width
RGBRGB.AddColorRGB.AddColourRGB.GetColorRGB.GetColourRGB.SetColorRGB.SetColourRGB.maxcolorRGB.maxcolour
RandRand.IntRand.NextRand.RealRand.ResetRand.SeedRand.Set
SpriteSprite.AnimateSprite.ChangePicSprite.FreeSprite.HideSprite.NewSprite.SetFrameRateSprite.SetHeightSprite.SetPositionSprite.Show
Strindex-findpatterninstringfunctionlength-ofastringfunction
![Page 949: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/949.jpg)
repeat-makecopiesofstring:functionStream
Stream.FlushStream.FlushAllStream.eofeof-end-of-filefunction
SysSys.ExecSys.FetchArgSys.GetComputerNameSys.GetEnvSys.GetPidSys.GetUserNameSys.Nargsgetenv-getenvironmentfunctiongetpid-getprocessidfunction
TextText.ClsText.ColorText.ColorBackText.ColourText.ColourBackText.LocateText.LocateXYText.WhatColText.WhatColorText.WhatColorBackText.WhatColourText.WhatColourBackText.WhatRowText.maxcolText.maxrow
TimeTime.DateTime.DateSecTime.DelayTime.ElapsedTime.ElapsedCPUTime.PartsSec
![Page 950: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/950.jpg)
Time.SecTime.SecDateTime.SecParts
TypeConvFromInteger
intreal-integer-to-realfunctionintstr-integer-to-stringfunction
FromNatnatreal-naturalnumbertorealfunctionnatstr-natural-number-to-stringfunction
FromRealceil-real-to-integerfunctionerealstr-real-to-stringfunctionfloor-real-to-integerfunctionfrealstr-real-to-stringfunctionrealstr-real-to-stringfunctionround-real-to-integerfunction
FromStringstrint-string-to-integer:functionstrintok-string-to-integer:functionstrnat-stringtonaturalnumberfunctionstrnatok-stringtonaturalnumberfunctionstrreal-string-to-realfunctionstrrealok-string-to-realfunction
To/FromASCIIchr-integer-to-characterfunctionord-character-to-integerfunction
ViewView.ClipAddView.ClipOffView.ClipSetView.SetView.Update-flicker-freeanimationView.WhatDotColorView.WhatDotColourView.maxcolorView.maxcolourView.maxxView.maxy
![Page 951: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/951.jpg)
WindowWindow.CloseWindow.GetActiveWindow.GetPositionWindow.GetSelectWindow.HideWindow.OpenWindow.SelectWindow.SetWindow.SetActiveWindow.SetPositionWindow.ShowWindow.Update
MiscellaneousSubprogramsAddressesandSizes
addr-addressofavariablesizeof-sizeofatype
Arrayslower-boundupper-bound
BitManipulationbits-extraction
Classesobjectclass-ofapointerself-pointertocurrentobject
EnumeratedTypespred-predecessorfunctionsucc-successorfunction
TypeCheatscheat-typecheating
![Page 952: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/952.jpg)
TheGUIModuleIntroduction
SincetheintroductionoftheMacintosh,graphicaluserinterfaces(GUI)havebeenbecomingmoreandmorecommon.MostcommercialprogramswrittenforeithertheMacintoshorMicrosoftWindowsmakeuseofGUIelementstomaketheirprogrameasiertouse.
Forsometime,studentshavebeenrequestingmethodsofputtingGUIelementssuchasbuttons,checkboxes,radiobuttons,etc,intotheirTuringprograms.TuringnowincludesanewsetofpredefinedsubprogramsthatallowstudentstoaddnumerousGUIelementstotheirprogramsquicklyandeasily.Thesesubprogramsallowstudentstocreate:buttons,checkboxes,radiobuttons,sliders,scrollbars,picturebuttons,radiopicturebuttons,textfields,lines,textlabels,andframes.
TheentireGUILibraryiswritteninTuringandthesourceisincludedwiththeTuringdistribution.TheGUIlibraryiscompletelyprocedure-oriented.Thismeansthatitisnotnecessarytoknowobject-orientedprogrammingorconceptsinordertobeabletousethelibrary.Advancedstudentsarewelcome(infact,encouraged)tolookattheprogramsasanexampleofalargeprojectwritteninTuring.WehopethattherewillbeenterprisingstudentswhowillbeinspiredtoaddnewwidgetstothelibraryandencouragethosewhodosotosubmitthemtoHoltSoftwareforpossibleinclusionintothenextversionofthelibrary.
Hereisawindowwithafewwidgets.
![Page 953: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/953.jpg)
SomeGUIWidgets(OutputofExample.dem)
TheGUIlibraryisusablebystudentswhounderstandtheconceptofsubprograms.InordertousetheGUIlibrary,studentsmustwriteprocedures(althoughtheymaybeassimpleasthestudentdesires).WethereforesuggestthatteachersintroducestudentstotheGUIlibraryinaGrade11computersciencecourse.
Note:Turinghasnotchanged.Itisnotavisualbuildinglanguage.StudentswishingtousetheGUIlibrarywillbewritingprogramstocreateandusetheseGUIelement,notspendingtheirtimevisuallybuildinguserinterfaces(whichmaybefun,butteachesverylittle).InkeepingwiththetraditionofTuring,themorethestudentslearnaboutcomputerscience,themoreinterestingtheir
![Page 954: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/954.jpg)
programswillbe,GUIornoGUI!
![Page 955: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/955.jpg)
Terminology
Theterm"Widget"meansanygraphicaluserinterfaceelement.Abutton,acheckboxorradiobuttonareallexamplesofwidgets.
Theterm"Event"meanseitherakeystrokeoramousebuttonbeingpressedinawindow.
![Page 956: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/956.jpg)
ExamplePrograms
Allexampleprogramsshownherearelocatedinthe[TuringDirectory]/Examples/GUIdirectory.(Inotherwords,startinthesamedirectoryastheTuringexecutable,movetotheExamplesfolderandthentheGUIfolder.)AlltheavailableGUIwidgetshaveexampleprogramstodemonstratetheiruse.
![Page 957: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/957.jpg)
GeneralPrinciplesoftheGUILibrary
HerearesomegeneralinstructionsfortheuseoftheGUIlibrary.Readthissectionbeforelookingatthespecificsofvariousroutines.
AllthesubprogramsfortheGUIlibraryareplacedinamodulecalledGUI.Tocallanyofthesubprograms,prefacethenameofthesubprogramwithGUI..Forexample,theCreateLabelsubprogramwouldbecalledusingGUI.CreateLabel.Ingeneral,mostwidgetshaveaCreatesubprogram.Forexample,buttonshaveaCreateButtonsubprogram,radiobuttonshaveaCreateRadioButtonsubprogram,andsoon.TheCreatesubprogramtakesasparametersthingssuchasthelocation,thesizeoftheGUIelement,andthenameofaproceduretobecalledwhenthewidgetisclicked.ThisproceduremustbedeclaredbeforethecalltotheCreatesubprogram.Formostwidgets,therearetwoformsoftheCreatesubprogram.TheCreatesubprogramandtheCreateFullsubprogram.ThedifferencebetweenthetwoisthattheCreateFullsubprogramallowstheusertodefinemoreparametersthatareotherwisesettodefaultvalues.Forexample,theGUI.CreateButtonprocedureallowstheusertospecifythexandylocationofthebutton,thewidthofthebutton,thetextthatappearsinthebutton,andtheproceduretocallwhenthebuttonisclicked.TheGUI.CreateButtonFullroutinespecifiesthoseandalsoallowstheusertospecifytheheightofthebutton(otherwisesettoaheightthatwillfitthelabel),ashortcutkeyboardcharacterthatallowstheuserto"press"thebuttonusingakeyboardandaparametertoallowtheusertospecifyifthisbuttonisthe"default"button(theone"pressed"iftheuserpressestheEnterkey).AllCreatesubprogramsreturnaninteger.ThisnumberistheIDofthewidgetthathasbeencreated.YouneedtousethisIDifyouwanttodoanythingtothewidgetlater,suchasmoveit,changeitssize,hideit,andsoon.MostsimpleprogramscansafelyignorethewidgetID,althoughtheywillneedtohandlethereturnvaluefromthefunction.Afterallthewidgetshavebeencreated,theprogrammustrepeatedlycallGUI.ProcessEventuntilthefunctionreturnstrue.
%Nowprocesseventsuntiltheuserabortstheprogram.
loop
exitwhenGUI.ProcessEvent
![Page 958: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/958.jpg)
endloop
GUI.ProcessEventchecksforuserinputfromthemouseorthekeyboardandthencheckstoseeiftheuserhasclickedonawidget.Iftheuserhas,thenitrespondsappropriately(togglingthecheckbox,pressingthebutton,etc.)andthenifappropriate,callstheproceduretheusersuppliedintheCreatesubprogram.GUI.ProcessEventreturnstruewhentheGUI.Quithasbeencalled,otherwiseitreturnsfalse.
Whenaprogramisfinishedexecution(forexampleiftheuserselected"Quit"or"Exit"fromthefilemenu),itshouldcalltheGUI.Quitprocedure.ThiswillcausetheGUI.ProcessEventlooptoexit.Theprogramshouldhaveanycleanupcodeplacedaftertheendloop.
Hereisaverysimpleexampleofaprogramthatputs"Hello"everytimeabuttonispressed.
%The"Hello"program.
importGUI
View.Set("graphics:200;200")%Shrinktherunwindow
%Theprocedurecalledwhenthebuttonispushed.
procedurePutHello
put"Hello"
endPutHello
%Createthebutton.ThenumberreturnedistheIDnumberofthebutton.
varb:int:=GUI.CreateButton(100,100,0,"SayHello",PutHello)
%Nowprocesseventsuntiltheuserabortstheprogram.
loop
exitwhenGUI.ProcessEvent
endloop
Hereistheoutputwindowaftertheuserhaspressedthebuttontwice.
![Page 959: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/959.jpg)
OutputofHello.dem
![Page 960: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/960.jpg)
ActiveandPassiveWidgets
Widgetscomeintwoforms.Activewidgetsareonesthatrespondtokeystrokesandbuttonclicks.Passivewidgetsdonotrespondtoanything.Examplesofpassivewidgetsarelines,frames,labels,labelledframesandpictures.Passivewidgetsaregenerallyusedtoorganizetheoutputwindow.
Hereisanexampleofasmallprogramthatshowsomepassivewidgets.
%The"Passive"program
%Thisdemonstratessomeofthepassivewidgetssuchas:
%Lines,Frames,LabelledFrames,LabelsandPictures.
importGUI
%We'llneedapictureforourPicturewidget.Mostlikely
%youwouldnormallyhaveitsavedinanexternalfileand
%usePic.FileNewtoreaditintoapicture.Fortheexample
%programwe'llconstructitbyhand.
Draw.FillOval(50,50,50,50,blue)
Draw.FillBox(17,17,83,83,brightred)
Draw.FillStar(17,17,83,83,brightgreen)
Draw.FillMapleLeaf(37,37,63,63,brightpurple)
varpic:=Pic.New(0,0,100,100)
View.Set("graphics:310;335")
%Thebackgroundmustbegrayforindentedandexdented
%itemstobevisible.
GUI.SetBackgroundColor(gray)
%Nowplacethewidgets.
%Threelinesofthedifferenttypeswithlabels
varline1:=GUI.CreateLine(70,10,maxx-10,10,GUI.LINE)
varlabel1:=GUI.CreateLabelFull(60,10,"Line",0,0,
GUI.RIGHT+GUI.MIDDLE,0)
varline2:=GUI.CreateLine(70,30,maxx-10,30,GUI.INDENT)
varlabel2:=GUI.CreateLabelFull(60,30,"Indent",0,0,
GUI.RIGHT+GUI.MIDDLE,0)
varline3:=GUI.CreateLine(70,50,maxx-10,50,GUI.EXDENT)
varlabel3:=GUI.CreateLabelFull(60,50,"Exdent",0,0,
GUI.RIGHT+GUI.MIDDLE,0)
%Nowplacetheframes
varframe1:=GUI.CreateFrame(10,70,100,120,GUI.LINE)
varlabel4:=GUI.CreateLabelFull(10,70,"Line",90,50,
![Page 961: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/961.jpg)
GUI.CENTER+GUI.MIDDLE,0)
varframe2:=GUI.CreateFrame(110,70,200,120,GUI.INDENT)
varlabel5:=GUI.CreateLabelFull(110,70,"Indent",90,50,
GUI.CENTER+GUI.MIDDLE,0)
varframe3:=GUI.CreateFrame(210,70,300,120,GUI.EXDENT)
varlabel6:=GUI.CreateLabelFull(210,70,"Exdent",90,50,
GUI.CENTER+GUI.MIDDLE,0)
%Nowplacethelabelledframes
varframe4:=GUI.CreateLabelledFrame(10,140,100,190,GUI.LINE,"Line")
varframe5:=GUI.CreateLabelledFrame(110,140,200,190,GUI.INDENT,
"Indent")
varframe6:=GUI.CreateLabelledFrame(210,140,300,190,GUI.EXDENT,
"Exdent")
%Placethepicture
varlabel7:=GUI.CreateLabel(30,315,"Picturewithoutmerge")
varpic1:=GUI.CreatePicture(30,210,pic,false)
varlabel8:=GUI.CreateLabel(maxx-130,315,"Picturewithmerge")
varpic2:=GUI.CreatePicture(maxx-130,210,pic,true)
%Thisloopdoesn'tdomuchsincenoneofthewidgetshaveanyactions.
loop
exitwhenGUI.ProcessEvent
endloop
Hereistheoutputwindowfromtheprogramwithsomelabels,aline,apicture,andalabelledframe.
![Page 962: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/962.jpg)
OutputofPassive.dem
Whenanactivewidgetisinitialized,usuallyanactionproceduremustbespecified.Thisisthenameofaprocedurethatwillbecalledwhenthewidgetisselected.Forexample,intheHelloprogram,thePutHelloprocedurewasspecifiedastheactionprocedureofthebutton.Wheneverthebuttonwaspressed,thePutHelloprocedurewascalled.
Someactionprocedureshavearguments.Forexample,theactionprocedureforasliderhasaparameterofthecurrentvalue.ThisallowstheproceduretousethecurrentvaluewithouthavingtocallaGUIsubprogramtogetthecurrentslidervalue.
![Page 963: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/963.jpg)
KeyboardShortcuts
Severaltypesofwidgetscanhave"shortcuts".Ashortcutissimplyakeystrokethathasthesameeffectasclickingonthewidget.WhenyouspecifyashortcuttoawidgetintheCreateFullprocedureforthewidget,youmustspecifyasinglecharacter.TheeasiestwaytodothisistousethechrfunctionwiththeASCIIvalueofthecharactertobeusedastheshortcut.Youcanalsospecifycontrolcharactersusingthe"^"notation.Forexample,thecharacterCtrl+Fcanbeexpressedas"^F"inTuring.
ThefollowingcharacterscannotbeusedasshortcutsbecausetheTuringenvironmentusesthemforvariouspurposes(stoppingorrerunningprograms,andsoon.):Ctrl+C,Ctrl+D,Ctrl+Z,F1,F11andF12.
![Page 964: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/964.jpg)
BackgroundColor
Itiscommonforwindowstohaveadifferentbackgroundcolorfromthestandardwhite.Tochangethebackgroundcolorofawindow,usetheGUI.SetBackgroundColorprocedure.Thisproceduretakesoneparameter,thenewbackgroundcolor.Itredrawsthewindowinthebackgroundcolorandthenredrawsallthewidgets.Italsonotifiesthewidgetsaboutthenewbackgroundcolorsothatwhenthewidgetiserasedormoved,thelocationofthewidgetisfilledwiththenewbackgroundcolorinsteadofwhite.
NotethatMicrosoftWindowsdialogboxesoftenhaveabackgroundcolorofgray.Inordertosimulatethat,youshouldgivethecommandGUI.SetBackgroundColor(gray)beforecreatingwidgets.
Severalwidgets(Canvas,Frame,LabelledFrame,TextFieldandTextBox)canhavebordersofeithertypeINDENTorEXDENT.Thesebordersgiveasortof3-Dappearancetothewidget.However,theyrequirethatthebackgroundbesettogray.
HereisanexampleofasmallprogramthatcreatesaCanvaswitha3-Dappearanceandthendrawscirclesinthecorner.
%The"Canvas1"program.
%Createacanvasanddrawfourcirclesonit.
importGUI
View.Set("graphics:200;200")
%Necessaryfora3-Dlookforthecanvas
GUI.SetBackgroundColor(gray)
%ThisprocedureisneededasanargumenttoCreateCanvasFull.
procedureDoNothing(mx,my:int)
endDoNothing
%Createalabelforthecanvas.WecoulduseCreateLabelFullformore
%precisealignment.
varlabel1:=GUI.CreateLabel(70,182,"FourCircles")
%Createthecanvas.WeneedtouseCreateCanvasFullinorderto
%specifythetypeofborder.
varcanvas:=GUI.CreateCanvasFull(20,20,160,160,GUI.INDENT,
![Page 965: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/965.jpg)
DoNothing,DoNothing,DoNothing)
%Drawthefourovals.Noticethattheydon'textendoffthecanvas
%andtheco-ordinatestheyusearerelativetothecanvas,notthewindow.
constradius:=70%Halfthewidth-10
GUI.DrawFillOval(canvas,0,0,radius,radius,brightred)
GUI.DrawFillOval(canvas,160,0,radius,radius,brightgreen)
GUI.DrawFillOval(canvas,0,160,radius,radius,brightblue)
GUI.DrawFillOval(canvas,160,160,radius,radius,brightpurple)
Hereistheoutputwindow.
OutputofCanvas1.dem
![Page 966: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/966.jpg)
WidgetSizes
Thesizethatyouspecifyawidgettobeisnotnecessarilytheactualsizethatthewidgetwillappear.Infactformanywidgets,youcanspecifyawidthandheightof0forthewidgetandletstheinitializerdecidehowlargethewidgetshouldbe.Anotherexampleiswithcheckboxes,whereifyouspecifythecheckboxtoberightjustified,thexandycoordinatesindicatethelower-rightcornerinsteadofthelower-leftcornerasusual.Thismeansthatyoumayhavetodosomeexperimentationtodeterminewhereyouwantthewidgetstobeplaced.Readthepageoneachsubprogramthatyouusetofindoutexactlywhatyouarespecifyingwiththex,y,widthandheightparameters.
Ifyouaretryingtoalignwidgetstogether(forexamplealigningscrollbarswithacanvas),usetheGUI.GetX,GUI.GetY,GUI.GetWidth,andGUI.GetHeightfunctionstodeterminethesizeoftheobject.
![Page 967: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/967.jpg)
PositioningTextLabels(AligningLabelswithWidgets)
Itisverycommontowanttoaligntextlabelswithwidgetsonthescreen.Thereareafewtipsandtrickstodoingsosuccessfully.Toalignatextlabelwithawidget,itissimplyamatterofusingtheGUI.CreateLabelFullfunctionwiththeappropriatex,y,width,heightandalignmentarguments.
Ifyouareleftorrightaligningalabel,thengenerallyyouwillwantthexcoordinatetospecifytheedgetobealignedfromandthewidthparametershouldbesetto0.Similarly,ifyouaretoporbottomaligningalabel,thentheycoordinateshouldspecifytheedgetobealignedfromandtheheightparametershouldbesetto0.
Toalignawidgethorizontallywithawidget,chooseGUI.CENTERforthehorizontalalignmentandtheusethexcoordinateandwidthofthewidgetasthelabel'sxcoordinateandwidth.YoucangetthexcoordinateandwidthofawidgetusingGUI.GetXandGUI.GetWidth.
Likewise,toalignawidgetverticallywithawidget,chooseGUI.MIDDLEfortheverticalalignmentandtheusetheycoordinateandheightofthewidgetasthelabel'sycoordinateandheight.YoucangettheycoordinateandheightofawidgetusingGUI.GetYandGUI.GetHeight.
Hereisanexampleillustratingtheplacementofalabelatthecenterofeachoffoursidesofawidgetcalledw:
importGUI
View.Set("graphics:200;50,nobuttonbar")
procedureDoNothing(text:string)
endDoNothing
varw:int:=GUI.CreateTextField(50,15,100,"",DoNothing)
%Thesefollowinglinesaretheimportantpartoftheprogram.
varleft:=GUI.CreateLabelFull(GUI.GetX(w)-2,GUI.GetY(w),
"Left",0,GUI.GetHeight(w),GUI.RIGHT+GUI.MIDDLE,0)
varabove:=GUI.CreateLabelFull(GUI.GetX(w),
GUI.GetY(w)+GUI.GetHeight(w)+2,"Above",GUI.GetWidth(w),0,
GUI.CENTER+GUI.BOTTOM,0)
![Page 968: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/968.jpg)
varright:=GUI.CreateLabelFull(GUI.GetX(w)+GUI.GetWidth(w)+2,
GUI.GetY(w),"Right",0,GUI.GetHeight(w),GUI.LEFT+GUI.MIDDLE,0)
varbelow:=GUI.CreateLabelFull(GUI.GetX(w),GUI.GetY(w)-2,
"Below",GUI.GetWidth(w),0,GUI.CENTER+GUI.TOP,0)
Here'stheresult.Notethattheformulaforaligningalabelwithawidgetisthesameforanytypeofwidget.
TextBoxAlignedwithFourLabels
Here'sanexampleillustratingaligningawidgetwiththetopofthewindow.Noticethatthelabeliscenteralignedwithxof0andwidthofmaxx,andtopalignedwithayofmaxyandaheightof0.
vartitle:=GUI.CreateLabelFull(0,maxy,"Title",maxx,0,
GUI.CENTER+GUI.TOP,0)
Finally,here'sanexampleillustratingtheplacementofalabelinthecenterofthescreen.Noticethatthelabeliscenteralignedwithxof0andwidthofmaxx,andmiddlealignedwithayof0andaheightofmaxy.
vartitle:=GUI.CreateLabelFull(0,0,"Title",maxx,maxy,
GUI.CENTER+GUI.MIDDLE,0)
Notethatifalabel'spositionorsizeischangedwithGUI.SetPosition,GUI.SetSizeorGUI.SetPositionAndSize,itstillretainsitsalignmentwithrespecttoitsnewx,y,width,andheightvalues.
![Page 969: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/969.jpg)
Canvases
Thecanvasisaratheruniquewidget.Itisessentiallyadrawingsurfacethatyouplaceinthewindow.TherearecallsusingacanvaswidgetthatessentiallyduplicateallthestandardDrawmodulecalls,alongwithcallscorrespondingtoFont.DrawandvariousPicmodulecalls.
ThedifferenceisthatthecallsusingtheCanvaswidgetuse(0,0)tomeanthebottomleftcornerofthecanvas(notthewindow)andalldrawingisclippedtothecanvas(meaningthatifyouaccidentallydrawoffthecanvas,thepartofthepictureoutsidetheboundsofthecanvaswillnotappear).OneofthemostcommonbugsistoaccidentallyusetheactualDrawmoduleroutinesinsteadoftheGUI.Drawroutineswhendrawinginacanvas.IfthedrawingisgoesoutsidetheboundsoftheCanvas,youhavemadethismistake.
AnotherfeatureoftheCanvaswidgetisthatyoucanspecifyaprocedurestobecalledwheneverauserclicksintheCanvaswidget,dragsthemousewiththemousebuttondownandthenletsgoofthemousebutton.Theseproceduresallowyourprogramtorespondtomouseactivitytakingplaceinthecanvaswidget.
HereisaprogramthatusesaCanvastoallowtheusertodrawandabuttontoallowtheusertoerasethedrawing.
%The"Draw"program
importGUI
View.Set("graphics:300;300")
varoldx,oldy:int
varcanvas:int%Thedrawingcanvas.
varclear:int%Theclearbutton.
%Calledwhentheuserpressesthemousebuttoninthecanvas.
%Setstheinitialmouseposition.
procedureMouseDown(mx,my:int)
oldx:=mx
oldy:=my
endMouseDown
%Calledastheuserdragsthemousewiththebuttondowninthecanvas.
%Drawsalinefromthepreviousmousepositiontothecurrentposition.
![Page 970: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/970.jpg)
procedureMouseDrag(mx,my:int)
GUI.DrawLine(canvas,oldx,oldy,mx,my,colorfg)
oldx:=mx
oldy:=my
endMouseDrag
%Calledwhenthemousebuttonisreleased.
procedureDoNothing(mx,my:int)
endDoNothing
%Calledwhentheclearbuttonispressed.
procedureClear
GUI.DrawCls(canvas)
endClear
%Createthecanvas
canvas:=GUI.CreateCanvasFull(10,30,maxx-20,maxy-40,0,
MouseDown,MouseDrag,DoNothing)
%Createtheclearbutton
clear:=GUI.CreateButton(maxxdiv2-20,0,40,"Clear",Clear)
loop
exitwhenGUI.ProcessEvent
endloop
Hereistheoutputwindowaftertheuserhasdrawnsomelines.
![Page 971: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/971.jpg)
OutputofDraw.dem
![Page 972: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/972.jpg)
MultipleWindows
Turingallowsformultiplerunwindows.Thiscanbeusedtoaddextrafunctionalitytoprograms,howeverthereareafewissuesthatmustbeunderstoodbeforemultiplewindowscanbesuccessfullyused.
Turingusestheconceptofselectedwindowsandactivewindows.AselectedwindowisdeterminedbytheprogramandischangedbyWindow.Select.Theselectedwindowisthewindowinwhichalloutputappears.Whenawidgetiscreated,itisautomaticallycreatedintheselectedwindow.
Anactivewindowislastwindowonwhichtheuserclicked.Theactivewindowisshownbyhavingitstitlebarhighlighted.Whenausertypes,allkeystrokesaresenttotheactivewindow.
Itisentirelypossibletohavetheselectedwindowandtheactivewindowbetodifferentwindows.
Whenyoucallgetch,Mouse.ButtonWait,oranyotherinputroutine,Turingchecksonlytheselectedwindow.TheGUILibraryworksaroundthisbyselectingallthewindowsthathavewidgetsinthem(oneatatime,startingwiththeactivewindow)andcheckingeachforevents.
Ifyouareprocessinganeventfromoneofseveralwindows,makecertainthatthecorrectwindowisselectedbeforeyououtputyourresults.Notethatthewidgetsautomaticallyselectthecorrectwindow,sothereisnoneedtochangetheselectedwindowbeforemakinganycallstotheGUImodule.
Ifyoucloseawindowwithwidgetsinit,useGUI.CloseWindowtoclosethewindow.Thisremovesallthewidgetsinthewindowbeforeclosingit.Ifyouhaveseveralwindowswithwidgetsandwantsomewindowstobehiddenandthenshownlater,usetheGUI.ShowWindowandGUI.HideWindowtoshowandhidethewindowswithwidgetsinthem.
![Page 973: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/973.jpg)
TheGUILibraryInternals
WhileitisnotnecessarytoknowtheinternalsoftheGUILibrarytouseit,weprovidethisbriefoverviewforthosewhowishtounderstandtheinnerworkingsofthelibrary.
TheGUILibraryconsistsoffourparts.TheonlypartvisibletotheuseristheGUImodule.Thisislocatedin"%oot/lib/GUI",where%ootisthedirectoryinwhichtheOOTexecutableislocated.TheGUImoduleisessentiallyaseriesofproceduresthatprovideafrontendtotheWidgetModuleandtheWidgetClassLibrary.
TheWidgetModuleisamodulecalledWidgetModulethatconsistsofaseriesofsubprogramsthatcoveralltheaspectsofGUI'sthatdonotpertaintoaparticularwidget.Forexample,theproceduretochangethebackgroundcolorishere,aswellastheproceduretoprocessanevent.Itislocatedin"%oot/lib/GuiClass/wdgtmod.tu"
TheGUIClassLibraryconsistsofaseriesofclassesarrangedinahierarchyillustratedinthefollowingfigure.MostoftheactualTuringcodefortheGUILibraryislocatedintheWidgetClassLibrary.Eachdifferenttypeofwidgethasitsownclass.Widgetsthatsharecommonbehaviorhavethesameparent.Forexample,boththeverticalandhorizontalsliderhaveasliderclassasaparent.ThoseclasseswhosenamesstartwithGenericareabstractclasses.Theyshouldnotbeinstantiatedthemselves.Theyareusedtodefinecommonbehavioramongtheirsubclasses.TheTuringsourcefortheclassescanbefoundinthedirectory"%oot/lib/GuiClass"
ThefourthpartistheWidgetGlobalsmodule.ThismodulethatconsistsmostlyofglobalvariablesusedbytheGUIClassLibraryandtheWidgetmodule.Itislocatedin"%oot/lib/GuiClass/wdgtglob.tu"
HereisanexampleofhowtheGUImoduleworks:whenyoucreateabuttonusingGUI.CreateButton,theCreateButtonfunctionintheGUImodulecreatesanobjectoftypeButtonClass.(ButtonClassisfoundintheWidgetClassLibrarydiscussedfurtherdown).ItthencallstheInitializeprocedureoftheButtonClasstoinitializethebuttonwiththespecifiedparameters.FinallyitassignsanIDnumbertothewidgetandarrangesitinatableforfuturereference.Hereis
![Page 974: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/974.jpg)
anotherexample:whenyoucallaprocedurelikeGUI.Show,theShowproceduretakesthewidgetID,looksuptheobjectthatitrepresents,andthencallstheShowprocedureoftheobject.
StudentswhowishtoaddnewwidgetstotheGUIlibrarywillhavetounderstandtheprinciplesofobjectorientedprogramming,astheywillbeaddinganewclasstotheGUIClassLibraryandthenaddingnewsubprogramsintheGUImodulethatwillcalltheirnewclasses.(Attheveryleast,aCreatesubprogramwillberequiredforthenewwidget.)
AsuggestedprojectwouldbetocreatenewversionsoftheButtonClass,CheckBoxClassandRadioButtonClassclassesthatarebuttons,checkboxesandradiobuttonswiththenewWindows95/NTappearance.TheycouldbecalledtheButton95Class,CheckBox95ClassandRadioButton95Class.Properlywritten,thesenewclassesshouldinheritfromButtonClass,etc.andcontainonlythoseproceduresthatdifferfromthebaseclass(presumablytheproceduresthatdisplaythewidget).
![Page 975: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/975.jpg)
TheGUIClassLibraryHierarchy
![Page 976: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/976.jpg)
GUIModuleRoutinesSummary
TheroutinesintheGUImodulearedividedintoseveraldifferenttypes.Therearetheroutinestocreatevariouswidgets,theroutinestocreatemenusandmenuitems,theroutinestodogeneralactivities(suchasprocessinganevent,changingthebackgroundcolor,etc.)andtheroutinesthatactonvarioustypesofwidgets.
Hereisthelistoftheroutinesthatcreatewidgets:
GUI.CreateButton,GUI.CreateButtonFull Createabutton.GUI.CreateCheckBox,GUI.CreateCheckBoxFull Createacheckbox.GUI.CreateRadioButton,GUI.CreateRadioButtonFull Createaradiobutton.GUI.CreatePictureButton,GUI.CreatePictureButtonFull Createapicturebutton.
GUI.CreatePictureRadioButton,GUI.CreatePictureRadioButtonFull
Createapictureradiobutton.
GUI.CreateHorizontalSlider Createahorizontalslider.
GUI.CreateVerticalSlider Createaverticalslider.GUI.CreateHorizontalScrollBar,GUI.CreateHorizontalScrollBarFull
Createahorizontalscrollbar.
GUI.CreateVerticalScrollBar,GUI.CreateVerticalScrollBarFull
Createaverticalscrollbar.
GUI.CreateCanvas,GUI.CreateCanvasFull Createacanvas.GUI.CreateTextField,GUI.CreateTextFieldFull Createatextfield.GUI.CreateTextBoxFull,GUI.CreateTextBoxFull Createatextbox.
GUI.CreateTextBoxChoice Createamulti-lineselector.
GUI.CreateLine Createaline.GUI.CreateFrame Createaframe.GUI.CreateLabelledFrame Createalabelledframe.GUI.CreateLabel,GUI.CreateLabelFull Createalabel.GUI.CreatePicture Createapicture.
![Page 977: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/977.jpg)
Hereisthelistofroutinesthatcreatemenusandmenuitems:
GUI.CreateMenu Createamenu.GUI.CreateMenuItem,GUI.CreateMenuItemFull Createamenuitem.
Hereisthelistofgeneralroutines:
GUI.ProcessEvent Processasinglekeyboardormousedownevent.GUI.Quit Telltheprogramtoexittheeventloop.
GUI.ResetQuit Resetthe"quit"flagsoaprogramcanreentertheeventloop.
GUI.Refresh Redrawallthewidgetsonthescreen.GUI.SetBackgroundColor Changethewindow'sbackgroundcolour.GUI.SetNullEventHandler Setthenulleventhandler.GUI.SetKeyEventHandler Setthekeystrokeeventhandler.GUI.SetMouseEventHandler Setthemouseeventhandler.GUI.HideMenuBar Hidethemenubarinthewindow.GUI.ShowMenuBar Showthemenubarinthewindow.
GUI.GetEventWidgetID Gettheselectedwidget'sID(usedinawidget'sactionprocedure).
GUI.GetEventWindow Getthewindowthattheeventtookplacein(usedinawidget'sactionprocedure).
GUI.GetEventTime Getthetime(inmilliseconds)thattheeventtookplace(usedinawidget'sactionprocedure).
GUI.GetScrollBarWidth Returnthewidthofascrollbar.GUI.GetMenuBarHeight Returntheheightofamenubar.
GUI.GetVersion ReturnthecurrentversionnumberoftheGUImodule.
Hereisalistofroutinesthatactonthewidgetsandthesortofwidgetstheyacton.
GUI.Show Displaythewidget. All
GUI.Hide Hidethewidget. All
![Page 978: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/978.jpg)
GUI.GetXReturnthexcoordinateofthewidget'sleftedge.
All
GUI.GetY
Returntheycoordinateofthewidget'sbottomedge.
All
GUI.GetWidthReturnthewidget'sactualwidth.
All
GUI.GetHeightReturnthewidget'sactualheight.
All
GUI.Dispose Disposeofthewidget. All
GUI.SetPosition Setthewidget'sposition. All
GUI.SetSize Setthewidget'ssize. All
GUI.SetPositionAndSize Setthewidget'spositionandsize. All
GUI.EnableEnablethewidgettorespondtoevents.
ActiveWidgets
GUI.Disable
Disablethewidgetfromrespondingtoevents.
ActiveWidgets
GUI.SetLabel Setthewidget'stextlabel.
Button,CheckBox,RadioButton,Label,LabelledFrame
Setthebutton's
![Page 979: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/979.jpg)
GUI.SetColor color. Button
GUI.SetDefault Makethebuttonthedefaultbutton. Button
GUI.GetCheckBoxGetwhetheracheckboxisfilled.
CheckBox
GUI.SetCheckBox Setacheckboxtobefilledornot. CheckBox
GUI.SelectRadio Selectaradiobutton.
RadioButton,PictureRadioButton
GUI.GetSliderValue Returnthecurrentvalueoftheslider.
Slider,ScrollBar
GUI.SetSliderValue Setthevalueoftheslider.
Slider,ScrollBar
GUI.SetSliderMinMaxSettheslider'sminimumandmaximum.
Slider,ScrollBar
GUI.SetSliderSize Settheslider'slength(orheight).
Slider,ScrollBar
GUI.SetSliderReverseReversethedirectionoftheslider.
Slider,ScrollBar
GUI.SetScrollAmount
Setthescrollbar'sthumbsizeandthescrollamountforarrows/pageupanddown.
ScrollBar
DrawArc,DrawBox,DrawCls,DrawDot,DrawFill,DrawFillArc,DrawFillBox,DrawFillMapleLeaf,DrawFillOval,DrawFillPolygon,DrawFillStar,DrawLine,DrawMapleLeaf,DrawOval,DrawPolygon,
RoutinesthatperformthesamefunctionastheDrawmodulefortheCanvas
Canvas
![Page 980: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/980.jpg)
DrawStar,DrawText widget.
GUI.FontDraw"Font.Draw"fortheCanvaswidget.
Canvas
PicDraw,PicNew,PicScreenLoad,PicScreenSave
RoutinesthatperformthesamefunctionasthePicmodulefortheCanvaswidget.
Canvas
GUI.SetXOR
PerformsView.Set("xor")fortheCanvasWidget.
Canvas
GUI.SetText Setthetextofatextfield. TextField
GUI.SetEchoChar
Setthecharacterthatappearswhenuserentersakeystroke.
TextField
GUI.SetSelection Settheselectioninthetextfield. TextField
GUI.SetActive
Makethetextfieldtheactiveone(wherekeystrokeswillgoandwherethecursorblinks).
TextField
GUI.ClearText Clearatextbox. TextBox
GUI.AddText Addtexttoatextbox. TextBox
GUI.AddLine Addalineoftexttoatextbox. TextBox
GUI.SetTopLineScrollstextboxtomakelineappearattop.
TextBox
![Page 981: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/981.jpg)
GUI.SetScrollOnAdd Setswhethertextboxscrollswhentextadded.
TextBox
![Page 982: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/982.jpg)
Widgets-CommonRoutines
Alloftheproceduresinthissectioncanbeusedwithanywidget,althoughsomemayhavenoeffect(forexampleGUI.GetXonamenuitemismeaningless).
GUI.ShowDisplaysawidget.UsedinconjunctionwithHidetohideandshowwidgets.Hiddenwidgetscannotgetevents(i.e.respondtokeystrokesormouseclicks).
GUI.Hide
Hidesawidget.UsedinconjunctionwithShowtohideandshowwidgets.Hiddenwidgetscannotgetevents(i.e.respondtokeystrokesormouseclicks).Ifanactivetextfield(seetextfield)ishidden,thenanykeystrokesinthewindowwillbeignored.
GUI.GetXGUI.GetY
Returnsthex(y)coordinateoftheleftedgeofawidget.Notethatthismaybedifferentfromthexcoordinatespecifiedinthewidget'sCreatecall.Forexample,ifaradiobuttoniscreatedwithrightjustification,thexcoordinateintheCreatemethodspecifiestherightedge.
Hereisasmallsubprogramthatshoulddrawarectangleentirelyaroundawidget(i.e.nopartofthewidgetshouldstickout).
procedureWidgetRect(widgetID:int)
constx:int:=GUI.GetX(widgetID)
consty:int:=GUI.GetY(widgetID)
constwidth:int:=GUI.GetWidth(widgetID)
constheight:int:=GUI.GetHeight(widgetID)
Draw.Box(x,y,x+width-1,y+height-1,black)
endWidgetRect
GUI.GetWidthGUI.GetHeight
Returnstheactualwidth(height)ofawidget.NotethatthismaybedifferentfromthewidthspecifiedintheCreatecall(especiallysincemanywidgetsallowyoutospecify0forthewidthandlettheGUImoduledeterminethenecessarywidth).
GUI.Dispose
Eliminatesawidget.Itshouldbecalledinordertofreeupanymemorythatthewidgetmighthaveallocated.Notethatyoucannotusethewidgetafterithasbeendisposedof.Ifyouwishtotemporarilygetridofawidget,considerusingtheHidemethodandthentheShowmethodwhenyouwanttouseitagain.
![Page 983: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/983.jpg)
GUI.SetPosition
Movesawidgettothespecifiedlocation.Ifthewidgetisvisible,itismovedimmediatelytothenewlocation.Ifthewidgetishidden,itwillappearatthenewlocationwhentheShowprocedureiscalled.NotethatthelocationspecifiedinGUI.SetPositionarethesameasintheCreatemethod.Forexample,ifyouhadspecifiedacheckboxtoberightjustifiedintheCreateCheckBoxFullfunction,thenthelocationinacalltoSetPositionwouldspecifythelower-rightcornerasopposedtothelower-leftcorner.
GUI.SetSize
Changesthesizeofawidget.Ifthewidgetisvisible,itssizeischangedimmediately,otherwisethewidgetwillappearinitsnewsizewhenthewidgetisnextmadevisible.Notethatthewidthandheightparametersarenotnecessarilytheactualwidthandheightofthewidget.Forexample,theTextFieldwidgetignorestheheightparameter,calculatingthewidget'sactualheightfromtheheightofthetextintheTextField.
GUI.SetPositionAndSize Changesthepositionandsizeofthewidgetsimultaneously.ItworksthesamewayastheSetPositionandSetSizeprocedures.
![Page 984: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/984.jpg)
Widgets-Buttons
OutputofButtons.dem
Thebuttonwidgetisusedtoimplementatextualbutton.Whenyouclickonabutton,thebutton'sactionprocedureiscalled.Ifabuttonisgivenashortcut,thenenteringthekeystrokewillcausetheactionproceduretobecalled.Itwillnotvisiblycausethebuttontodepress.
Ifabutton'swidthorheightissettozero(ornotspecifiedatall),thenthebuttonisshapedtofitthetext.
Abuttoncanbethedefaultbuttonforawindow.Ifthatisthecase,thenthebuttonwillbedrawnwithatickerborderarounditandiftheuserpressesENTER,thenthebutton'sactionprocedurewillbecalled.
![Page 985: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/985.jpg)
Whenabuttonisnotenabled,thetextinthebuttonisgrayedoutandthebuttonnolongerrespondstoanymouseclicksorkeystrokesuntilthebuttonisenabledagain.
GUI.CreateButtonCreatesanddisplaysabutton.GUI.CreateButtonspecifiesthelocation,width,textandactionprocedureofthebutton.
GUI.CreateButtonFullCreatesanddisplaysabutton.GUI.CreateButtonFullalsospecifiestheheight,keyboardshortcutanddefaultstatusofthebutton.
GUI.EnableGUI.Disable
Enables(disables)abutton.Disabledbuttonshavetheirtextgrayedoutandcannotgetevents(i.e.respondtokeystrokesormouseclicks).
GUI.SetLabel Changesthetextofabutton.
GUI.SetDefault
Setsthe"defaultstatus"ofabutton.Ifabuttonisthedefaultbutton,thenitisdrawnwithaheavyoutlineanditisactivatedwhentheuserpressesENTER(RETURNonaMacintosh).
![Page 986: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/986.jpg)
Widgets-CheckBoxes
OutputofCheckBoxes.dem
Thecheckboxwidgetisusedtoimplementacheckboxthatcanbesetorunset.Whenyouclickonacheckbox,thestatusofthecheckboxflipsfromsettounsetandbackagainandthecheckbox'sactionprocedureiscalledwiththenewstatusasaparameter.Ifacheckboxisgivenashortcut,thenenteringthekeystrokewillcausethecheckboxtochangestatusandtheactionproceduretobecalled.Thenewstatuswillbedisplayedimmediately.
Acheckbox'ssizeisnotspecifiedduringcreation.Itisdeterminedbasedonthesizeofthetext.Insteadtheuserspecifiesthelower-leftcornerofthecheckbox(orthelower-rightifthecheckboxisrightjustified).
Whenacheckboxisnotenabled,thelabelbesidethecheckboxisgrayedout
![Page 987: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/987.jpg)
andthecheckboxnolongerrespondstoanymouseclicksorkeystrokesuntilthecheckboxisenabledagain.
GUI.CreateCheckBox
Createsanddisplaysaleftaligned(checkboxtotheleftofthelabel)checkbox.GUI.CreateCheckBoxspecifiesthelocation,textandactionprocedureofthecheckbox.
GUI.CreateCheckBoxFull
Createsanddisplaysacheckbox.GUI.CreateCheckBoxFullalsospecifiesthealignmentofthecheckbox(whetherthecheckboxistherightorleftofthetext)andthecheckbox'skeyboardshortcut.
GUI.EnableGUI.Disable
Enables(disables)acheckbox.Disabledcheckboxeshavetheirtextgrayedoutandcannotgetevents(i.e.respondtokeystrokesormouseclicks).
GUI.SetLabel Changesthetextofacheckbox.
GUI.GetCheckBoxReturnsacheckbox'sstatus.Ifthecheckboxisset(hasanXinit),GUI.GetCheckBoxreturnstrue,otherwiseitreturnsfalse.
GUI.SetCheckBoxSetsthestatusofacheckbox.Itcallsthecheckbox'sactionprocedurewiththenewstatusandredrawsthewidgetwiththenewstatus.
![Page 988: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/988.jpg)
Widgets-RadioButtons
OutputofRadioButtons.dem
Theradiobuttonwidgetisusedtoimplementasetofbuttonsofwhichoneandonlyonebuttonmustbeselectedatalltimes.(Thinkold-styleradiostationbutton.Selectingone"deselects"thepreviously-selectedstation.)Whenyouclickonaradiobutton,anyotherradiobuttonthatispartofthesetisdeselectedandtheradiobutton'sactionprocedureiscalled.Ifaradiobuttonisgivenashortcut,thenenteringthekeystrokewillcausetheradiobuttontobeselected(andanyotherradiobuttoninthegrouptobede-selected)andtheactionproceduretobecalled.Thenewly-selectedordeselectedradiobuttonswillbedisplayedimmediately.
Whenaradiobuttoniscreated,thewidgetIDofanotherradiobuttonmustbesupplied.AvalueofzeroforthewidgetIDindicatesthatthisradiobuttonispart
![Page 989: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/989.jpg)
ofanewgroup.ThewidgetIDmustbetheIDofthelastradiobuttonaddedtothegroup.Becauseradiobuttonsarealmostalwaysplacedingroupsyoucanspecify-1forthexandycoordinatesandtheradiobuttonwillbeplacedjustbelowthepreviousradiobuttonandretainthesamealignment.Whenagroupofradiobuttonsisselected,thefirstradiobuttoncreatedinthegroupwillbetheselectedone.YoucanchangethisbyusingtheGUI.SelectRadioproceduretoselectadifferentone.
Aradiobutton'ssizeisnotspecifiedduringcreation.Itisdeterminedbasedonthesizeofthetext.Theuserspecifiesthelower-leftcorneroftheradiobutton(orthelower-rightiftheradiobuttonisrightjustified).
Whenaradiobuttonisnotenabled,thelabelbesidetheradiobuttonisgrayedoutandtheradiobuttonnolongerrespondstoanymouseclicksorkeystrokesuntiltheradiobuttonisenabledagain.
GUI.CreateRadioButton
Createsanddisplaysaleftaligned(circletotheleftofthelabel)radiobutton.GUI.CreateRadioButtonspecifiesthelocation,text,theradiobuttontobejoinedtoandtheactionprocedureoftheradiobutton.
GUI.CreateRadioButtonFull
Createsanddisplaysaradiobutton.GUI.CreateRadioButtonFullalsospecifiesthealignmentoftheradiobutton(whetherthecircleistherightorleftofthetext)andtheradiobutton'skeyboardshortcut.
GUI.EnableGUI.Disable
Enables(disables)aradiobutton.Disabledradiobuttonshavetheirtextgrayedoutandcannotgetevents(i.e.respondtokeystrokesormouseclicks).
GUI.SetLabel Changesthetextofaradiobutton.
GUI.SelectRadioSelectsaradiobutton.Thepreviously-selectedradiobuttonis"de-selected".Theactionprocedureoftheradiobuttoniscalled.
![Page 990: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/990.jpg)
Widgets-PictureButtons
OutputofPictureButtons.dem
Thepicturebuttonwidget(hereaftersimplycalledabutton)issimplyabuttonwithapictureonitinsteadoftext.ThepicturemustbecreatedbytheprogrambeforehandusingPic.NeworPic.FileNew.TheresultingpicturecanthenbeusedasaparametertoGUI.CreatePictureButton.Ingeneral,picturesshouldbeamaximumofabout30pixelshighandwide,althoughthereisnobuiltinlimitintheGUIlibrary.
Whenyouclickonapicturebutton,thepicturebutton'sactionprocedureiscalled.Ifapicturebuttonisgivenashortcut,thenenteringthekeystrokewillcausetheactionproceduretobecalled.Itwillnotvisiblycausethebuttontodepress.
Ifabutton'swidthorheightissettozero(ornotspecifiedatall),thenthebutton
![Page 991: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/991.jpg)
isshapedtofitthepicture.
Whenapicturebuttonisnotenabled,thepicturebuttonisgrayedoutandthepicturebuttonnolongerrespondstoanymouseclicksorkeystrokesuntilthebuttonisenabledagain.
GUI.CreatePictureButton
Createsanddisplaysapicturebutton.Thebuttonisautomaticallysizedtofitthepicture.Ifyouneedtoknowtheprecisesizeofthebutton,usetheGUI.GetWidthandGUI.GetHeightfunctions.GUI.CreatePictureButtonspecifiesthelocation,pictureidandactionprocedureofthebutton.
GUI.CreatePictureButtonFull
Createsanddisplaysapicturebutton.GUI.CreatePictureButtonFullalsospecifiesthewidth,heightandkeyboardshortcutofthebutton.Italsospecifieswhetherthebuttonpictureshouldbemergedwiththebackgroundcolorornot.
GUI.EnableGUI.Disable
Enables(disables)apicturebutton.Disabledpicturebuttonsaregrayedoutandcannotgetevents(i.e.respondtokeystrokesormouseclicks).
![Page 992: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/992.jpg)
Widgets-PictureRadioButtons
OutputofPictureRadioButtons.dem
Thepictureradiobuttonwidget(hereaftersimplycalledabutton)issimplyapicturebutton(seeWidget-PictureButton)thathasthebehaviorofaradiobutton.Thismeansthatoneandonlyonepictureradiobuttonofagroupisselectedatanytime.Aselectedpictureradiobuttonisdisplayedasbeingpressed.
Whenyouclickonapicturebutton,thepreviously-selectedpictureradiobuttonwillbede-selectedandthenewpicturebutton'sactionprocedureiscalled.Ifapicturebuttonisgivenashortcut,thenenteringthekeystrokewillcausetheactionproceduretobecalledandthepictureradiobuttonwillbedrawnselected.
Createsanddisplaysapictureradiobutton.Thebuttonisautomaticallysizedtofitthe
![Page 993: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/993.jpg)
GUI.CreatePictureRadioButton
picture.Ifyouneedtoknowtheprecisesizeofthebutton,usetheGUI.GetWidthandGUI.GetHeightfunctions.GUI.CreatePictureRadioButtonspecifiesthelocation,pictureidandactionprocedureofthebuttonaswellastheradiopicturebuttontobejoinedto.
GUI.CreatePictureRadioButtonFull
Createsanddisplaysapictureradiobutton.GUI.CreatePictureRadioButtonFullalsospecifiesthewidth,heightandkeyboardshortcutofthebutton.Italsospecifieswhetherthebuttonpictureshouldbemergedwiththebackgroundcolorornot.
GUI.EnableGUI.Disable
Enables(disables)apictureradiobutton.Disabledpicturebuttonsaregrayedoutandcannotgetevents(i.e.respondtokeystrokesormouseclicks).
![Page 994: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/994.jpg)
Widgets-Sliders
OutputofSliders.dem
Slidersaretheequivalentofavolumecontrolonastereo.Tocontrolaslider,theusersimplyclicksonthecontrolknobandslidesthecontrolleftandright(upanddownforaverticalslider).Whenevertheuserslidesthecontrolknob,theactionprocedureofthewidgetiscalledwiththecurrentvalueasaparameter.
TherangeofvaluesthatthesliderwillgiveisdeterminedbytheminandmaxparametersintheCreatecall.Theleftsideoftheslider(bottomforverticalsliders)representstheminimumvalue,whiletheright(top)representsthemaximumvalue.
Insomeinstances,youwillwantthereversetobetrue(right/topisminimum).Inthatcase,calltheGUI.SetSliderReverseproceduretoflipthevaluesoftheslider.
![Page 995: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/995.jpg)
Slidersalwayshaveafixedheight(forhorizontalsliders)orwidth(forverticalsliders).ThelengthparameterintheCreatecallspecifieshowlongtheslidershouldbe.
GUI.CreateHorizontalSlider
Createsanddisplaysahorizontal(left-right)slider.GUI.CreateHorizontalSliderspecifiesthelocation,length,minimumandmaximumvaluesfortheslider,theinitialvalueoftheslider,andtheactionprocedureoftheslider.
GUI.CreateVerticalSlider
Createsanddisplaysavertical(up-down)slider.GUI.CreateVerticalSliderspecifiesthelocation,length,minimumandmaximumvaluesfortheslider,theinitialvalueoftheslider,andtheactionprocedureoftheslider.
GUI.EnableGUI.Disable
Enables(disables)aslider.Disabledsliderscannotgetevents(i.e.respondtomouseclicks).
GUI.GetSliderValue Returnsthecurrentvalueofaslider.
GUI.SetSliderValueSetsthevalueofaslider.Itmovesthecontrolknobontheslidertotheappropriatelocationandcallstheslider'sactionprocedurewiththenewvalue.
GUI.SetSliderMinMax
Setstheminimumandmaximumvaluesofaslider.Itredrawsthecontrolknobtotakeintoaccountthenewminimumandmaximum.Ifthecurrentvalueofthesliderisoutsidethenewmin/max,thenthevalueisadjustedappropriately.
GUI.SetSliderSizeChangesthelengthofaslider.Redrawsthesliderandchangesthepositionofthecontrolknobtotakeintoaccountthenewsizeoftheslider.
GUI.SetSliderReverse
Setsasliderinto(oroutof,ifalreadyinto)"reversemode".Normally,asliderisatitsminimumvaluewhenthecontrolknobisontheleftside(bottomforaverticalslider).Thisreversesit,sotheminimumvalueiswhenthesliderisattherightside(topforverticalsliders)ofthetrack.Callingthisroutineasecondtimereversesitbacktonormal.Thisprocedureredrawstheslidertomovethecontrolknobtoitsnewlocation.
![Page 996: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/996.jpg)
Widgets-ScrollBars
OutputofScrollBars.dem
Scrollbarsareusuallyusedtoallowausertoseeapieceofadocumentthatcannotbedisplayedonthescreeninitsentirety.Thepictureaboveshowsthescrollbarsappearance.Tocontrolascrollbar,thereareafewchoices:theusercanclickonthethumb(theboxinthescrollbar)andslideitupanddown,ortheusercanclickinthescrollbaritselfaboveorbelowthethumb(inwhichcasethethumbismovedupordownone"page"),ortheusercanclickontheupordownarrowsattheendsofthescrollbar(inwhichcasethethumbismovedupone"line").Theprogrammerdefinesapageoraline.Whenthevalueofthescrollbarchanges,theactionprocedureofthescrollbariscalledwiththenewvalueasaparameter.
Therangeofvaluesthatthescrollbarwillgiveisdeterminedbytheminand
![Page 997: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/997.jpg)
maxparametersintheCreatecall.Theleftsideofthescrollbar(bottomforverticalscrollbars)representstheminimumvalue,whiletheright(top)representsthemaximumvalue.Thereisalsothe"thumbsize".Thisrepresentstherangeofvaluesthatcanbeseenatonceonthescreen.
Forexample,ifyouhaveawindowthatcandisplay20linesoftextatonceandthereare100linesoftext,youwouldsetminto1,maxto100,andthumbSizeto20.Thevaluereturnedbythescrollbarwouldthenbethelinenumberofthefirstlineonthescreentobedisplayed.Whenthescrollbarwasatitsmaximumvalue,itwouldreturn81,sincebydoingso,lines81-100wouldbedisplayed.
Whenascrollbarisdisabledorthescrollbar'sthumbsizeisgreaterthanthedifferencebetweentheminimumandmaximumvalues(i.e.theitembeingscrolledfitsinthewindow),thescrollbarisdeactivated.Thebarisdrawninwhiteratherthangrayandthearrowsaregrayedout.Thescrollbardoesnotrespondtomouseclicks.
Insomeinstances,youwillwanttheminimumandmaximumvaluesofthescrollbartobereversed(right/topisminimum).Inthatcase,calltheGUI.SetSliderReverseproceduretoflipthevaluesofthescrollbar.
Scrollbarsalwayshaveafixedheight(forhorizontalscrollbars)orwidth(forverticalscrollbars).Togetthescrollbar'swidth,usetheGUI.GetScrollBarWidthfunction.ThelengthparameterintheCreatecallspecifieshowlongthescrollbarshouldbe.
GUI.CreateHorizontalScrollBar
Createsanddisplaysahorizontal(left-right)scrollbar.GUI.CreateHorizontalScrollBarspecifiesthelocation,length,minimumandmaximumvaluesforthescrollbar,theinitialvalueofthescrollbar,andthescrollbar'sactionprocedure.
Bydefault,thearrowincrement(theamountthevalueischangedwhenthescrollingarrowsarepressed)issettoone.Thepageup/downincrement(theamountthevalueischangedwhentheuserclicksin
![Page 998: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/998.jpg)
thebartotherightorleftofthethumb)issettoonequarterthedifferencebetweentheminimumandthemaximum.The"thumbsize"issettozero(seethedescriptionofscrollbarsforanexplanationofthethumbsize).
GUI.CreateVerticalScrollBar
Createsanddisplaysavertical(up-down)scrollbar.GUI.CreateVerticalScrollBarspecifiesthelocation,length,minimumandmaximumvaluesforthescrollbar,theinitialvalueofthescrollbar,andthescrollbar'sactionprocedure.
Bydefault,thearrowincrement(theamountthevalueischangedwhenthescrollingarrowsarepressed)issettoone.Thepageup/downincrement(theamountthevalueischangedwhentheuserclicksinthebartotherightorleftofthethumb)issettoonequarterthedifferencebetweentheminimumandthemaximum.The"thumbsize"issettozero(seethedescriptionofscrollbarsforanexplanationofthethumbsize).
GUI.CreateHorizontalScrollBarFull
Createsanddisplaysahorizontal(left-right)scrollbar.GUI.CreateHorizontalScrollBarFullalsospecifiesthearrowincrement,pageincrement,andthumbsizeforthescrollbar.
GUI.CreateVerticalScrollBarFull
Createsanddisplaysahorizontal(left-right)scrollbar.GUI.CreateVerticalScrollBarFullalsospecifiesthearrowincrement,pageincrementandthumbsizeforthescrollbar.
GUI.EnableGUI.Disable
Enables(disables)ascrollbar.Disabledscrollbarscannotgetevents(i.e.respondto
![Page 999: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/999.jpg)
mouseclicks).GUI.GetSliderValue Returnsthecurrentvalueofascrollbar.
GUI.SetSliderValue
Setsthevalueofascrollbar.Itmovesthecontrolknobonthescrollbartotheappropriatelocationandcallsthescrollbar'sactionprocedurewiththenewvalue.
GUI.SetSliderMinMax
Setstheminimumandmaximumvaluesofascrollbar.Itredrawsthecontrolknobtotakeintoaccountthenewminimumandmaximum.Ifthecurrentvalueofthescrollbarisoutsidethenewmin/max,thenthevalueisadjustedappropriately.
GUI.SetSliderSize
Changesthelengthofascrollbar.Redrawsthescrollbarandchangesthepositionofthecontrolknobtotakeintoaccountthenewsizeofthescrollbar.
GUI.SetSliderReverse
Setsascrollbarinto(oroutof,ifalreadyinto)"reversemode".Normally,ascrollbarisatitsminimumvaluewhenthecontrolknobisontheleftside(bottomforaverticalscrollbar).Thisreversesit,sotheminimumvalueiswhenthescrollbarisattherightside(topforverticalscrollbars)ofthetrack.Callingthisroutineasecondtimereversesitbacktonormal.Thisprocedureredrawsthescrollbartomovethecontrolknobtoitsnewlocation.
GUI.SetScrollAmount
Setsascrollbar'sarrowincrement,pageincrement,andthumbsize.Redrawsthescrollbartotakeintoaccountthenewthumbsize.
![Page 1000: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1000.jpg)
Widgets-Canvases
OutputofCanvases.dem
Acanvasisadrawingsurfaceforusebytheprogram.Itdiffersfromjustusingthewindowsurfacetodrawoninthat(0,0)representsthelower-leftcornerofthecanvasandalldrawingisclippedtothecanvas.(Thismeansthatifyouaccidentallyattempttodrawoutsideofthecanvas,itwillnotactuallydrawbeyondtheborderofthecanvas.)
CanvaseshaveproceduresthatemulatealltheproceduresintheDrawmoduleaswellasaproceduretoemulateFont.Draw,Pic.Draw,Pic.New,Pic.ScreenLoad,andPic.ScreenSave.
Youcangetmousefeedbackfromacanvas.UsingtheGUI.CreateCanvasFullmethod,youcanspecifythreeroutinesthatarecalledwhenthemousebuttonisdepressedwhilepointinginacanvas.Oneroutinewillbecalledwhentheuserpressesthemousebuttondowninacanvas.Anotherroutinewillbecalledwhiletheuserdragsthemousewiththemousebuttondown.Thisroutineisrepeatedlycalledwheneverthemousechangespositionwhilethemousebuttonisdown.Thelastroutineiscalledwhenthemousebuttonisreleased.Allthreeroutines
![Page 1001: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1001.jpg)
takeanxandyparameter,whichisthelocationofthemousewithrespecttothecanvas(i.e.(0,0)isthelower-leftcornerofthecanvas).
GUI.CreateCanvasCreatesanddisplaysacanvas.GUI.CreateCanvasspecifiesthelocationandsizeofthecanvas.Thecanvaswillhavealineborderaroundit.
GUI.CreateCanvasFull
Createsanddisplaysacanvas.GUI.CreateCanvasFullalsospecifiesthetypeofborderandthreeprocedurestobecalledwhenamouseispressed,draggedorreleasedonthecanvas.
GUI.EnableGUI.Disable
Enables(disables)acanvas.Disabledcanvasescannotgetevents(i.e.respondtomouseclicks).Ifnomouseroutineswerespecified(i.e.thecanvaswascreatedwithGUI.CreateCanvasandnotGUI.CreateCanvasFull)thisroutineessentiallydoesnothing.
GUI.DrawArcGUI.DrawBoxGUI.DrawClsGUI.DrawDotGUI.DrawFillGUI.DrawFillArcGUI.DrawFillBoxGUI.DrawFillMapleLeafGUI.DrawFillOvalGUI.DrawFillPolygonGUI.DrawFillStarGUI.DrawLineGUI.DrawBoxGUI.DrawMapleLeafGUI.DrawOvalGUI.DrawPolygonGUI.DrawStarGUI.DrawTextGUI.FontDrawGUI.PicDrawGUI.PicNewGUI.PicScreenLoad
AlltheseroutinesdrawtoacanvasinthesamemannerasthesimilarlynamedDraw�,Pic�andFont.Drawsubprograms.Allcoordinatesarebasedonthecanvasandalldrawingisclippedtothecanvasdrawingsurface.Ifthecanvasisin"xormode",allthedrawingwillbedonewith"xor"set.(SeeView.Setformoreinformationabout"xor".)
![Page 1002: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1002.jpg)
GUI.PicScreenSave
GUI.SetXOR
Setsthe"xormode"ofacanvas.Whenin"xormode",alltheDraw...proceduresofacanvasaretreatedasiftheView.Set("xor")statementhadbeenexecutedbeforetheDrawprocedure.
![Page 1003: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1003.jpg)
Widgets-TextFields
OutputofTextFields.dem
Atextfieldisaboxforenteringonelineoftext.WhentheuserpressesENTER,thetextfield'sactionprocedureiscalled.
Onlyonetextfieldisactiveatatime.Theactivetextfieldhasablinkingcursor(oritsselectionhighlighted).Ifakeystrokeoccurswhenawindowhasanactivetextfieldinit,thekeystrokewillbedirectedtotheactivetextfield.YoucanchangewhichtextfieldisactivewiththeGUI.SetActiveprocedureorbysimplyclickingonanothertextfieldwiththemouse.
Whenmultipletextfieldsarecreatedinawindow,thefirsttextfieldcreatedisactivewhentheprogrambegins.
Thecurrentversionofthetextfielddoesnotsupportcutandpasteorkeyboardcommandstoextendtheselection.
Becausestringsareamaximumof255characters,thisisthemaximumnumberofcharactersinatextfield.
![Page 1004: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1004.jpg)
TheTABcharactercyclesbetweendifferenttextfieldsinawindow.Itcyclesthroughthetextfieldsintheorderinwhichtheywerecreated.BACKTAB(shift+TAB)cyclesthroughthefieldsinreverseorder.
GUI.CreateTextField
Createsanddisplaysatextfield.GUI.CreateTextFieldspecifiesthelocation,width,initialtextstring,andactionprocedureofthetextfield.Theheightofthetextfieldisdeterminedbytheheightofthefontusedbythetextfield.Thetextfieldwillhavealineborderaroundit.
GUI.CreateTextFieldFull
Createsanddisplaysatextfield.GUI.CreateTextFieldFullalsospecifiesthetypeofborder,fontforenteredtext,andkindofinputrestriction(integeronly,etc.)
GUI.EnableGUI.Disable
Enables(disables)atextfield.Disabledpicturebuttonsaregrayedoutandcannotgetevents(i.e.respondtokeystrokesormouseclicks).
GUI.SetText Setsthetextofatextfield.Thecursorissetthebeginningofthetext.
GUI.GetText Returnsthecurrenttextofatextfield.GUI.SetSelection Setstheselection(theselectedtext)inatextfield.GUI.SetActive Makesatextfieldactive.
![Page 1005: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1005.jpg)
Widgets-TextBoxes
OutputofTextBoxes.dem
Atextboxisaboxusedfordisplayinglargerquantitiesoftext.Ithasbothverticalandhorizontalscrollbarstoallowtheusertoscrollthroughallthetextinthebox.
GUI.CreateTextBoxCreatesanddisplaysatextbox.GUI.CreateTextBoxspecifiesthelocationandsizeofthetextbox.Thetextboxwillhavealineborderaroundit.
GUI.CreateTextBoxFullCreatesanddisplaysatextbox.GUI.CreateTextBoxFullalsospecifiesthetypeofborderandthefontfordisplayedtext.
GUI.ClearText Clearsallthetextinatextbox.Addstexttothecurrentlineofthetextbox.Doesnot
![Page 1006: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1006.jpg)
GUI.AddTextaddanewlineafterthetext.Equivalenttoputtext...Thisscrollsthetextbox(ifnecessary)sothattheaddedtextisnowvisible.Tomovethecursortotheendofthetextwithoutaddinganyextratext,callGUI.AddTextwith""forthetextparameter.
GUI.AddLineAddstexttothecurrentlineofthetextboxfollowedbyanewline.Equivalenttoputtext.Thisscrollsthetextbox(ifnecessary)sothattheaddedtextisnowvisible.
![Page 1007: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1007.jpg)
Widgets-Lines
OutputofLines.dem
LinesareorganizationalelementsthatmakethewindowlookbetterandhelporganizetheGUIelements.
GUI.CreateLineCreatesanddisplaysaline.GUI.CreateLinespecifiestheendpointsoftheline(whichmustbeeitherverticalorhorizontal)andthetypeofline.
![Page 1008: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1008.jpg)
Widgets-Frames
OutputofFrames.dem
FramesareorganizationalelementsthatmakethewindowlookbetterandhelporganizetheGUIelements.Framesandlabelledframesaretheonlywidgetsinwhichotherwidgetscanbeplaced.
GUI.CreateFrameCreatesanddisplaysaframe.GUI.CreateFramespecifiesthecoordinatesofthelower-leftandupper-rightcorneroftheframeandthetypeofborderoftheframe.
![Page 1009: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1009.jpg)
Widgets-LabelledFrames
OutputofLabelledFrames.dem
LabelledframesareorganizationalelementsthatmakethewindowlookbetterandhelporganizetheGUIelements.Framesandlabelledframesaretheonlywidgetsinwhichotherwidgetscanbeplaced.
GUI.CreateLabelledFrame
Createsanddisplaysalabelledframe.GUI.CreateLabelledFramespecifiesthecoordinatesofthelower-leftandupper-rightcorneroftheframe,thetypeofborderoftheframe,andthetextoftheframe'slabel.
GUI.SetLabel Changesthetextofalabelledframe.
![Page 1010: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1010.jpg)
Widgets-Labels
OutputofLabels.dem
LabelsareorganizationalelementsthatmakethewindowlookbetterandhelporganizetheGUIelements.Theyaresimplytextplacedinawindow.Toaidinaligningtextwithvariouswidgets,itispossibletoaligntextinalargerregion(asshowninthefigure).
GUI.CreateLabelCreatesanddisplaysalabel.GUI.CreateLabelspecifiesthelower-leftcornerofthetextandthetextitself.Thesystemfontisusedtodisplaythelabel.
GUI.CreateLabelFull
Createsanddisplaysalabel.GUI.CreateLabelFullalsospecifiesthewidth,height,alignment,andfontforthelabel.Thewidthandheightarespecifiedforalignment
![Page 1011: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1011.jpg)
purposes.GUI.SetLabel Changesthetextofalabel.
![Page 1012: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1012.jpg)
Widgets-Pictures
OutputofPictures.dem
PicturesareorganizationalelementsthatmakethewindowlookbetterandhelporganizetheGUIelements.Theyaresimplyapictureplacedinawindow.ThepicturesarespecifiedusingapictureIDfromanyofthePic�subprograms.
GUI.CreatePictureCreatesanddisplaysapicture.GUI.CreatePicturespecifiesthelocation,pictureID,andwhetherthepictureshouldbemergedwiththebackground.
![Page 1013: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1013.jpg)
Widgets-Menus
OutputofMenus.dem
Menusareusedinmostmoderninterfaces.Inordertocreateafullsetofmenus,youmustcreatethemenuandthencreatethemenuitemsinthatmenu.Themenusareautomaticallyaddedtothemenubaroftheselectedmenu.
Menuitemsaretheindividualentriesofamenu.Tocreatemenusforawindow,youmustcreateamenu,thencreatethemenuitemsforthatmenu,thencreatethenextmenu,thentheitemsforthatmenu,etc.Allmenuitemsareautomaticallyaddedtothelastmenuandafterthelastmenuitemofthecurrentlyselected(notactive!)window.
Whenyouselectaniteminamenu,theactionprocedureoftheitemiscalled.Theactionprocedurehasnoparameters.
Asofthev1.0releaseoftheGUILibrary,itisanerrortocreateamenuitemwithouthavingcreatedamenufirst.Infuturereleasesitwillbepossibletocreatemenusandattachandremovethemfrommenubarswhendesired.
![Page 1014: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1014.jpg)
Menusandmenuitemscanbeenabledanddisabled.Adisabledmenuitemisgrayedout.Whentheuserselectsthemenu,allitemsinthemenuappeardisabledandcannotbeselected.Adisabledmenuitemisgrayedoutwhenthemenuisdisplayed.Theusercannotselectthemenuitem.
Separatorsinamenuappearasasolidlineacrossthemenu.Thesearecreatedbycreatingamenuitemwhosetextisthreedashes"---".
GUI.CreateMenu
Createsanddisplaysamenu.Themenuwillbeaddedaftertheothermenusinthemenubar.Iftherearenopreviousmenus,thenamenubarisautomaticallycreatedandthemenuadded.GUI.CreateMenuspecifiesthetextthatwillappearinthemenubar.Itissuggestedthatthetextnothaveanyspacesinit.
GUI.EnableGUI.Disable
Enables(disables)amenu.Disabledmenusaregrayedoutinthemenubar.Ifselected,allthemenuitemsinthemenubarappeardisabledandcannotbeselected.
GUI.CreateMenuItem
Createsamenuitem.GUI.CreateMenuItemspecifiesthetextofthemenuitemandtheactionproceduretobecalledwhenthemenuitemisselected.Themenuitemwillbeaddedtothelastmenuaftertheothermenuitemsinthemenu.Iftherearenomenusdefined,anerrorresults.
GUI.CreateMenuItemFull Createsamenuitem.GUI.CreateMenuItemFullalsospecifiesashortcutkeystroke.
GUI.EnableGUI.Disable
Enables(disables)amenuitem.Disabledmenuitemsaregrayedoutwhenthemenuisdisplayedandcannotbeselectedbytheuser.
![Page 1015: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1015.jpg)
Widgets-GeneralRoutines
ThefollowingproceduresareincludedintheGUImodulebutdonotrelatetoaspecificwidget.
GUI.ProcessEvent
Thisfunctionprocessesasingleevent(amousebuttonpressorakeystroke).Iftheeventactivatesawidget,thentheactionprocedureofthewidgetiscalled.Tofindoutwhichwidgetwasactivatedandcalledtheactionprocedure(necessaryifseveralwidgetshavethesameactionprocedure),youcancallGUI.GetEventWidgetID.Togettheexacttimethattheeventoccurred,youcancallGUI.GetEventTime.Togetthewindowinwhichtheeventtookplace,youcancallGUI.GetEventWindow.Ifamouseclickoccurred,butdidnotactivateanywidget,thenthedefaultmouseeventhandleriscalled.Bydefault,thisdoesnothing.However,ifyouwantyourprogramtorespondtomouseeventsthatdonotaffectawidget,callGUI.SetMouseEventHandlertospecifyyourowndefaultmouseeventhandler.Ifakeystrokeoccurred,butdidnotactivateanywidget(i.e.itwasn'tashortcutforawidgetandtherearenotextfieldsinthewindow)thenthedefaultkeystrokehandleriscalled.Bydefault,thisdoesnothing.However,ifyouwantyourprogramtorespondtokeystrokeeventsthatdonotaffectawidget,callGUI.SetKeyEventHandlertospecifyyourowndefaultkeyeventhandler.Ifnoeventoccurred,thenthenulleventhandleriscalled.Bydefault,thisdoesnothing.However,ifyouwantyourprogramtoperformsomeactionrepetitivelywhenitisnotdoinganythingelse,thencallGUI.SetNullEventHandlertospecifyyourownnulleventhandler.Thenullevent
![Page 1016: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1016.jpg)
handlerisoftenusedforsuchthingsasupdatingaclockandmakingcertainthatmusicisplayinginthebackground.
GUI.Quit
ThisprocedurecausesGUI.ProcessEventtoreturntrue.Iftheprogramisstructuredproperlywitha
loop
exitwhenGUI.ProcessEvent
endloop
attheendoftheprogram,thentheprogramwillexittheloopafterfinishingthecurrentactionprocedure.ThisprocedureisusuallycalledfromtheactionprocedureofaQuitbuttonorExitmenuitem.
GUI.Refresh
Thisroutineredrawsallthewidgetsinthecurrently-selectedwindow.Thisisusedwhensomeformofdrawingmayhaveoverwrittenthewidgetsinawindow.ItisusedbytheGUILibrarytoredrawallthewidgetswhenthebackgroundcolorofawindowhaschanged.
GUI.SetBackgroundColorGUI.SetBackgroundColour
Changesthebackgroundcolorofthecurrently-selectedwindow.(Bothspellingsofcolorareacceptable.)Thisdoesnotchangethevalueofcolor0inthewindow.Insteaditfillstheentirewindowwiththenewbackgroundcolorandthenredrawsallthewidgets.Theusualbackgroundcoloroutsideofwhiteisgray.
GUI.SetNullEventHandler
Setsthenewnulleventhandler.ThespecifiedprocedurewillbecalledeverytimeGUI.ProcessEventiscalledandthereisnokeystrokeormousebuttonpressed.
GUI.SetMouseEventHandler
Setsthenewdefaultmouseeventhandler.ThespecifiedprocedurewillbecalledeverytimeGUI.ProcessEventiscalledandthereisamousebuttonpressedwhichisnothandledbyanywidget.
![Page 1017: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1017.jpg)
GUI.SetKeyEventHandler
Setsthenewdefaultkeystrokeeventhandler.ThespecifiedprocedurewillbecalledeverytimeGUI.ProcessEventiscalledandthereisakeystrokewhichisnothandledbyanywidget.
GUI.HideMenuBar
Hidesthemenubarintheselectedwindow.Nomenuitemscanbeselectedwhenthemenubarishidden.(Menuitemshortcutswillbeignoredwhenthemenubarishidden.)
GUI.ShowMenuBar Showsthemenubarintheselectedwindow.
GUI.GetEventWidgetID
ReturnsthewidgetIDofthewidgetthatwasactivatedbythemousebuttonpressorthekeystroke.Thisfunctionshouldonlybecalledinanactionprocedure,asitwillreturn-1whenthereisnoeventthatactivatedawidgetbeingprocessed.
GUI.GetEventWindow
ReturnsthewindowIDofthewindowinwhichtheevent(mousebuttonorkeystroke)tookplace.Thisfunctionshouldonlybecalledinanactionprocedureorinadefaultmouseorkeystrokeeventhandler,asitwillreturn-1whenthereisnoeventbeingprocessed.
GUI.GetEventTime
Returnsthetimeinmillisecondswhentheevent(mousebuttonorkeystroke)tookplace.ThisvalueisthesamevaluethatTime.Elapsedreturnsifcalledwhentheeventwasprocessed.Thisfunctionshouldonlybecalledinanactionprocedureorinadefaultmouseorkeystrokeornulleventhandler,asitwillreturn-1whenthereisnoeventbeingprocessed.
GUI.SetDisplayWhenCreated
Setswhetherwidgetsareautomaticallydisplayedwhencreated,orwhetherGUI.Showmustbecalledfirst.Bydefault,thisissettotrue(widgetsaredisplayedwhencreated).However,theremaybetimeswhenyouwanttocreateawidgetandthenmakeseveraladditionalcallsbeforedisplayingthewidget.Closesawindowwithwidgetsinit.This
![Page 1018: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1018.jpg)
GUI.CloseWindow
procedureautomaticallydisposesofanywidgetsinthewindowandmakescertainthattheGUILibraryrecognizesthatthewindownolongerexists.ThisprocedurewillcallWindow.Close,sothereisnoneedfortheusertodoso.
GUI.ShowWindow
Showsahiddenwindowwithwidgetsinit.ThisproceduremakescertainthattheGUILibraryrecognizesthatthewindowisvisible.ThisprocedurewillcallWindow.Show,sothereisnoneedfortheusertodoso.
GUI.HideWindow
Hidesavisiblewindowwithwidgetsinit.ThisproceduremakescertainthattheGUILibraryrecognizesthatthewindowisnolongervisible.ThisprocedurewillcallWindow.Hide,sothereisnoneedfortheusertodoso.
GUI.GetScrollBarWidthReturnsthewidthofascrollbar.Usefulwhenplacingascrollbarwidgetbeneathanotherobject.
GUI.GetMenuBarHeightReturnstheheightofthemenubar.Usefulwhenplacingwidgetstomakecertainthattheydonotoverlapthemenu.
GUI.GetVersion
ReturnsthecurrentversionoftheGUImodule.BecausetheGUImoduleisexpectedtogrow,newversionswillprobablybemadeavailableatHoltSoftware'swebsitelocatedathttp://www.holtsoft.com/turing.Ifyouwishtousefeaturesthatdonotappearinearlierversionsofthelibrary,youcanhaveyourprogramcheckthatthecurrentavailableversionmeetstheprogramsneeds.GUI.GetVersionreturnsanintegerfrom100-999andisreadas1.00to9.99.
![Page 1019: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1019.jpg)
PredefinedFunctionsandProceduresabs addr arctan arctand anyclassbreak buttonchoose buttonmoved buttonwait ceilchr clock cls color colorbackcolour colourback cos cosd datedelay drawarc drawbox drawdot drawfilldrawfillarc drawfillbox drawfillmapleleaf drawfilloval drawfillpolygondrawfillstar drawline drawmapleleaf drawoval drawpicdrawpolygon drawstar empty eof erealstrexp fetcharg floor frealstr getchgetchar getenv getpid getpriority haschindex intreal intstr length lnlocate locatexy lower max maxcolmaxcolor maxcolour maxint maxnat maxrowmaxx maxy min minint minnatmousehide mouseshow mousewhere nargs natrealnatstr nil ord palette playplaydone pred rand randint randnextrandomize randseed realstr repeat roundsetpriority setscreen sign simutime sinsind sizeof sizepic sound sqrtstrint strintok strnat strnatok strrealstrrealok succ sysclock sysexit systemtakepic time upper wallclock whatcolwhatcolor whatcolorback whatcolour whatcolourback whatdotcolorwhatdotcolour whatpalette whatrow whattextchar whattextcolorwhattextcolorback whattextcolour whattextcolourback
![Page 1020: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1020.jpg)
PredefinedModulesBrush Button CheckBox Comm ConcurrencyConfig Dir Draw DropBox EditBoxError ErrorNum Event File FontGUI Input Joytick Keyboard LimitsListBox Math Menu Mouse MusicNet Obsolete PC Pen PicPrint RadioButton Rand RGB SoundSprite Str Stream Student SysText Time TypeConv Video ViewWindow
![Page 1021: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1021.jpg)
PredefinedOOTConstants(...meansseveralconstantswiththeprefix,seethemoduleforacompletelist)
black blue brightblue brightcyanbrightmagenta brightpurple brightred brightwhitebrushErrorBase cdMaxNumColors cdMaxNumColours cdMaxNumPagescdScreenWidth clLanguageVersion clMaxNumDirStreams clMaxNumRunTimeArgsclRelease cmFPU cmOS cmProcessorcolourbg colorfg colourfg configErrorBasedarkgray darkgrey defFontID defWinIDe...(ErrorNum) errWinID excp...(Exceptions) fileErrorBasefontErrorBase fsysErrorBase generalErrorBase graygrey guiErrorBase joystick1 joystick2magenta mouseErrorBase musicErrorBase ootAttr...(File)penErrorBase pic...(Pic) picXorplaceCenterDisplay placeCentreWindow printerErrorBase purplered rgbErrorBase spriteErrorBase streamErrorBasetimeErrorBase unixSignalToException viewErrorBase whiteyellow
![Page 1022: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1022.jpg)
Keywordsaddressint all and array asmassert begin bind bits bodyboolean break by case charcheat checked class close collectioncondition const decreasing def deferreddiv else elseif elsif endendfor endif endloop enum exitexport external false fcn flexiblefor fork forward free functionget handler if implement importin include inherit init intint1 int2 int4 invariant labelloop mod module monitor natnat1 nat2 nat4 new notobjectclass of opaque open orpacked pause pervasive pointer postpre priority proc procedure processput quit read real real4real8 record register rem resultreturn seek self set shlshr signal skip string tagtell then timeout to truetype unchecked union unqualified varwait when write xor
![Page 1023: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1023.jpg)
OperatorsMathematicalOperators
Operator Operation ResultTypePrefix+ Identity AsOperandsPrefix- Negative AsOperands+ Addition AsOperands- Subtraction AsOperands* Multiplication AsOperands/ Division AsOperandsdiv IntegerDivision intmod Modulo intrem Remainder int** Exponentiation AsOperands< LessThan boolean> GreaterThan boolean= Equals boolean<= LessThanorEqual boolean>= GreaterThanorEqual booleannot= NotEqual boolean
![Page 1024: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1024.jpg)
BooleanOperators
Operator Operation ResultTypePrefixnot Negation booleanand And booleanor Or booleanxor ExclusiveOr boolean=> Implication boolean
![Page 1025: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1025.jpg)
SetOperators
Operator Operation ResultType+ Union set- SetSubtraction set* Intersection set= Equality booleannot= Inequality boolean<= Subset boolean< Strict(Proper)Subset boolean>= Superset boolean> Strict(Proper)Superset boolean
![Page 1026: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1026.jpg)
OperatorsonMembersandSets
Operator Operation ResultTypein MemberofSet booleannotin NotMemberofSet booleanxor ExclusiveOr set
![Page 1027: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1027.jpg)
BitManipulationOperators
Operator Operation ResultTypeshl Shiftleft natshr Shiftright natand Bit-wiseAnd nator Bit-wiseOr natxor Bit-wiseExclusiveOr nat
![Page 1028: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1028.jpg)
PointerOperators
Operator Operation ResultType^ Followpointer Targettype
![Page 1029: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1029.jpg)
TypeCheats
Operator Operation ResultType# Typecheat nat
![Page 1030: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1030.jpg)
OperatorShortForms
Thesecanbeusedinplaceoftheabovenotation.not ~not= ~=notin ~inand &or |
![Page 1031: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1031.jpg)
OperatorPrecedence
Highestprecedenceoperatorsfirst.
1. **,^,#2. prefix+and-3. *,/,div,mod,rem,shl,shr4. +,-,xor5. <,>,=,<=,>=,not=,in,notin6. not7. and8. or9. =>
![Page 1032: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1032.jpg)
FileStatementsFileCommands
open openafile close closeafile put writealphanumerictexttoafile get readalphanumerictextfromafile write binarywritetoafile read binaryreadfromafile seek movetoaspecifiedpositioninafile tell reportthecurrentfileposition eof checkforendoffile
![Page 1033: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1033.jpg)
FileCommandSyntaxopen:streamNo,fileName,ioCapability{,ioCapability}
ioCapabilityisoneofget,put,read,write,seek,mod
putorwritecapabilitywillcauseanyexistingfiletobetruncatedtozerolengthunlessthemodcapabilityisalsospecified.
seekcapabilityisneededtouseseekortellcommands.
close:streamNo
get:streamNo,getItem{,getItem}
put:streamNo,putItem{,putItem}
read:streamNo[:fileStatus],readItem{,readItem}
write:streamNo[:fileStatus],writeItem{,writeItem}
seek:streamNo,filePositionorseek:streamNo,*
tell:streamNo,filePositionVar
eof(streamNo):boolean(Thisisafunction)
![Page 1034: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1034.jpg)
AppendingtoaTextFile%Openthefileforput,butdonoteraseit
open:streamNo,fileName,put{,get},mod
%Movethefilepointertotheendofthefile
seek:streamNo,*
![Page 1035: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1035.jpg)
ControlConstructs
![Page 1036: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1036.jpg)
FOR
for[decreasing]variable:startValue..endValue...statements...exitwhenexpn...statements...
endfor
![Page 1037: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1037.jpg)
LOOP
loop...statements...exitwhenexpn...statements...
endloop
![Page 1038: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1038.jpg)
IF
ifconditionthen...statements...{elsifconditionthen...statements...}[else...statements...]
endif
![Page 1039: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1039.jpg)
CASE
caseexpnof...statements...{labelexpn{,expn...statements...}[label:...statements...]
endcase
Anynumberofexitandexitwhenstatementscanappearatanyplaceinsidefor..endforconstructsandloop..endloopconstructs.
![Page 1040: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1040.jpg)
KeyCodesOrdinalvaluesofkeystrokesreturnedbygetchandgetchar.
0
(space) 32
@ 64
` 96Ctrl-A 1 ! 33 A 65 a 97Ctrl-B 2 " 34 B 66 b 98Ctrl-C 3 # 35 C 67 c 99Ctrl-D 4 $ 36 D 68 d 100Ctrl-E 5 % 37 E 69 e 101Ctrl-F 6 & 38 F 70 f 102Ctrl-G 7 ' 39 G 71 g 103
Ctrl-H/BS 8 ( 40 H 72 h 104Ctrl-I/Tab 9 ) 41 I 73 i 105Ctrl-J/Enter 10 * 42 J 74 j 106
Ctrl-K 11 + 43 K 75 k 107Ctrl-L 12 , 44 L 76 l 108Ctrl-M 13 - 45 M 77 m 109Ctrl-N 14 . 46 N 78 n 110Ctrl-O 15 / 47 O 79 o 111Ctrl-P 16 0 48 P 80 p 112Ctrl-Q 17 1 49 Q 81 q 113Ctrl-R 18 2 50 R 82 r 114Ctrl-S 19 3 51 S 83 s 115Ctrl-T 20 4 52 T 84 t 116Ctrl-U 21 5 53 U 85 u 117Ctrl-V 22 6 54 V 86 v 118Ctrl-W 23 7 55 W 87 w 119
![Page 1041: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1041.jpg)
Ctrl-X 24 8 56 X 88 x 120Ctrl-Y 25 9 57 Y 89 y 121Ctrl-Z 26 : 58 Z 90 z 122
Ctrl-[/Esc 27 ; 59 [ 91 { 123Ctrl-\ 28 < 60 \ 92 | 124Ctrl-] 29 = 61 ] 93 } 125Ctrl-^ 30 > 62 ^ 94 ~ 126Ctrl-_ 31 ? 63 _ 95 Ctrl-BS 127
Alt-9 128
Alt-D 160
F6 192
Ctrl-F3 224Alt-0 129 Alt-F 161 F7 193 Ctrl-F4 225Alt-- 130 Alt-G 162 F8 194 Ctrl-F5 226Alt-= 131 Alt-H 163 F9 195 Ctrl-F6 227
Ctrl-PgUp 132 Alt-J 164 F10 196 Ctrl-F7 228F11 133 Alt-K 165 197 Ctrl-F8 229F12 134 Alt-L 166 198 Ctrl-F9 230
Shift-F11 135 167 Home 199 Ctrl-F10 231Shift-F12 136 168 UpArrow 200 Alt-F1 232Ctrl-F11 137 169 PgUp 201 Alt-F2 233Ctrl-F12 138 170 202 Alt-F3 234
Alt-F11 139 171 LeftArrow 203 Alt-F4 235
Alt-F12 140 Alt-Z 172 204 Alt-F5 236
Ctrl-UpArrow 141 Alt-X 173 RightArrow 205 Alt-F6 237
142 Alt-C 174 206 Alt-F7 238BackTab 143 Alt-V 175 End 207 Alt-F8 239
Alt-Q 144 Alt-B 176 DownArrow 208 Alt-F9 240
Ctrl-DownArrow 145 Alt-N 177 PgDn 209 Alt-F10 241
Ctrl-Insert 146 Alt-M 178 Insert 210 242
![Page 1042: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1042.jpg)
Ctrl-Delete 147 179 Delete 211 Ctrl-LeftArrow 243
Alt-T 148 180 Shift-F1 212 Ctrl-RightArrow 244
Alt-Y 149 181 Shift-F2 213 Ctrl-End 245Alt-U 150 182 Shift-F3 214 Ctrl-PgDn 246Alt-I 151 183 Shift-F4 215 Ctrl-Home 247Alt-O 152 184 Shift-F5 216 Alt-1 248Alt-P 153 185 Shift-F6 217 Alt-2 249 154 186 Shift-F7 218 Alt-3 250 155 F1 187 Shift-F8 219 Alt-4 251 156 F2 188 Shift-F9 220 Alt-5 252 157 F3 189 Shift-F10 221 Alt-6 253
Alt-A 158 F4 190 Ctrl-F1 222 Alt-7 254Alt-S 159 F5 191 Ctrl-F2 223 Alt-8 225
![Page 1043: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1043.jpg)
OrdinalvaluesofcharactersthataresetbyInput.KeyDown.
Backspace 8
(space) 32
@ 64
` 96Tab 9 ! 33 A 65 a 97Enter 10 ! 34 B 66 b 98Escape 27 # 35 C 67 c 99
$ 36 D 68 d 100F11 133 % 37 E 69 e 101F12 134 & 38 F 70 f 102Shift 180 ' 39 G 71 g 103Control 181 ( 40 H 72 h 104Alt 182 ) 41 I 73 i 105
Keypad5 183 * 42 J 74 j 106F1 187 + 43 K 75 k 107F2 188 , 44 L 76 l 108F3 189 - 45 M 77 m 109F4 190 . 46 N 78 n 110F5 191 / 47 O 79 o 111F6 192 0 48 P 80 p 112F7 193 1 49 Q 81 q 113F8 194 2 50 R 82 r 114F9 195 3 51 S 83 s 115F10 196 4 52 T 84 t 116
5 53 U 85 u 117Home 199 6 54 V 86 v 118
UpArrow 200 7 55 W 87 w 119PgUp 201 8 56 X 88 x 120
LeftArrow 203 9 57 Y 89 y 121RightArrow 205 : 58 Z 90 z 122
![Page 1044: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1044.jpg)
End 207 ; 59 [ 91 { 123DownArrow 208 < 60 \ 92 | 124
PgDn 209 = 61 ] 93 } 125Insert 210 > 62 ^ 94 ~ 126Delete 211 ? 63 _ 95
![Page 1045: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1045.jpg)
RunWindowCharacterSetTheTuringcharactersetandtheirASCIIvalues
chr(8)=backspacechr(9)=tabchar(10)=newline
Youcanalsoget(onmostsystems),theMS-DOScharactersetbyusingthecommandsetscreen("msdos").Thisisthecharactersetafterthesetscreen("msdos")commandwasgiven.
![Page 1046: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1046.jpg)
ClickthebuttontolaunchtheprogramtodisplaythecharactersetinTuring.
![Page 1047: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1047.jpg)
TuringTeacher/AdministratorQuickStartGuideThisguideisdesignedtobetheminimalinformationthatyoushouldreadifyouareteachingcoursesusingTuring4.0orareinchargeofadministeringTuring4.0
ThisguideprovidesinformationontheTuringenvironment(theeditor,therunwindows,etc.)ItdoesnotprovideanyinformationontheTuringprogramminglanguageitself.
Note,ifyouhaveanyquestionsnotansweredhere,pleasecheckwiththeTuringTeacher/Administrator'sCompleteGuideformoreinformation.
![Page 1048: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1048.jpg)
TableofContents
1. MakingCertainYouHavetheLastestVersion2. MandatoryAdministrationIssues3. UsingtheParallelPortsinTuring44. StudentDistribution5. TechnicalSupport
![Page 1049: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1049.jpg)
1.MakingCertainYouHavetheLastestVersion
Turing4.0isupdatedregularly.Tofindoutwhatversionyouarecurrentlyrunning,clicktheAboutTuringmenuitemintheHelpmenu.TofindoutthecurrentversionofTuring,gotohttp://www.holtsoft.com/turing/support/#currentversion.Thisliststhecurrentversionofthesoftware.
Thispagealsolistswhichbugshavebeenfixedandwhennewfeatureshavebeenadded.Thepagealsocontainsasection(http://www.holtsoft.com/turing/support/#turing4patches)whereafilecanbedownloadedthatwillupdatemostversionsofTuringtothelatestversion.
Ifyouareateacheroranadministratorataschoolandrequireacompleteinstallationfile(asopposedtothepublicallyavailablepatch),contactTomWestat(416)978-8363.
![Page 1050: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1050.jpg)
2.MandatoryAdministrationIssues
Turing4.0hasbeendesignedtorunoneitheranetworkorinstalledonindividualstand-alonemachines.Runningonanetworkisoftenpreferredbecauseofeaseofadministration.However,Turing,likeanyotherapplicationwillloadsomewhatfasterwhenitislaunchedifitisstoredlocally.
ThereareonlytwoadministrationissuesthatmustbeaddressedtoconfigureTuringproperly.
1. Setthestart-in(oftencalledthe"working")directoryproperly.
Itisimportantthatthestart-indirectoryforTuringbesettothestudent'shomedirectory.Thisisdonebysettingthestart-in(orworking)directoryoftheshortcutormenuitemusedtolaunchTuringtothedrivemappedtothestudent'shomedirectory.
Theshortcut'sworkingdirectorycanbemodifiedbychangingit'sstart-inorworkingdirectoryproperty.(TodisplaythePropertiesdialogbox,rightclickontheshortcutormenuitemandselectPropertiesfromthepop-upmenu.)
![Page 1051: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1051.jpg)
PropertiesforaShortcutunderWindows2000
Thisrequiresthatyouhavewriteaccesstotheshortcut.Notethatcommercialmenufront-endshavetheirownwayofsettingthestart-indirectoryofapplications.
Ifthereisnodrivemappedtothestudent'shomedirectory,orthismethodisnotapplicabletoyoursystemsetup,pleasecheckwiththeTuringTeacher/Administrator'sCompleteGuideformoreinformation.
2. SeteitherBeginnerorRegularModeforStudents.
TuringcanbesettoBeginnermode,inwhichcaseonlyonefileisopenatatime.Openingupanotherfileclosesthefirstone.Whentheprogramisrunning,theEditorwindowminimizes.Inthisway,onlyonewindowisusuallyvisibleatatime.Inthisfashion,BeginnermodeissimilartotheoldDOSTuring.
InRegularmode,anynumberoffilescanbeopenedandeachappearsinitsowneditorwindow.
![Page 1052: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1052.jpg)
Ingeneral,wesuggestBeginnermodeforgrade9and10andRegularmodeforallothers.IfyouareusingBeginnermode,wesuggestthatyoupointouttothestudentsthattheycanusethePrefencestochangetoRegularmodewhentheyfeelcomfortablewiththeenvironment.
Tochangethemode(ortomakeanyotherchangetothesystempreferences),youmustopenaDOSwindow,cdtothedirectoryinwhichtheTuringexecutable(turing.exe)islocatedandissuethecommand:
turing-admin
ThiswillcauseTuringtostartinAdministratormode,displayingthefollowingdialogbox:
AdministrationModeNotification
SelectingPreferencesfromtheFilemenuwilldisplayatabbeddialogboxofalltheTuringpreferences.
![Page 1053: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1053.jpg)
PreferencesinAdministratorMode
Set(orunset)theBeginnerModepreference,clicktheOKbuttonandquitTuring.Ofcourse,youcanchangeanyotherpreferencesthatyouwouldlike.AnychangesthatyoumakeherewillaffectallthoseusingTuring.
![Page 1054: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1054.jpg)
3.UsingtheParallelPortsinTuring4
Turing4.0supportstheparallelputandparallelgetcommandstoallowyoutosetthepinsontheparallelportlowandhigh.IfyouarerunningunderWindowsNT,2000orXP,youwillneedtoinstalladevicedriveroneachmachine.Instructionsfordoingsocanbefoundhere.Ifparallelputandparallelgetdonotseemtofunction,youmayneedtochangetheirBIOSsettings.Youcangetinformationonhowtodothathere.
![Page 1055: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1055.jpg)
4.StudentDistributionofTuring4.0
TheOntarioMinistrylicensedoesnotincludetherighttoredistributethesoftwaretostudents.Ifyouwishtogivethesoftwaretostudents,aseparatelicensemustbeobtaineddirectlyfromHoltSoftware.
Ifyourschooldoesnothavesuchalicense,studentscanpurchasethesoftwareforhomeusebyprintingandthenmailinganorderformfoundhttp://www.holtsoft.com/studentbuy.Thisorderformcanalsobeusedtoallowinterestedstudentstopurchasetextbooks.
Ifyourschoolhaspurchasedaredistributionlicense(almost200schoolshavedoneso),thenyoumayredistributetheTuringsoftwaretoyourstudents.YoucaneitherburncopiesoftheCDtodistributetostudentsorplacetheTuringinstallerfileontoyourschoolInternetserverandgiveyourstudentstheURL.
Ifyouplacethisfileonyourschoolinternetserver,youmustnotmakeanylinksfromyourwebpagestothesoftware.
Thiswillpreventotherusersofthewebfromdownloadingyoursoftware.Ifyouplacelinksfromyourschool'swebsite,thenatsomepointawebsearchenginewillfindthesoftwareandpostitslocationtotheinternetatlarge,allowingforlargescalepiracy(andaveryoverloadedschoolwebserver).Iftherearenolinkstothesoftware,thenonlythosewhohavebeentoldtheexactURLwillbeabletodownloadthesoftware.
NotethatifyouarecopyinganumberofdifferentprogramsontoasingleCDforredistribution,youmayrenametheTuringinstallerprogramtosomethingmoredescriptive.
Permanentstudentredistributionlicensescanbepurchasedfor$500-$750formostschools.Ifyouareinterestedinpurchasingastudentredistributionlicense,contactChrisStephensonat(416)[email protected]
![Page 1056: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1056.jpg)
5.TechnicalSupport
Ifyouhaveproblems,questionsorsuggestionsabouttheTuringsoftware,contacttechnicalsupportat:Telephone: (416)978-8363Tollfree: 1-800-361-8324Fax: (416)978-1509E-mail: [email protected]
![Page 1057: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1057.jpg)
TuringTeacher/AdministratorGuideThisistheTuringTeacher/Administratorguide.ItcontainsmostoftheinformationthatyouwillneedtoadministertheTuring4.0software.ItshouldbereadbythosewhoareteachingcoursesusingTuring4.0orareinchargeofadministeringTuring4.0
ThisguideprovidesinformationontheTuringenvironment(theeditor,therunwindows,etc.)ItdoesnotprovideanyinformationontheTuringprogramminglanguageitself.
NotethatthereissomeoverlapwiththeTuringTeacher/AdministratorQuickStartGuide.
![Page 1058: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1058.jpg)
TableofContents
1. MakingCertainYouHavetheLastestVersion2. MandatoryAdministrationIssues3. ChangingSystemPreferences4. TuringPreferences5. ParallelPortandTuring46. MissingFeaturesfromTuring47. TheTuringDebugger8. StudentDistribution9. TechnicalSupport
![Page 1059: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1059.jpg)
1.MakingCertainYouHavetheLastestVersion
Turing4.0isupdatedregularly.Tofindoutwhatversionyouarecurrentlyrunning,clicktheAboutTuringmenuitemintheHelpmenu.TofindoutthecurrentversionofTuring,gotohttp://www.holtsoft.com/turing/support/#currentversion.Thisliststhecurrentversionofthesoftware.
Thispagealsolistswhichbugshavebeenfixedandwhennewfeatureshavebeenadded.Thepagealsocontainsasection(http://www.holtsoft.com/turing/support/#turing4patches)whereafilecanbedownloadedthatwillupdatemostversionsofTuringtothelatestversion.
Ifyouareateacheroranadministratorataschoolandrequireacompleteinstallationfile(asopposedtothepublicallyavailablepatch),contactTomWestat(416)978-8363.
![Page 1060: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1060.jpg)
2.MandatoryAdministrationIssues
Turing4.0hasbeendesignedtorunoneitheranetworkorinstalledonindividualstand-alonemachines.Runningonanetworkisoftenpreferredbecauseofeachofinstallation,however,Turingwillloadsomewhatfasterwhenitislaunchedifitisstoredlocally.
Turing4.0hasbeendesignedtorunoneitheranetworkorinstalledonindividualstand-alonemachines.Runningonanetworkisoftenpreferredbecauseofeaseofadministration.However,Turing,likeanyotherapplicationwillloadsomewhatfasterwhenitislaunchedifitisstoredlocally.
ThereareafewadministrationissuesthatmustbeaddressedtoconfigureTuringproperly.
1. Setthestart-in(oftencalledthe"working")directoryproperly.
Itisimportantthatthestart-indirectoryforTuringbesettothestudent'shomedirectory.Thiscanbedoneinavarietyofways,fromleasttomostcomplicated.
1. Manyschoolshavethestudent'shomedirectorymappedtoadrive(oftenH:\).Ifthisisthecase,thensetthestart-in(orworking)directoryoftheshortcutormenuitemusedtolaunchTuringtothemappeddrive.
Theshortcut'sworkingdirectorycanbemodifiedbychangingit'sstart-inorworkingdirectoryproperty.(TodisplaythePropertiesdialogbox,rightclickontheshortcutormenuitemandselectPropertiesfromthepop-upmenu.)
![Page 1061: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1061.jpg)
PropertiesforaShortcutunderWindows2000
Thisrequireschangingtheshortcut'spropertiesrequireswriteaccesstotheshortcut.Notethatcommercialmenufront-endshavetheirownwayofsettingthestart-indirectoryofapplications.
2. Ifthe"MyDocuments"folderismappedtothestudentshomedirectory,youcansetthepreferencestomakeTuringusethe"MyDocuments"folderasthestart-infolder.Notethatthisoptionisthepreferredoptionforhomeusers,wherethe"MyDocuments"folderisthehomedirectory.
TheUse"MyDocuments"FolderintheAdminPane
![Page 1062: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1062.jpg)
Tochangethepreference,enterAdministratormode(seeChangingSystemPreferencesbelow)andsettheUse"MyDocuments"FoldercheckboxintheAdminpaneoftheTuringPreferences(seeTuringPreferencesbelow).
3. Ifeachstudent'shomedirectoryisspecifieddifferently(i.e.thereisnomappingofthehomedirectorytoadrive),thenyoumayneedtouseenvironmentvariablestocreateauseablepath.Forexample,ifstudentsfilesarestoreding:\class108\[StudentName]andthereisanenvironmentvariablesUSERNAMEthatcontainsthestudent'sname,thenthethestart-indirectoryfortheshortcutshouldbesettog:\class108\%USERNAME%.
4. Occasionallyusershavereportedsituationslikethepreviouscase,exceptthatWindowsseemsunabletosetthestart-indirectoryproperlyusingenvironmentvariables.
TheStartupDirectoryTextFieldintheAdminPane
Tosetthestart-indirectory,enterAdministratormode(seeChangingSystemPreferencesbelow)andsettheStartupDirectorytextfieldintheAdminpaneoftheTuringPreferencesappropriately(seeTuringPreferencesbelow)includingspecifyingthedirectoryusingtheenvironmentvariables.
2. SeteitherBeginnerorRegularModeforStudents.
TuringcanbesettoBeginnermode,inwhichcaseonlyonefileisopenatatime.Openingupanotherfileclosesthefirstone.Whentheprogramisrunning,theEditorwindowminimizes.Inthisway,onlyonewindowisusuallyvisibleatatime.Inthisfashion,BeginnermodeissimilartotheoldDOSTuring.
![Page 1063: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1063.jpg)
InRegularmode,anynumberoffilescanbeopenedandeachappearsinitsowneditorwindow.
Ingeneral,wesuggestBeginnermodeforgrade9and10andRegularmodeforallothers.IfyouareusingBeginnermode,wesuggestthatyoupointouttothestudentsthattheycanusethePrefencestochangetoRegularmodewhentheyfeelcomfortablewiththeenvironment.
Tochangethepreference,youwillneedtoenterAdministratormode(seeChangingSystemPreferencesbelow)andchangetheBeginnerModepreferenceintheGeneralpaneappropriately(seeTuringPreferencesbelow).
3. Windows95andtheTuringNetmodule
IfyouareusingWindows95(notWindows98/Me/NT/2000/XP)andyouwishtousetheTuringNetmoduleinordertowriteprogramsthatcommunicatewithothercomputers,thenyoumayneedupdatetheWindow95networkingcode.
Thiscanbedonebyrunningtheprogramlocatedat:
[Turingdirectory]\support\Microsoft\W95ws2setup.exe
ThisprogramfromMicrosoftpatchesWindows95networkingcode.ItmustberunoneverycomputerrunningWindows95unlessthemachinesbootfromaserver.
4. ParallelPortUsageIfyouareintendtouseTuringtocontroldevicesattachedtotheparallelport(usingtheparallelputandparallelget,andarerunningunderWindowsNT/XP/2000,youwillneedtoinstalladevicedriver.(WindowsNT/XP/2000donotallowdirectaccesstothesystemhardware.).Thedevicedrivercanbeinstalledbyrunningtheprogramlocatedat:
[Turingdirectory]\support\dlportio_install.exe
FurtherinformationcanbefoundinParallelPortandTuring4.
![Page 1064: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1064.jpg)
3.ChangingSystemPreferences
Turingusesatwolevelpreferencemodel.Thereisacentralsetofpreferencesthatarekeptin
[TuringDirectory]\Support\Ini\turing_admin.ini
ThesepreferencesarethesameforallusersandarecalledtheSystemPreferences.Asecondsetofpreferencesisstoredineachstudent'shomedirectoryinafilecalledturing.ini.ThesepreferencesoverridethecentralpreferencesandallowstudentstoindividuallymodifythebehaviourofTuring.
Whenastudentmodifiesthepreferences,theturing.inifileinthestudent'shomedirectoryischanged.TochangetheSystempreferences(i.e.thecontentsoftheturing_admin.inifile),Turingmustbestartedupwiththecommandline
turing-admin
ThiscanbedonebystartingupaDOSwindow,doingacdtothedirectoryinwhichturing.exeisstoredandthentypingturing-admin.Theusermusthavewriteaccesstothedirectoryinwhichtheturing_admin.inifileisstored.
WhenTuringislaunched,itwilldisplayamessageboxonstart-upindicatingthatitisinAdministratormodeandwherethepreferenceswillbestored.
AdministrationModeNotification
SelectingPreferencesfromtheFilemenuwilldisplayatabbeddialogboxofalltheTuringpreferences.IfyouareinAdministratormode,thenanextratablabeledAdminwillappearwithextrapreferencesthatcanonlybesetbytheAdministrator.NotethatindividualstudentscannotoverridethepreferencesthatappearontheAdminpane.
![Page 1065: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1065.jpg)
PreferencesinAdministratorMode
OncethePreferenceshavebeenset,theAdministratorcanexitTuring.
![Page 1066: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1066.jpg)
4.TuringPreferences
ThissectionlistsallthepreferencesavailableinTuringsortedbythepane
"General"Pane
The"General"Pane
BeginnerModeWhenBeginnermodeisset,onlyonefilecanbecanbeloadedintotheTuringenvironmentatatime.TheEditorwindowisminimizedeverytimetheRunwindowisactiveandvice-versa.Thedebuggercannotbedisplayedorused.Ifthisboxisnotset,thenTuringisinRegularmodeandmultiplefilescanbeopensimultaneously.BeginnermodeisrecommendedforstudentswhoareoverwhelmedorconfusedbytoomanyTuringwindows(especiallystudentsingrades9and10).OneWindowModeThisoptionisnotavailableinTuring4.0.ItwillbeusedtoswitchbetweenMDIandSDImodesinafutureversionofthesoftware.DisplayFullPathnames
![Page 1067: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1067.jpg)
ThefullpathnameandnotjustthefilenamearedisplayedintheEditorwindow'stitlebarandrecentfilessubmenu.SavePreviousFileas".BAK"Whenafileissavedovertopofanolderfile,theolderfileisrenamedwitha.BAKsuffix(i.e.test.ttotest.bak)ConfirmonQuitWhentheuserclosesthelasteditorwindow,TuringdisplaysadialogboxaskingwhethertheuserwishestoQuit.Onsystemswhereloadingisslow(usuallyoveranetwork),thiscanstoptheusersfromaccidentallyquittingTuring.SkipSplashScreenWhenTuringstartsup,itnormallydisplaysa"Splash"screenwiththeversionnumber.TheSplashscreendisappearswhentheuserclicksabuttonorafter3seconds.TurningthisoptionoffcausestheSplashscreennottobedisplayed.Add".t"toFileNamesWhenaSaveFiledialogboxappearsandtheuserspecifiesafilenamewithoutafilesuffix,Turingadds".t".Thiscanberemovedbytheuser.ConvertLeadingSpacesintoTabsWhenTuringsavesafile,itnormallyconvertsgroupsofleadingspacesintoTABcharacters,savingdiskspace.ThenumberofspacespertabisspecifiedbytheSpacesperTabtextfield.Ifthischeckboxisnotselected,thenthespacesarenotconverted.Don'tSaveRecentFilesMenuNormallyTuringliststhelastseveralfilesopened.However,ifstudentsdonothaveindividualaccounts,thenthisfeaturemaynotbeusefulandcanbeturnedoff.FindUsesSelectedTextBydefault,TuringusestheWindowsbehaviourthatwhenaFindcommandisgivenandthereisselectedtext,theselectedtextiscopiedtotheFinddialogbox.Ifyoudon'tlikethisbehaviour,thenunsettingthisoptionwillstopthisbehaviour.Ifitisnotset,thenanadditionalmenuitemisplacedintheSearchmenuthatfindsthenextoccuranceofthecurrentlyselectedtext.StartinLastActiveDirectoryIfstudentsarewritinglargeprojectsinmanysubdirectories,thenthisoptioncanbeenabledtoautomaticallystartTuringinthelastdirectoryinwhichafilewasloadedorsaved.TheTuringpreferencesfileisstillstoredinthestudent'shomedirectory.SpacesperTab
![Page 1068: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1068.jpg)
ThisspecifiesthenumberofspacesthataTabisconvertedtoandfrom.WhenTuringreadsatextfileintotheeditor,alltabsareconvertedontospaces.IfyoucreatedtheTuringfileonaneditorwhereTabsareadifferentnumberofspaces,thenchangethisvalueappropriately.IndentSizeWhenTabispressedintheTuringeditor,itisconvertedintospaces.ThenumberintheIndentSizetextfielddetermineshowmanyspacestheTabkeyisconvertedto.NotetheSpacesperTabisusedwhenTuringreads/writesfiles.TheIndentSizefieldisusedwhenTuringrespondstotheTabkey.FileAssociationMicrosoftWindowshastheabilitytoassociatefileswithaparticularsuffixwithspecificprograms.TheTuringenvironmentcanbeassociatedwiththefollowingfilesuffixes:.t,.tur,.dem,.tiand.tu.ToassociatethesefilesuffixeswithTuring,clicktheAssociate".t"fileswithTuringbutton.Toresetthefileassociationsbacktowhattheywerebefore,clicktheReset".t"FileAssociation.
"EditorWindow"Pane
The"EditorWindow"Pane
![Page 1069: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1069.jpg)
EditorFontYoucanchangethefontsizeandtypefaceusedintheeditorwindow.Ifyouchangethetypeface,youmustchooseamonospacedfontwhereboldandnon-boldlettersarethesamesize.Manymonospacedfontshavedifferentsizesforboldandnon-boldletters.FullScreenforBeginnerModeIfinbeginnermode,editorwindowsareautomaticallyinfullscreenmode.Youcanchangethisbehaviourbuyunsettingthischeckbox.FullScreenforRegularModeEditorwindowsarenormally25x80columns(orthesizespecifiedbytheEditorWindowRows/Columnstextfields).Ifthischeckboxisset,editorwindowsareautomaticallymaximizedtofillthescreen.Thisoptionissuggestedforsystemswith640x480screenresolution.Userscanchangethewindowsizebyclickingthefullscreen/normalwindowbuttoninthewindow'stitlebar.EditorWindowRows/ColumnsThesetextfieldscontrolthesizeofeditorwindowswhenfirstcreated.SyntaxColoringWhenselected,partsofTuringprogramsappearindifferentcolors:commentsappearingreen,stringsinred,keywordsinboldface,predefinedidentifiersinblack,anduseridentifiersinblue.AlwaysShow'Debugger'MenuIntheinterestofkeepingtheinterfaceassimpleaspossible,andbecausemoststudentsdonotusethedebuggingfeatures,TuringdoesnotdisplaytheDebuggermenubydefault.Instead,theuserselectsShowDebuggerMenufromtheRunmenu.SettingthischeckboxcausestheDebuggermenutoalwaysbedisplayed.TextCursorWidthBydefault,thecursor(correctlycalledthecaret)is2pixelswide,allowingittobeseeneasilyintheEditorwindow.However,someuserspreferthecarettobe1pixelwideandsomepreferthecarettooverlayanentirecharacter(inasimilarmannertoDOSeditors).Legalvaluesare1(whichrepresenta1pixelthickcaret),2(whichrepresenta2pixelthickcaret),and3(whichrepresentsatextcursorthatcoverstheentirecharacter.
"RunWindow"Pane
![Page 1070: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1070.jpg)
The"RunWindow"Pane
DefaultRunWindowFontYoucanchangethefontsizeandtypefaceusedintheTuringrunwindow.Ifyouchangethetypeface,youmustchooseamonospacedfont.NotethatchangingthesizeoftherunwindowfontmaycauseoddoutputinTuringprogramsthatwerewrittenassumingaparticularcharactersize.StartinGraphicsModeThismakestheinitialrunwindowagraphicswindow.Theusercanusegraphicswithoutthesetscreen("graphics")commandintheprogram.Outputthatscrollsoffthetopofthescreenislost.Intextmode,graphicsarenotallowed,butalltextoutputiskeptandcanbescrolled,saved,andprintedatanytime.FullScreenRunWindowThiscausesthedefaultrunwindowtooccupytheentirescreen.RunWindowRows/ColumnsThissetsthesizeofthedefaultrunwindow.Changingthesizemaycauseprogramsthatassumea25x80windowtomalfunction.UseSmallFontson640x480ScreenAstandard25x80windowdoesnotquitefitona640x480screenwithastandardsizetaskbar.Asaresult,withoutthisoption,thedefaultgraphicsmoderunwindowappearswithscrollbars.ThisoptioncausesTuringtouse
![Page 1071: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1071.jpg)
aslightlysmallerfontfor640x480runwindowssotheentirewindowfitsonthescreen.ThisoptionmaycauseoddoutputinTuringprogramsthatwerewrittenassumingaparticularcharactersize.
"Printing"Pane
The"Printing"Pane
Notethattheoptionsmarkedwithanasterisk(*)canbesetintheprintingdialog.
PrintingFont/PrintingHeaderFontYoucanchangethefontsizeandtypefaceusedinprinting.Ifyouchangethetypeface,youmustchooseamonospacedfontwhereboldandnon-boldlettersarethesamesize.Manymonospacedfontshavedifferentsizesforboldandnon-boldletters.BoldKeywords/ItalicizeIdentifiers*Thisallowsfor"syntaxcoloring"ofprintouts.Keywordscanbeplacedinboldandidentifiersitalicized.PrintPageHeaderOnsomesystems,aheaderpageisautomaticallyprintedoutandthereislittlereasonforapageheader.Unsettingthischeckboxwillcauseprintouts
![Page 1072: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1072.jpg)
nottohaveanyheaderontheprintedprograms.UserNameinHeaderNormallytheusernameisdisplayedintheheader.However,onsomesystemstheusernameisnon-descriptiveornon-existent.Thisallowsyoutodisabletheprintingoftheusernameonsuchsystems.Two-UpPrinting*Thisisapapersavingmeasure.Textisprintedinlandscapemodewithtwo"pages"perpieceofpaper.Thismeansthatlistingsusehalftheamountofpaper.Ofcourse,thefontismuchsmaller.LineNumbers*Thisprintsoutlinenumbersinfrontofeachlineoftheprogram.Thisisusefulifyouareprintingoutalistingtohandouttotheclass.BorderAroundTextSomeusersliketohaveathinborderprintedaroundthetextforeaseofdeterminingthemargins,etc.SettingthischeckboxcausesTuringtodisplayahairlineborderaroundprogramprintouts.MarginsIfyouneedtochangethemarginsonprintouts(forexample,tofacilitatetheinsertionofprogramlistingsinto3-ringbinders),thenyoucandobychangingthevaluesinthetextfields.Marginsareexpressedininches.UserNameOnsystemswheretheusernameisnon-descriptiveornon-existent,theusercanenteranamethatwillappearontheprintoutallowingittobeidentified.Ifstudentsarechoosinginappropriateusernames,thispreferencecanbedisabledintheAdmintabpreferencedialog.
"Admin"Pane
![Page 1073: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1073.jpg)
The"Admin"Pane
Note,theAdminpaneisonlyavailableinadministratormode.StudentsstartingTuringwillnothaveaccesstothisdialogbox.
StartupDirectoryUserswillstartinthedirectorylistedinthistextfield.Ifleftblank,TuringwillusetheworkingdirectoryoftheshortcutusedtostartTuring.Ifnoworkingdirectoryfortheshortcutisspecified,thedirectorywhereTuringisinstalledisused.Environmentvariablesprefixedandsuffixedwith%signscanbeusedhere(example:g:\students\%username%).Notethatinmostcases,thistextfieldshouldbeblank.Use"MyDocuments"folderThe"MyDocuments"foldercanbeusedasthestartupdirectoryinsteadofthecontentsoftheStartupDirectorytextfield.Thisismostcommonlyusedinsingleusersystems.CanSetUserNameAllowstheusertospecifytheusernametoappearontopofprintouts.Thischeckboxcanbeunsetifstudentsarechoosinginappropriateusernames.CanEnterRegularModeAllowstheusertoturnoffthebeginnermodepreference.Thischeckboxcanbeunsetifitisdesirabletohaveallstudentsworkinginbeginnermode.
![Page 1074: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1074.jpg)
DebuggerAvailableThischeckboxcanbeunsetinordertostopstudentsgettingaccesstothedebugger.CannotAlterPreferencesWhenset,thisstopsstudentsfromaccessingthePreferencesdialog.ItalsostopsTuringfromreadingthestudent'sturing.inifile.Thiscanbesetwhenitisimportanttohaveauniformsetofpreferencesonallstudentmachines,orwhenthereisnolog-onprocedureandstudentsaresharingmachines.Prohibituseof'Sys.Exec'Whenset,theSys.Execandsystemproceduresdonothing.Thiscanbesetifthereisasystemsecurityconcernaboutstudentsstartingarbitraryprograms.NoSoundorMusicWhenset,theTuringsoundandmusiccommandsdonothing.UseonlyStartupDirectoryandBelowCAUTION!Thisoptiononlyprovidesrudimentarysecurityandistobeusedonlyonsystemswheretheoperatingsystemcannotprovidepropersecurity.Thisoptionwillnotallowstudentstosaveorloadtoanydirectoryotherthattheirstartupdirectoryordirectoriescreatedinthestartupdirectory.Thisoptiondoesnotstopstudentsfrombrowsingthenamesoffilesinotherdirectories,onlyfromloadingorsavingfilesinthem.UseOnlyAllowedDrivesCAUTION!Thisoptiononlyprovidesrudimentarysecurityandistobeusedonlyonsystemswheretheoperatingsystemcannotprovidepropersecurity.Thisoptionallowsstudentstoloadfilesonlyfromthesetofdrivesspecifiedinthetextfield.The'*'representsnetworkdrives.ForbidUseofCertainDrivesCAUTION!Thisoptiononlyprovidesrudimentarysecurityandistobeusedonlyonsystemswheretheoperatingsystemcannotprovidepropersecurity.Thisoptionpreventsstudentsfromloadingfilesfromthesetofdrivesspecifiedinthetextfield.The'*'representsnetworkdrives.
![Page 1075: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1075.jpg)
5.UsingtheParallelPortsinTuring4
UnderTuring4.0and,itispossibletoaccesstheIBMPC'sparallelportforreadingandwriting.Thisisnormallydoneusingtheparallelputandparallelgetcommands.(InTuring4.0,youcanusePC.ParallelPutandPC.ParallelGettoaccessportsotherthanLPT1.)
UnderWindows95/98andMe,theoperatingsystemallowsdirectaccesstotheparallelport.UnderWindowsNT,2000andXP,accesstotheparallelportisrestrictedbytheoperatingsystem.Inordertoaccesstheport,underWindowsNT,2000andXP,itisnecessarytoinstalladevicedriveroneachmachinethatwillbeaccessingtheparallelport.Theneededdevicedriverinstallerislocatedat:
[Turingdirectory]\support\dlportio_install.exe
where[Turingdirectory]isthedirectoryinwhichTuringwasinstalled.ExecutingthisprogramwillinstallthedevicedriverintheWindowsSystemdirectoryofthemachineuponwhichitisexecuted.
Lastly,beforeaccessingtheparallelport,checkthattheparallelportisinnormalmodeandnotinbi-directional,PS/2,EPPorECPmode.YoucandeterminewhichmodetheparallelportisinusingtheDeviceManager.InthelistofdevicesintheDeviceManagerwindow,doubleclickPorts(COMandLPT),andthentheLPT(orPRN)port.Thisdisplaysapropertysheetabouttheparallelport.Takealookatwhatitsaysaboutit.Ifitisinanon-originalmode(i.e.mentionsbi-directional,PS/2,EPPorECPmode),thenyouwillprobablyneedtoadjustthesystemsBIOSsettings.
(UnderWindows2000theDeviceManagercanbedisplayedbyselectingtheSystemControlPanelfromSettingsintheStartmenu.SelecttheHardwaretabandthenclicktheDeviceManagerbutton.)
Ifthesettingfortheparallelportneedstobechanged,restartthemachine,andpresstheappropriatekeytoentertheBIOSSetUpProgram(thekeyvariesbetweenmachines,butisusuallynotedonthescreen).OftentheparallelportsettingsarefoundinAdvancedSettingsoftheprogram.TheparallelportshouldbesettoNormal,Standard,ATorUnidirectionalmode.(Allfour
![Page 1076: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1076.jpg)
namesaredifferentdescriptionsofthesamemode.)Oncethisisdoneandthenewsettingsaresaved,thenstartthemachineintoWindows.OnceinWindows,selectShutDownandturnthemachinecompletelyoff.Oncethemachineisoff,waitatleast10secondsinthepowered-offstate.Thenrestartthemachine.(Whileshuttingdownthemachineshouldnotbenecessary,wehavehadseveralcaseswherethechangeonlytookwhenthemachinehadbeenpowered-downandrestarted.)
![Page 1077: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1077.jpg)
6.MissingFeaturesfromTuring4
Turing4.0doesnotyetincorporateallthefeaturesthatcurrentlyexistinObjectOrientedTuring3.1.1andareintendedforfutureTuringreleases.Overthenextfewmonths,newfeatureswillbeaddedandupdatestoTuringwillbemadeavailableonourwebsite.Thefeaturestobeaddedare:
ViewVariablesTheSpritemodule
Ifyouhaveimmediateneedofanyofthesefeatures,pleasecontinuetousetheObjectOrientedTuring3.1.1software.OntariouserscanobtainthesoftwarethroughtheirOESSsoftwarerepresentative.
TodeterminethecurrentreleaseofTuring,checktheTuringwebsiteat
http://www.holtsoft.com/turing/support
![Page 1078: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1078.jpg)
7.TheTuringDebugger
ThecurrentversionofTuringhasaDebuggerfacilitiesthatallowstudentstofollowexecutionofaprogrameitherpausingaftereachlineofexecutionorexecutingslowlywhilehighlightingeachlineofexecution.Becauseoftheconfusingnatureofthedebuggerformanystudents,thedefaultconfigurationofTuringdoesnotdisplaythedebuggermenuuntilthestudentrequestsitbyselectingtheShowDebuggerMenufromtheRunmenu.
AlwaysShow'Debugger'MenuintheEditorWindowPane
IfyouwishstudentstohaveamoreregularexposuretotheDebugger,youcansetaSystempreferencetocauseTuringtoalwaysdisplaytheDebuggermenu.Tosetthethispreference,enterAdministratormode(seeChangingSystemPreferencesbelow)andsettheAlwaysShow'Debugger'MenucheckboxintheEditorWindowpaneoftheTuringPreferences.
![Page 1079: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1079.jpg)
8.StudentDistributionofTuring4.0
TheOntarioMinistrylicensedoesnotincludetherighttoredistributethesoftwaretostudents.Ifyouwishtogivethesoftwaretostudents,aseparatelicensemustbeobtaineddirectlyfromHoltSoftware.
Ifyourschooldoesnothavesuchalicense,studentscanpurchasethesoftwareforhomeusebyprintingandthenmailinganorderformfoundhttp://www.holtsoft.com/studentbuy.Thisorderformcanalsobeusedtoallowinterestedstudentstopurchasetextbooks.
Ifyourschoolhaspurchasedaredistributionlicense(almost200schoolshavedoneso),thenyoumayredistributetheTuringsoftwaretoyourstudents.YoucaneitherburncopiesoftheCDtodistributetostudentsorplacetheTuringinstallerfileontoyourschoolInternetserverandgiveyourstudentstheURL.
Ifyouplacethisfileonyourschoolinternetserver,youmustnotmakeanylinksfromyourwebpagestothesoftware.
Thiswillpreventotherusersofthewebfromdownloadingyoursoftware.Ifyouplacelinksfromyourschool'swebsite,thenatsomepointawebsearchenginewillfindthesoftwareandpostitslocationtotheinternetatlarge,allowingforlargescalepiracy(andaveryoverloadedschoolwebserver).Iftherearenolinkstothesoftware,thenonlythosewhohavebeentoldtheexactURLwillbeabletodownloadthesoftware.
NotethatifyouarecopyinganumberofdifferentprogramsontoasingleCDforredistribution,youmayrenametheTuringinstallerprogramtosomethingmoredescriptive.
Permanentstudentredistributionlicensescanbepurchasedfor$500-$750formostschools.Ifyouareinterestedinpurchasingastudentredistributionlicense,contactChrisStephensonat(416)[email protected]
![Page 1080: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1080.jpg)
9.TechnicalSupport
Ifyouhaveproblems,questionsorsuggestionsabouttheTuringsoftware,contacttechnicalsupportat:Telephone: (416)978-8363Tollfree: 1-800-361-8324Fax: (416)978-1509E-mail: [email protected]
![Page 1081: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1081.jpg)
TuringDebuggerGuideIntroduction
Turingsupportsanumberoftoolstoenableuserstodebugtheirprogramsandexamineprogramexecution.Someoftheavailabletoolsare:
Steppingexecutionalineatatime.TracingexecutionwithasetpausebetweenlinesofexecutionSettingbreakpointstopauseexecutionatspecifiedpointsintheprogram.Viewingallopenresourcesofaprogramincludingfiles,fonts,pictures,etc.
AsofMay2002,theTuring4.1softwaredoesnotcontainthefollowingfeature:
Viewvariables.
Thisfeaturewillbeimplementedastimeanddeveloperresourcespermit.
![Page 1082: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1082.jpg)
DisplayingTheDebuggerMenu
Inordertouseanyofthedebuggercommands,youneedtohavetheDebuggermenushowingintheEditorwindow.Bydefault,theDebuggermenuishiddeninordertosimplifytheTuringenvironmentforthemajorityofstudentsnotusingthedebugger.
TherearetwowaysthattheDebuggermenucanbedisplayed.YoucanselecttheShowDebuggerMenucommandintheRunmenu.
ShowDebuggerMenucommandintheRunmenu
Ifyouareconsistenlyusingthedebugger,thenyoushouldchangethePreferencessothattheDebuggermenuisalwaysdisplayed.ThiscanbedonebybringinguptheEditorWindowpaneofthePreferencesdialogboxandsettingtheAlwaysShow'Debugger'Menucheckbox.
AlwaysShow'Debugger'MenuintheEditorWindowPane
![Page 1083: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1083.jpg)
UsingTheDebuggerMenu
ShowDebuggerMenucommandintheRunmenu
TheDebuggermenugivesyouaccesstoallthedebuggingfeaturesinTuring4.0.Thefollowingmenuoptionsareavailable:
ShowDebuggerControlsThiscommandcauseseachEditorwindowtodisplayasecondrowofcontrolsatthetopofthewindow(calledtheDebuggercontrols)thatallowtheusertostepthroughaprogramandtraceexecutionoftheprogram.WhentheDebuggercontrolsarevisible,thenthismenuitemchangestoHideDebuggerControls.
WindowwithDebuggerControlsVisible
ShowBreakpointsThiscommandcauseseachEditorwindowtodislayanareaontheleftwherebreakpointscanbeplaced.Abreakpointisamarkerthatcausestheprogramtopausewhenexecutionreachesthemarkedline.
![Page 1084: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1084.jpg)
WindowwithBreakpointVisible
ClearBreakpointsThiscommandquicklyeliminatesallbreakpointsthathavebeensetinanyEditorwindow.ShowAllocatedObjectsThiscommandshowsallthefiles,fonts,pictures,etcthathavebeenopenedorcreatedbytheprogrambuthavenotbeenclosed.Astheprogramexecutes,thiswindowupdateseverytimearesourceisallocatedorfreed.
![Page 1085: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1085.jpg)
AllocatedObjectsWindow
![Page 1086: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1086.jpg)
TuringExecution
Therestofthisdocumentwillusesometermsthatmustbeunderstoodproperly.
Running-ATuringprogramisrunningwhenstatementsarebeingcontinuouslyexecutedwithouthumanintervention.However,runningmaybestalledwhiletheprogramiswaitingforkeyboardinput,executingadelaystatement,etc.Paused-ATuringprogramispausedwhenexecutionistemporarilyhalted.Noinputisacceptedbytheprogramwhileitispaused.Aprogramcanbecomepausedinavarietyofwaysincluding:
TheuserpressingthePausebutton.TheuserpressingaStep,StepOverorStepReturnbutton.Executionreachingabreakpoint.Executionreachingthebreakstatementinaprogram.
WhenaTuringprogramispaused,thelineinthesourcecodeonwhichtheTuringprogramwasabouttoexecuteishighlighted.Ineachcase,theprogramcanresumerunningbyclickingtheResumebutton.TheprogramcanalsotemporarilyresumerunningbytheuserpressingtheStep,StepOverorStepReturnbutton.Oncethestatementorstatementsarefinishedrunning,theprogramispausedagain.Executing-AprogramisexecutingwhenitiseitherRunningorPaused.Halted-ATuringprogramishaltedwhenitcannolongerexecuting.Itcannotberesumedandmustbestartedfromthebeginninginordertorunitagain.Aprogramcanbehaltedby:
TheuserpressingtheStopbutton.Arun-timeerror.TheuserclosingaRunwindow.
![Page 1087: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1087.jpg)
SteppingaProgram
SteppingaprogramconsistsofexecutingaTuringprogramalineatatime.Aftereachstepcommand,executionpauses,highlightingthenextlinetobeexecuted.Tostepaprogram,theprogrammustnotberunning.TheDebuggercontrolsintheEditorwindowmustbevisible.Tosteptheprogram,theuserclicksoneofthethreebuttonsintheDebuggerControls:
Step-Iftheprogramishalted,thisexecutestheveryfirstlineofcodeandthenpauses.Iftheprogramispaused,itexecutesthehighlightedlineofcodeandthenpauses.Ifitlineofcodetobeexecutedisasubprogramcall,thenitentersthesubprogramandpausesatthefirstlineofcodeinthesubprogram.Ifitisattheendofthesubprogram,thenitleavesthesubprogramandpausesatthesubprogramcall.ThiscommandissometimescalledStepInto.StepOver-Thisexecutesasinglelineofcode.However,iftheprogramispausedatasubprogramcall,thentheentiresubprogramisexecutedandexecutionispausedatthenextlineafterthesubprogramcall.StepReturn-Thisresumesexecutionuntiltheexecutionreturnsfromasubprogram.Thenextlineafterthesubprogramcall.Notethatifthiscommandisgiveninthemainprogram,thenexecutionwillcontinueuntiltheprogramterminates.
![Page 1088: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1088.jpg)
TracingaProgram
Tracingaprogramissimplyexecutingaprogramslowlywitheachlineofcodeintheprogrambeinghighlightedasitisexecuted.Tracingallowsuserstoseehowcontrolconstructsoperate.Unlikestepping,withtracing,executioncontinuesuntilitispausedorhaltedinsomeotherfashion.
Tostartaprogramtracing,theDebuggerControlsmustbevisible.TheuserthenclickstheTraceExecutioncheckbox.Whentheprogramisnextrunning,eachtimeastatementisexecuted,thelineinthesourcecodewillbehighlighted.ThespeedatwhichthetracingoccursiscontrolledbytheTraceSpeedsliderfoundintheDebuggerControls.Whenthesliderisontheleft,thereisessentiallynodelaybetweenexecutionofstatements.(Notethatexecutionwillstillbemuchslowerthannottracingduetothetimetakentohighlighteachexecutingstatement.)Whenthesliderisontheright,eachstatementwillwaitforabout5secondsafterexecutingbeforethenextstatementisexecuted.
![Page 1089: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1089.jpg)
SettingBreakpoints
Oftenonlyaparticularsectionofcodeisofinteresttotheuser.Breakpointsprovideamechanismforpausingaprogramonlywhenexecutionreachesaspecifiedstatement.Tosetbreakpoints,theyneedtobedisplayedintheEditorwindow.ThisisdonewiththeShowBreakpointscommandintheDebuggermenu.Oncebreakpointsarevisible,theycanbeset(andremoved)bysimplyclickingthemouseinthebreakpointarea.Whenthemouseisoverthebreakpointarea,itturnsintoadiamond.Whenthebreakpointisset,areddiamondappearsinthebreakpointarea.Toremovethebreakpoint,simplyclickthereddiamondandthebreakpointdisappears.
WindowwithTwoBreakpointsSet
Whenexecutionreachesalinewithabreakpointonit,theprogrampausesand
![Page 1090: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1090.jpg)
thelineishighlighted.Theprogramcanthenberesumedorsteppedasdesired.Notethatitispossibletosetabreakpointonalinethatisnotexecuted.Ifyouplaceabreakpointonablankline,itisquitelikelythatexecutionwillnotstop.Likewise,inlinesbrokenovermultiplelines,itisbesttoputthebreakpointonthelastlineinthestatement.
Toclearallthebreakpoints,selectClearBreakpointsfromtheDebuggermenu.
![Page 1091: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1091.jpg)
ViewingOpenFiles/Pictures/Fonts,etc.
AcommonerrorinTuringprogramsistoneglecttocloseopenfiles(usingtheClosestatement)orfreepicturesorfonts(usingthePic.FreeorFont.Freeprocedures).TheAllocatedObjectswindowdisplaysallallocatedresourcesuntiltheyarefreed.ThiswindowisdisplayedbyselectingtheShowAllocatedObjectscommandfromtheDebuggermenu.Thecommandcanbegivenevenafteraprogramhashalted.Itisausefulcommandtousewhenamopen,Pic.NeworFont.Newhasfailedbecauseoftoomanyopenfiles,picturesorfonts.
Thewindowwillalsodisplayjusthowmuchmemoryeachpicturetakesup.
AllocatedObjectsWindow
Clickingonthelinecontainingtheallocatedobjectwillhighlightthelineinthecodewheretheobjectwasallocated.TheheadingsoneachofthecolumnscanbeclickedallowingtheobjectstobesortedeitherbytheirID,orbywhereintheprogramtheywereallocated.
![Page 1092: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1092.jpg)
Error.TripMsg PartofErrormodule
Syntax Error.TripMsg(errorCode:int,errorMessage:string)
Description
Error.TripMsgisaprocedurethatsetstheerrornumberanderrormessagethatisreturnedbyError.LastandError.LastMsg.Itdoesnothalttheprogram.
YoucanfindalistofconstantsforthelegalerrorcodesinthemoduleErrorNum.AnycalltoError.TripMsgshoulduseaconstantfoundintheErrorNummoduleorzero,iftheerrorcodeisnotrelevant(i.e.onlytheerrormessageisrelevant).
Example
Thisprogramsetsanerrorcode.Theprogramoutputs201fortheerrorand"File*really*notfound"forthemessage.
Error.TripMsg(eFsysFileNotFound,"File*really*notfound")
put"Errorcode=",Error.Last
put"Errormessage=",Error.LastMsg
Execute
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingError.TripMsgcallingTripMsg.
![Page 1093: Alphabetical List of All Turing Elements · typeSpec - type specification unchecked - compiler directive union - type unit - file containing module, monitor, or class unqualified](https://reader035.vdocuments.mx/reader035/viewer/2022070814/5f0e32587e708231d43e12e1/html5/thumbnails/1093.jpg)
Error.Halt PartofErrormodule
Syntax Error.Halt(errorMessage:string)
Description
Error.HaltisaprocedurethatimmediatelyhaltsexecutionoftheprogramandshowsthespecifiederrormessageonthelineintheprogramthatcallsError.Halt.
Thisprocedureisusefulforallowingaquickhalttoaprogramwhileindicatinganerrorcondition.
Example
Thisprogramhaltsonthefirstlinewithanerrormessagestating"Executionterminatedbytheprogram."
Error.Halt("Executionterminatedbytheprogram.")
Execute
Status
Exportedqualified.
ThismeansthatyoucanonlycallthefunctionbycallingError.HaltnotbycallingHalt.