COBOL – UNIT 11

‫‪COBOL – UNIT 11‬‬
‫‪Intrinsic Functions‬‬
‫כל הזכויות שמורות לד‪ .‬מימון – ייעוץ והדרכה במחשבים בע"מ‬
‫‪Intrinsic Functions‬‬
‫ מבוא‬
‫ סוגי הפונקציות‬
‫ סוגי הפרמטרים‬
‫ פונקציות מחרוזת‬
‫ פונקציות סטטיסטיות‬
‫ פונקציות מתימטיות‬
‫ פונקציות תאריכים‬
‫ תרגילים‬
‫‪COBOL – Unit 11‬‬
‫כל הזכויות שמורות לד‪ .‬מימון – ייעוץ והדרכה במחשבים בע"מ‬
‫‪2‬‬
‫‪Intrinsic FUNCTIONs‬‬
‫ ‪ Intrinsic FUNCTIONs‬הם פונקציות פנימיות של‬
‫קובול‪.‬‬
‫ לא מדובר ב‪User defined Functions -‬‬
‫ הפונקציה מחזירה ערך שניתן לשלבו בביטויים‬
‫מתאימים‬
‫‪COBOL – Unit 11‬‬
‫כל הזכויות שמורות לד‪ .‬מימון – ייעוץ והדרכה במחשבים בע"מ‬
‫‪3‬‬
‫‪ - Intrinsic FUNCTIONs‬המשך‬
‫ניתן להשתמש בתוצאה של פונקציה כאחד מהאופרנדים‬
‫של פקודת קובול או כפרמטר לפונקציה אחרת‪.‬‬
‫לא ניתן להשתמש בפונקציה כיעד של חישוב‪.‬‬
‫צורת השימוש‪:‬‬
‫)‪FUNCTION Function-name (Arguments‬‬
‫‪COBOL – Unit 11‬‬
‫כל הזכויות שמורות לד‪ .‬מימון – ייעוץ והדרכה במחשבים בע"מ‬
‫‪4‬‬
‫סוגי הפונקציות‬
‫‪Alphanumeric‬‬
‫< לטיפול במחרוזות‪/‬טקסט‬
‫‪Numeric‬‬
‫< מחזירות ערך עם סימן‪ .‬אפשר להשתמש בהן רק‬
‫בביטויים אריתמטיים‬
‫‪Integer‬‬
‫< ערכים נומריים ללא ‪ V‬ועם סימן‬
‫‪COBOL – Unit 11‬‬
‫כל הזכויות שמורות לד‪ .‬מימון – ייעוץ והדרכה במחשבים בע"מ‬
‫‪5‬‬
‫פרמטרים‬
‫הפרמטרים בתוך הסוגריים יכולים להיות‪:‬‬
‫משתנים )כולל כניסה בטבלה(‬
‫ביטויים אריתמטיים‬
‫קבועים‬
‫מספר הפרמטרים יכול להיות‪:‬‬
‫אפס )סוגריים ריקים(‬
‫אחד )לדוגמה ב‪(SQRT -‬‬
‫יותר מאחד )לדוגמה ב‪(REM -‬‬
‫‪COBOL – Unit 11‬‬
‫כל הזכויות שמורות לד‪ .‬מימון – ייעוץ והדרכה במחשבים בע"מ‬
‫‪6‬‬
‫סוגי הפרמטרים‬
‫‪NUMERIC‬‬
‫‪ALPHABETIC‬‬
‫‪ALPHANUMERIC‬‬
‫שלם‬
‫‪COBOL – Unit 11‬‬
‫כל הזכויות שמורות לד‪ .‬מימון – ייעוץ והדרכה במחשבים בע"מ‬
‫‪7‬‬
‫טבלאות כפרמטר לפונקציה‬
‫כאשר פונקציה מאפשרת ריבוי פרמטרים‪ ,‬ניתן להשתמש ב‪-‬‬
‫‪ ALL‬כדי לציין את כל הכניסות של הטבלה‬
‫אם בטבלה צוין גם ‪ OCCURS...DEPENDING ON‬אז‬
‫מספר הכניסות נקבע ע"י המשתנה שצוין ב‪DEPENDING -‬‬
‫‪ON‬‬
‫דוגמה‪:‬‬
‫= ‪COMPUTE WS10-TOTAL‬‬
‫))‪FUNCTION SUM (TB01-NUM(ALL ALL‬‬
‫‪COBOL – Unit 11‬‬
‫כל הזכויות שמורות לד‪ .‬מימון – ייעוץ והדרכה במחשבים בע"מ‬
‫‪8‬‬
‫פונקציות מחרוזתיות‬
‫הערך המוחזר‬
‫התו הנמצא במיקום ‪int‬‬
‫בטבלת ה‪EBCDIC/ASCII -‬‬
‫אורך המחרוזת‬
‫הפיכת המחרוזת לאותיות‬
‫קטנות‬
‫הפיכת הערך שבפרמטר לנומרי‬
‫מיקום התוו בטבלת ה‪-‬‬
‫‪ASCII/EBCDIC‬‬
‫המחרוזת בסדר הפוך‬
‫הפיכת המחרוזת לאותיות‬
‫גדולות‬
‫‪COBOL – Unit 11‬‬
‫פרמטרים‬
‫סוג הפונקציה‬
‫פונקציה‬
‫‪Alphanumeric‬‬
‫‪int‬‬
‫‪CHAR‬‬
‫‪Integer‬‬
‫‪Alphanumeric‬‬
‫‪any‬‬
‫‪string‬‬
‫‪LENGTH‬‬
‫‪LOWER-CASE‬‬
‫‪Numeric‬‬
‫‪Integer‬‬
‫‪alphanumeric‬‬
‫‪string‬‬
‫‪NUMVAL‬‬
‫‪ORD‬‬
‫‪Alphanumeric‬‬
‫‪Alphanumeric‬‬
‫‪string‬‬
‫‪string‬‬
‫‪REVERSE‬‬
‫‪UPPER-CASE‬‬
‫כל הזכויות שמורות לד‪ .‬מימון – ייעוץ והדרכה במחשבים בע"מ‬
‫‪9‬‬
‫ דוגמאות‬- ‫פונקציות מחרוזתיות‬
MOVE
MOVE FUNCTION
FUNCTION CHAR(FUNCTION
CHAR(FUNCTION ORD('a'))
ORD('a'))
TO
TO WS20-CHAR-X
WS20-CHAR-X
COMPUTE
COMPUTE WS30-ORDENAL-ASCII-POSITION-I
WS30-ORDENAL-ASCII-POSITION-I ==
FUNCTION
FUNCTION ORD
ORD (FUNCTION
(FUNCTION CHAR(61))
CHAR(61))
MOVE
MOVE FUNCTION
FUNCTION LENGTH
LENGTH (WS20-CHAR-X)
(WS20-CHAR-X)
TO
TO CN10-ORIGINAL-VAR-LENGTH
CN10-ORIGINAL-VAR-LENGTH
IF
FUNCTION
IF FUNCTION LOWERCASE(WS20-CHAR-X)=
LOWERCASE(WS20-CHAR-X)= WS20-CHAR-X
WS20-CHAR-X
THEN
THEN
DISPLAY
DISPLAY 'The
'The value
value is
is lowercase'
lowercase'
END-IF
END-IF
IF
IF FUNCTION
FUNCTION UPPERCASE(WS20-CHAR-X)=
UPPERCASE(WS20-CHAR-X)= WS20-CHAR-X
WS20-CHAR-X
THEN
THEN
DISPLAY
DISPLAY 'The
'The value
value is
is Uppercase'
Uppercase'
END-IF
END-IF
COMPUTE
COMPUTE WS01-NUM-N
WS01-NUM-N ==
FUNCTION
FUNCTION NUMVAL(FUNCTION
NUMVAL(FUNCTION REVERSE('12'))
REVERSE('12'))
10
‫ מימון – ייעוץ והדרכה במחשבים בע"מ‬.‫כל הזכויות שמורות לד‬
COBOL – Unit 11
‫פונקציות סטטיסטיות‬
‫הערך המוחזר‬
‫הערך המקסימלי‬
‫ממצוע‬
‫ממוצע של המינימום‬
‫והמקסימום‬
‫ערך מינימלי‬
‫מיקום הערך המקסימלי‬
‫מיקום הערך המינימלי‬
‫ההפרש בין הערך‬
‫המקסימלי לערך‬
‫המינימלי‬
‫סטיית התקן‬
‫סכום הפרמטרים‬
‫שונות‬
‫‪COBOL – Unit 11‬‬
‫סוג‬
‫‪Any‬‬
‫‪Numeric‬‬
‫‪Numeric‬‬
‫פרמטרים‬
‫‪1 or more, any‬‬
‫‪1 or more, num‬‬
‫‪1 or more, num‬‬
‫פונקציה‬
‫‪MAX‬‬
‫‪MEAN‬‬
‫‪MIDRANGE‬‬
‫‪Any‬‬
‫‪Integer‬‬
‫‪Integer‬‬
‫‪Any‬‬
‫‪1 or more, any‬‬
‫‪1 or more, any‬‬
‫‪1 or more, any‬‬
‫‪1 or more,‬‬
‫‪int/num‬‬
‫‪MIN‬‬
‫‪ORD-MAX‬‬
‫‪ORD-MIN‬‬
‫‪RANGE‬‬
‫‪Numeric‬‬
‫‪Numeric‬‬
‫‪Numeric‬‬
‫‪1 or more, num‬‬
‫‪1 or more, num‬‬
‫‪1 or more, num‬‬
‫‪STANDARD-DEVIATION‬‬
‫‪SUM‬‬
‫‪VARIANCE‬‬
‫כל הזכויות שמורות לד‪ .‬מימון – ייעוץ והדרכה במחשבים בע"מ‬
‫‪11‬‬
‫ דוגמאות‬- ‫פונקציות סטטיסטיות‬
COMPUTE WS02-NUM-V99 =
FUNCTION MAX[MIN](WS01-INTEGER TB01NUM(ALL 3))
COMPUTE WS01-INTEGER =
FUNCTION ORD-MAX[ORD-MIN](TB01NAME(ALL ALL))
COMPUTE WS02-NUM-V99 =
FUNCTION MEAN[STANDARDDEVIATION][MEDIAN]
[MIDRANGE][RANGE][SUM][VARIANCE](TB01
-NUM(ALL ALL))
12
‫ מימון – ייעוץ והדרכה במחשבים בע"מ‬.‫כל הזכויות שמורות לד‬
COBOL – Unit 11
‫פונקציות מתימטיות‬
‫פונקציה‬
13
‫פרמטרים‬
‫סוג‬
ACOS
ASIN
ATAN
COS
FACTORIAL
INTEGER
INTEGER-PART
LOG
LOG10
MOD
RANDOM
REM
SIN
1,num
1,num
1,num
1,num
1,int
1,num
1,num
1,num
1,num
2,int1 int2
1,int or none
2,num1 num2
1,num
Numeric
Numeric
Numeric
Numeric
Integer
Integer
Integer
Numeric
Numeric
Integer
Numeric
Numeric
Numeric
SUM
SQRT
TAN
1 or more, int/num
1,num
1,num
Numeric
Numeric
Numeric
‫ מימון – ייעוץ והדרכה במחשבים בע"מ‬.‫כל הזכויות שמורות לד‬
COBOL – Unit 11
‫ דוגמאות‬- ‫פונקציות מתימטיות‬
COMPUTE WS04-INT =
FUNCTION MOD(WS03-NUM-V99
COMPUTE WS02-NUM-V99 =
FUNCTION REM (WS03-INT1
5)
WS04-INT2)
COMPUTE CN01-FACTORIAL =
FUNCTION FACTORIAL (WS01-INTEGER)
COMPUTE WS01-INTEGER =
FUNCTION INTEGER[-PART] (WS02-NUM-V99)
14
‫ מימון – ייעוץ והדרכה במחשבים בע"מ‬.‫כל הזכויות שמורות לד‬
COBOL – Unit 11
‫פונקציות תאריכים‬
‫הלוח הגרגוריאני נבחר לשמש את פונקציות התאריכים‬
‫התאריך ההתחלתי הוא יום שני‪ 1 ,‬ינואר ‪ .1601‬וזהו יום‬
‫מספר ‪.1‬‬
‫כל פונקציות התאריכים מתרגמות את התאריך למספר‬
‫הסידורי שלו בלוח הגרגוריאני‪.‬‬
‫‪COBOL – Unit 11‬‬
‫כל הזכויות שמורות לד‪ .‬מימון – ייעוץ והדרכה במחשבים בע"מ‬
‫‪15‬‬
‫פונקציות תאריכים‬
‫סוג‬
‫הערך המוחזר‬
‫התאריך והזמן הנוכחי‬
‫תרגום מספר לתאריך בצורה ‪YYYYMMDD‬‬
‫תרגום מספר לתאריך בצורה ‪YYYYDDD‬‬
‫תרגום תאריך בצורה ‪ YYYYMMDD‬למספר‬
‫תרגום תאריך בצורה ‪ YYYYDDD‬למספר‬
‫‪COBOL – Unit 11‬‬
‫פרמטרים‬
‫‪Alphanumeric‬‬
‫‪Integer‬‬
‫‪Integer‬‬
‫‪Integer‬‬
‫‪Integer‬‬
‫כל הזכויות שמורות לד‪ .‬מימון – ייעוץ והדרכה במחשבים בע"מ‬
‫‪None‬‬
‫‪1,int‬‬
‫‪1,int‬‬
‫‪1,int‬‬
‫‪1,int‬‬
‫פונקציה‬
‫‪CURRENT-DATE‬‬
‫‪DATE-OF-INTEGER‬‬
‫‪DAY-OF-INTEGER‬‬
‫‪INTEGER-OF-DATE‬‬
‫‪INTEGER-OF-DAY‬‬
‫‪16‬‬
‫ דוגמאות‬- ‫פונקציות תאריכים‬
‫חישוב גיל בימים‬
03 WS01-CURRENT-DATE.
05 WS01-CURRENT-DATE-9
PIC 9(8).
03 WS02-BIRTH-DATE
PIC 9(8) VALUE 19451203.
03 WS03-AGE-IN-DAYS
PIC 9(5).
MOVE FUNCTION CURRENT-DATE TO WS01-CURRENT-DATE
COMPUTE WS03-AGE-IN-DAYS =
FUNCTION INTEGER-OF-DATE(WS01-CURRENT-DATE) –
FUNCTION INTEGER-OF-DATE(WS02-BIRTH-DATE)
17
‫ מימון – ייעוץ והדרכה במחשבים בע"מ‬.‫כל הזכויות שמורות לד‬
COBOL – Unit 11
‫פונקציות תאריכים ‪ -‬המשך‬
‫איך לחשב את היום בשבוע?‬
‫השתמש בשארית החלוקה ב‪7 -‬‬
‫= ‪COMPUTE WS10-DATE-DAY-OF-WEEK‬‬
‫‪FUNCTION REM (FUNCTION INTEGER-OF‬‬‫)‪DATE (WS11-DATE-YYYYMMDD‬‬
‫)‪7‬‬
‫הפונקציה תחזיר‪ 0 :‬עבור יום ראשון‪ 1 ,‬עבור יום שני‪...‬‬
‫‪COBOL – Unit 11‬‬
‫כל הזכויות שמורות לד‪ .‬מימון – ייעוץ והדרכה במחשבים בע"מ‬
‫‪18‬‬
‫תרגילים‬
‫‪ .1‬הפרש בין תאריכים‬
‫חשב את ההפרש בין שני תאריכים‬
‫‪ .2‬הוספת ימים לתאריך‬
‫חשב את התאריך המתקבל ע"י הוספת מספר ימים‬
‫לתאריך נתון‬
‫‪COBOL – Unit 11‬‬
‫כל הזכויות שמורות לד‪ .‬מימון – ייעוץ והדרכה במחשבים בע"מ‬
‫‪19‬‬