DataMuseum.dk

Presents historical artifacts from the history of:

CP/M

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about CP/M

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦e6d2a94dd⟧ TextFile

    Length: 24192 (0x5e80)
    Types: TextFile
    Names: »SKOMAL3.DOK«

Derivation

└─⟦e96298e07⟧ Bits:30004225 SKOMAL Version 1.02 til ICL Comet
    └─ ⟦this⟧ »SKOMAL3.DOK« 

TextFile

                         Brugervejledning                     SKOMAL v. 1.0
 
                         Jan 86/TH                                   s. 6.1




       6.   Programmer.
       ----------------

       6.1  Programelementer.
       ----------------------

       6.1.1   Tal.
       ------------

               Skomal-fortolkeren behandler både reelle tal og  heltal,  som
            kan indtastes som heltal, decimaltal eller som tal i E-notation.
            F.ex     23        3456.234      1.23E-3       123.4255E12.
               Hvis DEC sættes til nul, vil alle tal  (op til 8 cifrede) ud-
            skrives som afrundede heltal på normalsiden.
               På lagersiden udskrives alle tal fast med to decimaler. 

       6.1.2   Variabler.
       ------------------

               En variabel består af eet bogstav (A-Å).
               Bruges flere variabler, skilles de ved komma.
               Der kan maximalt benyttes 8 afleveringsvariabler og  8 modta-
            gevariabler pr. program.  Både afleverings-og modtagevariablerne
            kan udelades.

       6.1.3   Regnetegn.
       ------------------

               Fortolkeren arbejder kun med  '+', '-', '*' og '/'.

       6.1.4   Logisk operator.
       ------------------------

               De logiske operatorer er følgende:

                      1.    =                  lig med
                      2.    >                  større end
                      3.    <                  mindre end
                      4.    >=   eller   =>    større end og lig med
                      5.    <=   eller   =<    mindre end og lig med
                      6.    <>   eller   ><    forskellig fra

       6.1.5   Udtryk.
       ---------------

               Et udtryk opfattes som

                    1. et <tal> eller en <variabel>
                    2. to <tal> eller <variable> med et <regnetegn> imellem

               Eksempler på LOVLIGE udtryk:

                    2+5    A-3    7*L    -Q    A/L    5/-B   -2*P   5*-A












                         Brugervejledning                     SKOMAL v. 1.0
 
                         Jan 86/TH                                   s. 6.2




               Eksempler på ULOVLIGE udtryk:

                    2*5+6     2*A/R   A*B*C

       6.1.6   Udsagn.
       ---------------

               Udsagnet har følgende syntaks:

                         <udtryk><logisk operator><udtryk>

       6.2  Programopbygning.
       ----------------------

               Et program består af

                      1.    programhoved
                      2.      programdel
                      3.    SLUT

               Et program kan maksimalt bestå af 20 linier med 28 tegn.
               Programordren SLUT skal altid være programmets sidste linie.
            Editoren opfatter netop denne kommando, som en ordre til at af-
            bryde indskrivningen/retningen af programmet.   

       6.2.1   Programhoved.
       ---------------------

               Et programhoved består af følgende elementer :

            <programnavn>(<variabel),..,<variabel>;<variabel),..,<variabel>

               Variablerne mellem  '('  og  ';' kaldes for afleveringsvaria-
            bler, mens variablerne fra  ';' til  ')'  benævnes modtagevaria-
            bler.

       6.2.1.1    Programnavn.
       -----------------------

               Programnavnet kan bestå af et antal bogstaver eller tal (evt.
            blandet) og kan være lige så langt, som linien tillader.
               Programnavnet kan ikke være en af ordrerne nævnt i kap. 5.

               Hvis programmet skal gemmes på diskette,  bør  programnavnets
            længde ikke overstige 8 tegn, da fortolkeren (af hensyn til CP/M
            -systemet) automatisk afskærer tegn udover det ottende,  når der
            arbejdes på disketten.

               Eks.     På disketten ligger programmet 'FUNKTION' under nav-
                     net 'FUNKTION' (8 tegn).
                        Programmet 'FUNKTIONER' gemmes.
                        Programmet 'FUNKTION' overskrives, og efter operati-
                     nen ligger programmet 'FUNKTIONER' nu på disketten  un-
                     der navnet 'FUNKTION'.











                         Brugervejledning                     SKOMAL v. 1.0
 
                         Jan 86/TH                                   s. 6.3




                        Hentes programmet ind i fortolkeren,  vises nu i ka-
                     taloget programmet 'FUNKTIONER'.
                        Dvs. at hvis et programnavn overstiger  8  tegn  vil
                     diskettekataloget kun vise de første 8.

       6.2.2   Programdel.
       ----------------

               Programdelen kan bestå af følgende dele :

                                  1.  en tildelingsordre
                                  2.  en sløjfe-struktur
                                  3.  en betinget ordre
                                  4.  en udhop-ordre
                                  5.  et programkald

               Delene kan helt udelades eller kombineres frit.

       6.2.2.1    Tildelingsordren.
       ----------------------------

               I skomal foretages værditilskrivninger til variabler således

                        <variabel>:=<udtryk>

               F.ex. er følgende tildelingsordrer lovlige :

            A:=10      B:=-1.34E10       C:=A*B        R:=R+2      T:=-2*-45

       6.2.2.2    Sløjfe-strukturen.
       -----------------------------

               Sløjfer består af et antal programordrer  eller  programkald,
            som skal gentages et vist antal gange evt. uendelig mange gange.
               Syntaksen er følgende

                            1. GENTAG(<udtryk>)
                            2.   ordredel
                            3. HERTIL

             Ad. 1.  Hvis <udtryk> udelades, gentages ordredelen i det  uen-
                     delige.

             Ad. 2.  Hvis <udtryk> er positivt, udføres ordredelen  <udtryk>
                     antal gange. 

             Ad. 3.  Hvis <udtryk> er nul eller negativt,  overspringes  or-
                     dredelen, og linien efter HERTIL udføres.

            BEMÆRK:  Fortolkeren tillader kun een sløjfe pr. program. Ønskes
                     flere sløjfer (evt. inden i hinanden), gøres det ved at
                     kalde et nyt program, der udfører denne sløjfe.













                         Brugervejledning                     SKOMAL v. 1.0
 
                         Jan 86/TH                                   s. 6.4




                     Eks.              TABELLER              TABEL(T)
                                         T:=2                  N:=0
                                         GENTAG(9)             GENTAG(11)
                                           TABEL(T)              R:=T*N
                                           T:=T+1                UD(N,R)
                                         HERTIL                  N:=N+1
                                       SLUT                    HERTIL
                                                             SLUT

               Programmet  TABELLER vil 9 gange kalde programmet  TABEL, som
            udskriver tabellen T   (T antager værdierne fra og med  2 til og
            med 10).

               

       6.2.2.3    Betingede ordrer.
       ----------------------------

               Syntaksen er følgende :            HVIS(<udsagn>)<ordre>

               Hvis  <udsagn>  er sand, udføres  <ordre>. Hvis  <udsagn>  er
            falsk, overspringes sætningen, og næste programlinie udføres.
               Hvis <ordre> er SLUT, forlades programmet (niveauet sættes et
            ned).
               <ordre> kan også være et programkald.

               Eks.      HVIS(N>=0)SLUT
                         HVIS(2<=2*N)TABEL(L+5)

               Den betingede ordre giver tillige  mulighed  for  at  afbryde
            afviklingen af rekursive programkald (se kap. 8.2).
               

       6.2.2.4    UDHOP-ordren.
       ------------------------

               I sløjfestrukturer kan sløjfegennemløbene afbrydes,  hvis or-
            dren  UDHOP bruges evt. i en betinget ordre. Fortolkeren udfører
            så linien efter HERTIL.

       6.2.2.5    Programkald.
       -----------------------

               Programkald består af :

               <programnavn>(<udtryk>,..,<udtryk>;<variabel>,..,<variabel>)

            både <udtryk> og <variabel> kan udelades.
               Det er vigtigt, at antallet af udtryk til  programmet  svarer
            til antallet af programmets variabler.  Det samme  gør sig  gæl-
            dende for afleveringsvariablerne.














                         Brugervejledning                     SKOMAL v. 1.0
 
                         Jan 86/TH                                   s. 6.5




       6.2.3   SLUT-ordren.
       --------------------

               Alle skomal-programmer skal afsluttes med  ordren  SLUT.  Det
            er et signal til editoren om, at programindskrivningen/retningen
            er afsluttet.

       6.3  Programafbrydelse.
       -----------------------

               Alle programkørsler kan afbrydes ved tryk på  'S'-tasten  el-
            ler ESC-tasten.   Det er dog ikke muligt at genstarte programmet
            fra det sted, hvor det blev afbrudt.




















































                         Brugervejledning                     SKOMAL v. 1.0
 
                         Jan 86/TH                                   s. 7.1




       7.   Indskrivning af programmer.
       --------------------------------

               Skrives ordren HUSK, aktiveres program-editoren, og indskriv-
            ningen af programmet kan påbegyndes.
               På et hvilket som helst  tidpunkt  under  indskrivningen  kan
            editorens faciliteter benyttes.

               Som en særlig hjælp til handicappede brugere er alle  de  ta-
            ster,  hvor SHIFT-tangenten samtidig skal holdes nede,  kopieret
            til funktionstasterne.   I det følgende er disse mærket  F1-F13,
            F13 ligger øverst til højre på tastaturet.

               - Piltasterne benyttes til at flytte markøren.
               - 'DEL' tasten sletter tegnet under markøren og  flytter  re-
                    sten af linien en position til venstre.
               - 'INS' tasten indsætter et mellemrum under markøren og flyt- 
                    ter resten af linien en position til højre.
               - 'BS' virker som tasten med pil til venstre.
               - 'F1' svarer til '-' (minus-tegnet).
               - 'F2'    -    -  '*' (gange-tegnet). 
               - 'F3'    -    -  '='
               - 'F4'    -    -  '<' (mindre end).
               - 'F5'    -    -  '>' (større end).
               - 'F6'    -    -  '(' (venstre parantes).
               - 'F7'    -    -  ')' (højre parantes).
               - 'F11' sletter linien under markøren og rykker efterfølgende
                       linier en linie op.
               - 'F12' indsætter  en  tom  linie under markøren og rykker de
                       efterfølgede linier en linie  ned.
                       NB: Hvis der stod noget i nederste linie, mistes det.
               - 'F13' sletter alle tegn fra markøren til  liniens slutning.

               Editoren foretager selv indrykninger/udrykninger af  program-
            linierne.
               Programindskrivningen afsluttes automatisk, når 'RETURN' ned-
            trykkes, mens markøren står på linien, hvor ordren SLUT er  pla-
            ceret.

               Skomal-programmer kan maksimal være på 20 linier.  Hver linie
            kan højst indeholde 28 tegn.
               Skrivefeltets bredde er 32 anslag af hensyn til indrykninger-
            ne. Når indskrivningen er færdig,  fjerner  editoren  automatisk
            alle mellemrum og afskærer alle tegn udover det 28nde.
               Programmet lagres i arbejdsområdet, og programnavnet indføres
            i kataloget. Hvis der allerede er et program med samme navn, gi-
            ves der mulighed for at rette programnavnet i  det  sidst indta-
            stede program, ellers overskrives det gamle.

               Ordren RET giver også adgang til editoren  og  benyttes,  når
            man skal foretage rettelser i et eksisterende program.














                         Brugervejledning                     SKOMAL v. 1.0
 
                         Jan 86/TH                                   s. 8.1




       8.    Variabelbegrebet i skomal.
       --------------------------------

                Skomalfortolkeren arbejder udelukkende med lokale variabler.

                Hvert program har sit eget variabelsæt og evt. variabelover-
             førsler sker ved hjælp af programmets variabeldel.   Hvert pro-
             gram har kun adgang til sit eget variabelsæt.  Dvs.  at  varia-
             blen A på niveau 1 er forskellig fra variablen på niveau 2 osv.

                Ordren NUL nulstiller samtlige variabler på alle niveauer.

       8.1   Program kalder program.
       -----------------------------

                Når et program kalder et andet program vil det kaldte rykke
             et niveau ud.
                Eks. Følgende programmer ligger i programområdet :
                
                          TABEL                   MOMS(U)
                            IND(F,T)                M:=U*1.22
                            N:=F                    UD(U,M)
                            X:=T+1                  TRYK(U,M)
                            GENTAG(X-F)           SLUT
                              MOMS(N)
                              N:=N+1
                            HERTIL
                          SLUT

                På kommandoniveauet (niveau 0) gives ordren TABEL. På niveau
             1 indlæses TABEL i programlageret og ordren  IND udføres.  Pro-
             grammet venter på indtastning af en værdi til F. Vi taster 1 og 
             variablen F oprettes og tildeles værdien 1.  Programmet  venter
             derefter på en værdi til T-variablen.  Vi indtaster 20.  Varia-
             blen T oprettes og får værdien 20.
                I linie 3 oprettes en variabel N, som tildeles værdien 1.  I
             programmet bruges denne variabel som en såkaldt  tællevariabel.
             For hvert gennemløb af sløjfen GENTAG-HERTIL bliver  N's  værdi
             en større.
                Variablen X i linie 4 bruges som hjælpevariabel, da antallet
             af gennemløb af sløjfen skal være  een større  end  differensen
             start- og slutværdien, altså  T-F+1. Da skomal kun kan behandle
             een regneoperation pr.linie er denne operation altså nødvendig. 
                I linie 5 udregnes antallet af gennemløb  (ialt 21)  og ned-
             tælingen påbegyndes.
                I linie 6 kaldes programmet MOMS med afleveringsvariablen  N
             sat til værdien 1.
                MOMS indlæses i programlageret på niveau 2  og  variablen  U
             oprettes og tildeles værdien 1.
                Udtrykket U*1.22 udregnes og  resultat  1.22 tildeles varia-
             blen M.
                Variablerne U og M udskrives i linie 3 på normalsiden med  2
             decimalers nøjagtighed, hvis DEC ikke er tildelt en anden værdi
             siden opstart.











                         Brugervejledning                     SKOMAL v. 1.0
 
                         Jan 86/TH                                   s. 8.2




                Linie 4 sender den samme udskrift til printeren.
                Når ordren SLUT udføres, forlader vi niveau 2 og  returnerer
             til niveau 1, hvor programmet er klar til at udføre linie nr.7.
             Her optælles variablen N til værdien 2, og MOMS kaldes igen, da
             vi kun har gennemløbet sløjfen een gang.
                Således forsætter vi, til sløjfen er gennemløbet  21  gange,
             hvorefter SLUT linien udføres, og vi vender tilbage til komman-
             doniveauet (niveau 0).
                Hvis vi ønsker momstabellen  udskrevet  med  10  øre-spring,
             skal linie 7 ændres til  N:=N+0.1 og samtidigt skal antallet af
             gennemløbene 10-dobles. 

       8.2   Program kalder sig selv.
       ------------------------------

                Ved rekursiv programmering vil hvert  programkald  rykke  et
             niveau ud.
                Husk: Der er maximalt 36 niveauer til rådighed.

                Ordren HVIS giver mulighed for tilbagevikling ved  rekursive
             programkald.

             Eks.   Følgende program ligger i arbejdsområdet :

                                FAKULTET(N;R)
                                  R:=1
                                  HVIS(N=0)SLUT
                                  FAKULTET(N-1;R)
                                  R:=R*N
                                  UD(N,R)
                                SLUT

                 Programmet kaldes f.eks. med ordren FAKULTET(2) på  komman-
              doniveauet (niveau 0). Man behøver ikke her at angive en  mod-
              tagevariabel, da vi ikke behøver at modtage resultatet på  ni-
              veau 0 (resultaterne udskrives på normalsiden).
                 På niveau 1 indlæses FAKULTET i programlageret og variablen
              N oprettes og tildeles værdien 2. I linie 2 oprettes R og til-
              deles værdien 1. Udsagnet i linie tre er falsk hvorfor  skomal
              forsætter med linie 4. Programmet kalder sig selv med  parame-
              teren N-1, altså værdien 1.
                 Der skiftes til niveau 2, hvor FAKULTET indlæses i program-
              lageret, og variablen N oprettes og tildeles værdien 1. Varia-
              blen R oprettes og tildeles værdien 1.   Linie 3 over springes
              da udsagnet er falsk. FAKULTET kalder sig selv med parameteren
              N-1, altså værdien 0.
                 Der skiftes til niveau 3, FAKULTET  indlæses  og  variablen
              oprettes og får værdien 0. R oprettes og får værdien 1. Udsag-
              net i  linie 3 er sandt (N=0), hvorfor programmet slutter. Der
              returneres til niveau 2, idet afleveringsvariablen R overfører
              værdien 1.
                 På niveau 2 udføres linie 5,  dvs. at variablen  R tildeles
              værdien 1*1 idet N=1 og R=1. Variablerne N og  R udskrives  på
              normalsiden med 2 decimaler, hvis man ikke har indstillet  ud-
  
  
  
 
 
 
 
 
 
 
 
                          Brugervejledning                     SKOMAL v. 1.0
 
                         Jan 86/TH                                   s. 8.3




              skrivningsformatet til heltal ( v.h.a. DEC(0) ).  Ordren  SLUT
              bevirker at niveau 2 forlades, og værdien i  R  overføres  til
              niveau 1.
                 På niveau 1 får variablen  R værdien 2, idet  N=2  og  R=1.
              Værdierne i N og R udskrives på normalsiden, og niveau 1  for-
              lades. Aflereringsvariablen R afleverer intet til niveau 1, da
              vi i vores oprindelige ordre FAFULTET(2) ikke angav en  modta-
              gevariabel. Havde vi afgivet ordren FAKULTET(2;Q) ville varia-
              blen Q på niveau indeholde værdien 2 efter programafviklingen. 
























































                         Brugervejledning                     SKOMAL v. 1.0
 
                         Jan 86/TH                                   s. 9.1




       9.    Lidt om fortolkeren.
       --------------------------

       9.1   Specifikationer.
       ----------------------

                Fortolkerens tegnsæt består af :
                - Alle store bogstaver (A til Å).
                - Cifrene 0 til 9.
                - Parenteser til parameterangivelser.
                - Komma til adskillelse af variabler/udtryk.
                - Semikolon til adskillelse af  aflevering-og  modtagevaria-
                  bler.
                - Kolon benyttes i tildelingsordren.
                - Minus til angivelse af negative tal.
                - De fire regneoperatorer ( +, -, * og / ).
                - De logiske operatorer ( >, < og = ).

                Kommandoliniens længde ......................... 28 tegn.
                Programliniens  længde ......................... 28 tegn.
                Antal linier pr. program ....................... 20 linier.
                Antal programmer i arbejdsområdet .............. 17 stk.

                Antal programniveauer .......................... 36
                Antal variabler pr. niveau ..................... 29
                Antal modtagevariabler pr. program .............  8
                Antal afleveringsvariabler pr. program .........  8

       9.2   Fortolkningen.
       --------------------

                I korte træk foretages tolkningen af en kommando-eller  pro-
             gramlinie som følger :

                Tegn til venstre for ':' tolkes som en variabel,  (hvis  der
             står flere bogstaver, er det det første, der benyttes).
                Tegn til venstre for '(' eller linieslut tolkes, som en  or-
             dre.
                Hvis ordren ikke findes i fortolkerens  ordre-liste,  under-
             søges det, om den findes i programkataloget.
                Findes den en af disse steder,  udføres ordren ellers  gives
             et signal i højttaleren (dog kun på maskiner med lydfunktion).

                Har fortolkeren fundet en '(' søger den efter variabler, tal
             udtryk og udsagn.

                Bruges flere bogstaver i en variabel,  benytter  fortolkeren
             kun sidste bogstav som variabelnavn.   F.eks. vil variablen SKR
             opfattes som en variabel med navnet R.
                Udelades skilletegnet  ','  mellem variablerne,  opfattes de
             således kun som een variabel med navnet bestemt af  det  sidste
             bogstav i variabelrækken.
                Sættes et regnetegn foran et tal eller en variabel, vil  kun
             minus-tegnet tolkes, og tallet/variablen vil skifte fortegn.











                         Brugervejledning                     SKOMAL v. 1.0
 
                         Jan 86/TH                                   s. 9.2




                I regneudtryk vil tolkningen ske således :

                Eks. Hvis L:=-5 vil L efter udførslen af tildelingen L:=-2*L
                     eller L:=L*-2 have værdien +25.

                Hvis der benyttes flere regnetegn sammen (bortset fra minus)
             benyttes kun det sidst indtastede regnetegn.  To minustegn tol-
             kes som eet plustegn.
  
                Eks. Udtrykket  K*/+5 vil blive tolket som K+5.

                Ved ordren HVIS opfattes alt efter ')' som en ny ordre, som
             tolkes selvstændigt, hvis udsagnet efter HVIS er sandt.

                Eks. Følgende har altså god mening :

                     HVIS(A=0)HVIS(B=0)SLUT

                Kun hvis både A og B er 0 samtidig udføres ordren SLUT.














































«eof»