alphabetical list of all turing elements · typespec - type specification unchecked - compiler...

1093
Alphabetical List of All Turing Elements abs - absolute value function addr - address of a variable addressint - type all - all members of a set and - operator anyclass - the ancestor of all classes arctan - arctangent function (radians) arctand - arctangent function (degrees) array - type assert - statement assignability - of expression to variable assignment - statement begin - statement bind - declaration bits - extraction body - declaration boolean - true-false type break - debugger pause statement buttonchoose - switch mouse modes buttonmoved - has a mouse event occurred buttonwait - get a mouse event procedure case - selection statement catenation (+) - joining together strings ceil - real-to-integer function char(n) - type char - type cheat - type cheating checked - compiler directive chr - integer-to-character function class - declaration clock - millisecs used procedure close - file statement

Upload: others

Post on 26-Jun-2020

4 views

Category:

Documents


0 download

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

%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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

"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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

'^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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

"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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

"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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

(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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

-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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

*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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Error.Halt PartofErrormodule

Syntax Error.Halt(errorMessage:string)

Description

Error.HaltisaprocedurethatimmediatelyhaltsexecutionoftheprogramandshowsthespecifiederrormessageonthelineintheprogramthatcallsError.Halt.

Thisprocedureisusefulforallowingaquickhalttoaprogramwhileindicatinganerrorcondition.

Example

Thisprogramhaltsonthefirstlinewithanerrormessagestating"Executionterminatedbytheprogram."

Error.Halt("Executionterminatedbytheprogram.")

Execute

Status

Exportedqualified.

ThismeansthatyoucanonlycallthefunctionbycallingError.HaltnotbycallingHalt.