Aritmetikai múveletek
Minden aritmetikai művelet kétváltozós. Az első a forrás a második a célváltozó. Az eredmény minden esetben a célváltozóban áll elő.
- ADD: összeadás.
Pl.: ADD #Employee_Salary TO #Total (#Total változó értékéhez hozzáadódik az #Employee_Salary értéke. Az eredmény a #Total-ban található.)
- SUBSTRACT: kivonás.
Pl.: SUBSTRACT 1 FROM #Employee_Count
- MULTIPLY: szorzás.
Pl.: MULTIPLY #Rate_Increase TIMES #Total Round 2 (#Rate_Increase összeszorozzuk a #Total értékével, az eredmény #Totalban áll elő. A Round 2 jelentése: két tizedesjegyre kerekítünk.)
- DIVIDE: osztás.
Pl.: DIVIDE #Numbder_Of_Employees INTO #Average_Salary Round 2 ON-ERROR=ZERO (jelentése az előzőek szerint nyilvánvaló. ON-ERROR jelentése: nullával való osztás esetén a ZERO eljárás kerül meghívásra – alacsony szintű kivételkezelésre példa)
MOVE parancs
A MOVE parancs sokkal több egy egyszerű aritmetika műveletnél. Alapvetően egy érték átadását jelenti egy másik változó értékeként. Azonban lehetőségünk van a MOVE parancs használatakor konverziós függvényt, illetve formázási maszkot is megadni. Így például dátumokat formázhatunk, kerekíthetünk, number típusú értéket konvertálhatunk sztring típussá.
Példák:
- MOVE &Phone TO &Disp_Phone (xxx) bxxx-xxxx
- MOVE #Salary TO &Disp_Salary $9,999,999.99
- MOVE ’Month DD, YYYY’ TO $Date_Mask
- MOVE &EffectiveDate TO $Effective_Date :$Date_Mask
- MOVE &Counter TO #Employees_Count NUMBER
- MOVE &Annual_Rate TO #Annual_Salary MONEY
- stb.
String manipulációs múveletek
SQR nyelvben találhatunk néhány előre definiált Sztring manipulációs műveletet. Ezek a következők:
- Find:
- A Find művelettel egy Stringben kereshetünk részstring-et. Az eredmény a részstring kezdőpozícióját határozza meg.
- Pl.: FIND ’John’ IN $Full_Name 0 #Position (keressük ’John’ értéket a $Full_Name stringben 0. előfordulását – azaz az első előfordulását. Az eredmény kezdőpozícióját a #Position-ba rakjuk)
- Concat:
- Két string-et fűzhetünk össze és megadhatunk formázási maszkot.
- Pl.: MOVE ’bxxxxx-xxxx’ TO $Zip_Mask
- CONCAT $Full_Zip WITH $Address :$Zip_Mask
- Extract:
- Tipikus substring műveletet valósítja meg.
- Pl.: EXTRACT $Area_Code FROM $Phone_Number 1 3 (1. pozíciótól a 3.-ig tartó részstring értékét az $Area_Code-nak adjuk értékül)
- Encode:
- Encode paranccsal speciális karakterláncot adhatunk értékül egy String értékének.
- Pl.: ENCODE ’<27>L11233’ INTO $Bold
- Sring:
- String művelet segítségével résztringekből álló Stringet fűzhetünk össze egy string értékeként.
- Pl.: STRING $Emplid $Empl_Name $Birth_date BY ’,’ INTO $Empl_Rekord
- Unstring:
- Egy String értékét darabolhatjuk fel megadott speciális karakter szerint.
- Pl.: UNSTRING $Empl_Name BY ’-’ INTO $First_Name $Middle_Name $Last_Name
- Uppercase:
- Nagybetűvé konvertálja a String-et. Az eredmény felülírja a String eredeti értékét.
- Lowercase:
- Kisbetűvé konvertálja a String-et.
LET parancs
A LET parancs a nyelv legkomplexebb adatmanipulációs parancsai közé tartozik. Egyszerű esetben a LET parancs segítségével egy változó értékéhez hozzárendelhetünk egy kifejezést.
Pl.: LET target_variable = expression
LET parancs kifejezése lehet operandusok, operátorok és függvények kombinációja.
Operandusok a LET kifejezésben lehetnek változók, SQR oszlopok, literálok és tömbök összessége.
Pl.: LET #Numer_Of_Days = $Julian_day (konverziós utasítás).
Operátorok a LET parancsban lehetnek aritmetikai, sztring illetve relációs műveletek.
Néhány összetettebb példa:
- LET #Total = #Total + (#Price * (100 - #Discount_Percent)/100) * #Quantity
- LET $Full_Name = $First_Name || ’:’ || $Middle_Name || ’:’ || $Last_Name
- LET #Flag = (#Total <= #Salary_Limit) OR (#Total <= #Special_Limit)
Függvény típusú kifejezések esetén a függvény értéke kerül átadásra.
Pl.: LET %Customer = LIST(#Cust_Num, $Cust_Nm, $Cust_Birthdate)