Function (computer programming)
ಕಂಪ್ಯೂಟರ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ನಲ್ಲಿ, ಫಂಕ್ಷನ್ ಅಥವಾ ಸಬ್ ರುಟೀನ್ ಎನ್ನುವುದು ಒಂದು ನಿರ್ದಿಷ್ಟ ಕಾರ್ಯವನ್ನು ನಿರ್ವಹಿಸುವ ಪ್ರೋಗ್ರಾಂ ಸೂಚನೆಗಳ ಸರಣಿಯಾಗಿದ್ದು, ಇದನ್ನು ಒಂದು ಘಟಕವಾಗಿ ಪ್ಯಾಕೇಜ್ ಮಾಡಲಾಗಿದೆ. ಈ ಘಟಕವನ್ನು ನಂತರ ಆ ನಿರ್ದಿಷ್ಟ ಕಾರ್ಯವನ್ನು ನಿರ್ವಹಿಸಬೇಕಾದ ಎಲ್ಲೆಲ್ಲಿ ಕಾರ್ಯಕ್ರಮಗಳಲ್ಲಿ ಬಳಸಬಹುದು. ಕಾರ್ಯಗಳನ್ನು ಕಾರ್ಯಕ್ರಮಗಳಲ್ಲಿ ಅಥವಾ ಅನೇಕ ಕಾರ್ಯಕ್ರಮಗಳಿಂದ ಬಳಸಬಹುದಾದ ಗ್ರಂಥಾಲಯಗಳಲ್ಲಿ ಪ್ರತ್ಯೇಕವಾಗಿ ವ್ಯಾಖ್ಯಾನಿಸಬಹುದು. ವಿವಿಧ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗಳಲ್ಲಿ, ಒಂದು ಕಾರ್ಯವನ್ನು ವಾಡಿಕೆಯ, ಉಪಪ್ರೋಗ್ರಾಮ್, ಉಪಪ್ರೋಗ್ರಾಮ್ ಅಥವಾ ಕಾರ್ಯವಿಧಾನ ಎಂದು ಕರೆಯಬಹುದು; ಆಬ್ಜೆಕ್ಟ್-ಓರಿಯೆಂಟೆಡ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ (ಒಒಪಿ) ನಲ್ಲಿ, ಇದನ್ನು ವಿಧಾನ ಎಂದು ಕರೆಯಬಹುದು. ತಾಂತ್ರಿಕವಾಗಿ, ಈ ಪದಗಳೆಲ್ಲವೂ ವಿಭಿನ್ನ ವ್ಯಾಖ್ಯಾನಗಳನ್ನು ಹೊಂದಿವೆ, ಮತ್ತು ನಾಮಕರಣವು ಭಾಷೆಯಿಂದ ಭಾಷೆಗೆ ಬದಲಾಗುತ್ತದೆ. ಸಾರ್ವತ್ರಿಕ ಛತ್ರಿ ಪದವಾದ ಕರೆಯಬಹುದಾದ ಘಟಕವನ್ನು ಕೆಲವೊಮ್ಮೆ ಬಳಸಲಾಗುತ್ತದೆ. ಒಂದು ಕಾರ್ಯವನ್ನು ಅನೇಕವೇಳೆ ಕೋಡ್ ಮಾಡಲಾಗುತ್ತದೆ, ಇದರಿಂದಾಗಿ ಅದನ್ನು ಹಲವಾರು ಬಾರಿ ಪ್ರಾರಂಭಿಸಬಹುದು ಮತ್ತು ಇತರ ಕಾರ್ಯಗಳನ್ನು ಒಳಗೊಂಡಂತೆ ಪ್ರೋಗ್ರಾಂನ ಒಂದು ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯ ಸಮಯದಲ್ಲಿ ಹಲವಾರು ಸ್ಥಳಗಳಿಂದ ಪ್ರಾರಂಭಿಸಬಹುದು, ಮತ್ತು ನಂತರ ಕರೆಯ ನಂತರ ಮುಂದಿನ ಸೂಚನೆಗೆ ಶಾಖೆಯನ್ನು ಹಿಂತಿರುಗಿಸಬಹುದು (ಹಿಂತಿರುಗಿ), ಕಾರ್ಯದ ಕಾರ್ಯವು ಮುಗಿದ ನಂತರ. ಜಾನ್ ಮೌಚ್ಲಿ ಮತ್ತು ಕ್ಯಾಥ್ಲೀನ್ ಆಂಟೊನೆಲ್ಲಿ ಅವರು ಇ. ಎನ್. ಐ. ಎ. ಸಿ. ಯಲ್ಲಿ ತಮ್ಮ ಕೆಲಸದ ಸಮಯದಲ್ಲಿ ಸಬ್ರುಟೈನ್ನ ಕಲ್ಪನೆಯನ್ನು ಆರಂಭದಲ್ಲಿ ರೂಪಿಸಿದರು ಮತ್ತು ಜನವರಿ 1947ರ ಹಾರ್ವರ್ಡ್ ವಿಚಾರ ಸಂಕಿರಣದಲ್ಲಿ "ಇ. ಡಿ. ವಿ. ಎ. ಸಿ.-ರೀತಿಯ ಯಂತ್ರಗಳಿಗೆ ಸಮಸ್ಯೆಗಳ ಸಿದ್ಧತೆ" ಎಂಬ ವಿಷಯದ ಮೇಲೆ ಧ್ವನಿಮುದ್ರಣ ಮಾಡಿದರು. ಮಾರಿಸ್ ವಿಲ್ಕ್ಸ್, ಡೇವಿಡ್ ವೀಲರ್ ಮತ್ತು ಸ್ಟಾನ್ಲಿ ಗಿಲ್ ಅವರು ಸಾಮಾನ್ಯವಾಗಿ ಈ ಪರಿಕಲ್ಪನೆಯ ಔಪಚಾರಿಕ ಆವಿಷ್ಕಾರಕ್ಕೆ ಹೆಸರುವಾಸಿಯಾಗಿದ್ದಾರೆ, ಇದನ್ನು ಅವರು ಮುಚ್ಚಿದ ಉಪ-ವಾಡಿಕೆಯೆಂದು ಕರೆದರು, ಇದು ತೆರೆದ ಉಪ-ವಾಡಿಕೆಯ ಅಥವಾ ಮ್ಯಾಕ್ರೋಕ್ಕೆ ವ್ಯತಿರಿಕ್ತವಾಗಿದೆ. ಆದಾಗ್ಯೂ, ಅಲನ್ ಟ್ಯೂರಿಂಗ್ 1945ರ ಒಂದು ಪ್ರಬಂಧದಲ್ಲಿ ಎನ್. ಪಿ. ಎಲ್. ಎಸಿ. ಇ. ಯ ವಿನ್ಯಾಸ ಪ್ರಸ್ತಾಪಗಳ ಬಗ್ಗೆ ಉಪ-ರೂಢಿಗಳನ್ನು ಚರ್ಚಿಸಿದ್ದರು, ಇದು ರಿಟರ್ನ್ ಅಡ್ರೆಸ್ ಸ್ಟಾಕ್ನ ಪರಿಕಲ್ಪನೆಯನ್ನು ಕಂಡುಹಿಡಿಯುವವರೆಗೆ ಹೋಗುತ್ತದೆ. ಕಾರ್ಯಗಳು ಪ್ರಬಲವಾದ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಸಾಧನವಾಗಿದೆ, ಮತ್ತು ಅನೇಕ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗಳ ವಾಕ್ಯರಚನೆಯು ಸಬ್ರುಟೈನ್ಗಳನ್ನು ಬರೆಯಲು ಮತ್ತು ಬಳಸಲು ಬೆಂಬಲವನ್ನು ಒಳಗೊಂಡಿದೆ. ಕಾರ್ಯಗಳ ವಿವೇಕಯುತ ಬಳಕೆಯು (ಉದಾಹರಣೆಗೆ, ರಚನಾತ್ಮಕ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ವಿಧಾನದ ಮೂಲಕ) ದೊಡ್ಡ ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸುವ ಮತ್ತು ನಿರ್ವಹಿಸುವ ವೆಚ್ಚವನ್ನು ಗಣನೀಯವಾಗಿ ಕಡಿಮೆ ಮಾಡುತ್ತದೆ, ಜೊತೆಗೆ ಅದರ ಗುಣಮಟ್ಟ ಮತ್ತು ವಿಶ್ವಾಸಾರ್ಹತೆಯನ್ನು ಹೆಚ್ಚಿಸುತ್ತದೆ. ಕಾರ್ಯಗಳು, ಸಾಮಾನ್ಯವಾಗಿ ಗ್ರಂಥಾಲಯಗಳಲ್ಲಿ ಸಂಗ್ರಹಿಸಲ್ಪಡುತ್ತವೆ, ಸಾಫ್ಟ್ವೇರ್ ಅನ್ನು ಹಂಚಿಕೊಳ್ಳಲು ಮತ್ತು ವ್ಯಾಪಾರ ಮಾಡಲು ಒಂದು ಪ್ರಮುಖ ಕಾರ್ಯವಿಧಾನವಾಗಿದೆ. ಓ. ಓ. ಪಿ. ಯ ವಿಭಾಗವು ವಸ್ತುಗಳು ಮತ್ತು ವಿಧಾನಗಳನ್ನು ಆಧರಿಸಿದೆ (ಇವು ಈ ವಸ್ತುಗಳು ಅಥವಾ ವಸ್ತು ವರ್ಗಗಳಿಗೆ ಜೋಡಿಸಲಾದ ಕಾರ್ಯಗಳಾಗಿವೆ). ಮುಖ್ಯ ಪರಿಕಲ್ಪನೆಗಳು ಒಂದು ಕಾರ್ಯದ ವಿಷಯವು ಅದರ ದೇಹವಾಗಿದೆ, ಇದು ಕಾರ್ಯವನ್ನು ಕರೆಯುವಾಗ ಅಥವಾ ಆಹ್ವಾನಿಸಿದಾಗ ಕಾರ್ಯಗತಗೊಳ್ಳುವ ಪ್ರೋಗ್ರಾಂ ಕೋಡ್ನ ತುಣುಕು. ಕರೆ ಮಾಡುವ ಪ್ರೋಗ್ರಾಂನಿಂದ (ಅದರ ನಿಯತಾಂಕಗಳನ್ನು ಅಥವಾ ಔಪಚಾರಿಕ ನಿಯತಾಂಕಗಳನ್ನು ಬದಲಿಸಲು) ಒಂದು ಅಥವಾ ಹೆಚ್ಚಿನ ದತ್ತಾಂಶ ಮೌಲ್ಯಗಳನ್ನು ಪಡೆಯುವ ನಿರೀಕ್ಷೆಯಿರುವಂತೆ ಒಂದು ಕಾರ್ಯವನ್ನು ಬರೆಯಬಹುದು. ಕರೆ ಮಾಡುವ ಪ್ರೋಗ್ರಾಂ ಈ ನಿಯತಾಂಕಗಳಿಗೆ ನಿಜವಾದ ಮೌಲ್ಯಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ, ಇದನ್ನು ಆರ್ಗ್ಯುಮೆಂಟ್ಗಳು ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ವಾದಗಳನ್ನು ರವಾನಿಸಲು ವಿವಿಧ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗಳು ವಿಭಿನ್ನ ಸಂಪ್ರದಾಯಗಳನ್ನು ಬಳಸಬಹುದುಃ ಒಂದು ಫಂಕ್ಷನ್ ಕರೆ ಕಂಪ್ಯೂಟರ್ ಮೆಮೊರಿಯಲ್ಲಿ ಡೇಟಾ ರಚನೆಗಳನ್ನು ಮಾರ್ಪಡಿಸುವುದು, ಬಾಹ್ಯ ಸಾಧನದಿಂದ ಓದುವುದು ಅಥವಾ ಬರೆಯುವುದು, ಫೈಲ್ ಅನ್ನು ರಚಿಸುವುದು, ಪ್ರೋಗ್ರಾಂ ಅಥವಾ ಯಂತ್ರವನ್ನು ನಿಲ್ಲಿಸುವುದು, ಅಥವಾ ನಿರ್ದಿಷ್ಟ ಸಮಯದವರೆಗೆ ಪ್ರೋಗ್ರಾಂನ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯನ್ನು ವಿಳಂಬಗೊಳಿಸುವಂತಹ ಅಡ್ಡಪರಿಣಾಮಗಳನ್ನು ಸಹ ಹೊಂದಿರಬಹುದು. ಅಡ್ಡಪರಿಣಾಮಗಳನ್ನು ಹೊಂದಿರುವ ಉಪಪ್ರೋಗ್ರಾಮ್ ಅನ್ನು ಅದೇ ವಾದಗಳೊಂದಿಗೆ ಕರೆದರೂ ಸಹ, ಅದನ್ನು ಕರೆಯುವಾಗಲೆಲ್ಲಾ ವಿಭಿನ್ನ ಫಲಿತಾಂಶಗಳನ್ನು ನೀಡಬಹುದು. ಒಂದು ಉದಾಹರಣೆಯೆಂದರೆ ಯಾದೃಚ್ಛಿಕ ಸಂಖ್ಯೆ ಕಾರ್ಯ, ಇದು ಅನೇಕ ಭಾಷೆಗಳಲ್ಲಿ ಲಭ್ಯವಿದೆ, ಇದು ಪ್ರತಿ ಬಾರಿ ಕರೆ ಮಾಡಿದಾಗ ಬೇರೆ ಬೇರೆ ಹುಸಿ-ಯಾದೃಚ್ಛಿಕ ಸಂಖ್ಯೆಯನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ. ಅಡ್ಡಪರಿಣಾಮಗಳೊಂದಿಗೆ ಕಾರ್ಯಗಳ ವ್ಯಾಪಕ ಬಳಕೆಯು ಅನಿವಾರ್ಯ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗಳ ಲಕ್ಷಣವಾಗಿದೆ. ಒಂದು ಕಾರ್ಯವನ್ನು ಕೋಡ್ ಮಾಡಬಹುದು, ಇದರಿಂದಾಗಿ ಅದು ತನ್ನ ಕಾರ್ಯವನ್ನು ನಿರ್ವಹಿಸಲು ಒಂದು ಅಥವಾ ಹೆಚ್ಚಿನ ಸ್ಥಳಗಳಲ್ಲಿ ಪುನರಾವರ್ತಿತವಾಗಿ ಕರೆದುಕೊಳ್ಳಬಹುದು. ಈ ವಿಧಾನವು ಗಣಿತದ ಪ್ರಚೋದನೆ ಮತ್ತು ಪುನರಾವರ್ತಿತ ವಿಭಜನೆ ಮತ್ತು ವಶಪಡಿಸಿಕೊಳ್ಳುವ ಕ್ರಮಾವಳಿಗಳಿಂದ ವ್ಯಾಖ್ಯಾನಿಸಲಾದ ಕಾರ್ಯಗಳ ನೇರ ಅನುಷ್ಠಾನಕ್ಕೆ ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ. ಒಂದು ಬೂಲಿಯನ್-ಮೌಲ್ಯದ ಕಾರ್ಯವನ್ನು (ಅಂದರೆ, ಹೌದು/ಇಲ್ಲ ಎಂಬ ಪ್ರಶ್ನೆಗೆ ಉತ್ತರಿಸುವುದು) ಲೆಕ್ಕಾಚಾರ ಮಾಡುವ ಉದ್ದೇಶವನ್ನು ಹೊಂದಿರುವ ಕಾರ್ಯವನ್ನು ಕೆಲವೊಮ್ಮೆ ಪ್ರಿಡಿಕೇಟ್ ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ತರ್ಕ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗಳಲ್ಲಿ, ಸಾಮಾನ್ಯವಾಗಿ ಎಲ್ಲಾ ಕಾರ್ಯಗಳನ್ನು ಮುನ್ಸೂಚನೆಗಳು ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ, ಏಕೆಂದರೆ ಅವು ಪ್ರಾಥಮಿಕವಾಗಿ ಯಶಸ್ಸು ಅಥವಾ ವೈಫಲ್ಯವನ್ನು ನಿರ್ಧರಿಸುತ್ತವೆ. ಯಾವುದೇ ಮೌಲ್ಯವನ್ನು ಹಿಂದಿರುಗಿಸದ ಅಥವಾ ಶೂನ್ಯ ಮೌಲ್ಯವನ್ನು ಹಿಂದಿರುಗಿಸುವ ಕಾರ್ಯವನ್ನು ಕೆಲವೊಮ್ಮೆ ಕಾರ್ಯವಿಧಾನ ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ಕಾರ್ಯವಿಧಾನಗಳು ಸಾಮಾನ್ಯವಾಗಿ ತಮ್ಮ ವಾದಗಳನ್ನು ಮಾರ್ಪಡಿಸುತ್ತವೆ ಮತ್ತು ಕಾರ್ಯವಿಧಾನದ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ನ ಪ್ರಮುಖ ಭಾಗವಾಗಿದೆ. ಪರಿಭಾಷೆಯು ಒಂದು ಮೌಲ್ಯವನ್ನು ಹಿಂದಿರುಗಿಸದ ಕಾರ್ಯವಾಗಿದೆ. ಸಂಕೀರ್ಣವಾದ ಗಣನೆಗಳನ್ನು ಅರ್ಥಪೂರ್ಣ ಭಾಗಗಳಾಗಿ ವಿಂಗಡಿಸುವುದು ಮತ್ತು ಅವುಗಳನ್ನು ಹೆಸರಿಸುವುದು ಕಾರ್ಯಗಳ ಪ್ರಾಥಮಿಕ ಉದ್ದೇಶವಾಗಿದೆ. ಕಾರ್ಯವು ಅದರ ಕರೆಗಾರನಿಗೆ (ಅದರ ರಿಟರ್ನ್ ಮೌಲ್ಯ) ಗಣನೆಯ ಮೌಲ್ಯವನ್ನು ಹಿಂದಿರುಗಿಸಬಹುದು, ಅಥವಾ ವಿವಿಧ ಫಲಿತಾಂಶದ ಮೌಲ್ಯಗಳು ಅಥವಾ ಔಟ್ಪುಟ್ ನಿಯತಾಂಕಗಳನ್ನು ಒದಗಿಸಬಹುದು. ವಾಸ್ತವವಾಗಿ, ಕಾರ್ಯಗಳ ಸಾಮಾನ್ಯ ಬಳಕೆಯು ಗಣಿತದ ಕಾರ್ಯಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವುದಾಗಿದೆ, ಇದರಲ್ಲಿ ಕಾರ್ಯದ ಉದ್ದೇಶವು ಕೇವಲ ಒಂದು ಅಥವಾ ಹೆಚ್ಚಿನ ಫಲಿತಾಂಶಗಳನ್ನು ಲೆಕ್ಕಾಚಾರ ಮಾಡುವುದು, ಅದರ ಮೌಲ್ಯಗಳನ್ನು ಕಾರ್ಯಕ್ಕೆ ರವಾನಿಸಲಾದ ವಾದಗಳಿಂದ ಸಂಪೂರ್ಣವಾಗಿ ನಿರ್ಧರಿಸಲಾಗುತ್ತದೆ. (ಉದಾಹರಣೆಗಳು ಒಂದು ಸಂಖ್ಯೆಯ ಲಾಗರಿಥಮ್ ಅಥವಾ ಮ್ಯಾಟ್ರಿಕ್ಸ್ನ ನಿರ್ಣಾಯಕವನ್ನು ಲೆಕ್ಕಾಚಾರ ಮಾಡುವುದನ್ನು ಒಳಗೊಂಡಿರಬಹುದು.) ಕೆಲವು ಭಾಷೆಗಳಲ್ಲಿ ಒಂದು ಮೌಲ್ಯವನ್ನು ಹಿಂದಿರುಗಿಸುವ ಕಾರ್ಯವಿಧಾನದ ವಾಕ್ಯರಚನೆಯು ಮೂಲಭೂತವಾಗಿ ಒಂದು ಮೌಲ್ಯವನ್ನು ಹಿಂದಿರುಗಿಸದ ಕಾರ್ಯವಿಧಾನದ ವಾಕ್ಯರಚನೆಯಂತೆಯೇ ಇರುತ್ತದೆ, ಉದಾಹರಣೆಗೆ, ರಿಟರ್ನ್ಸ್ ಷರತ್ತಿನ ಅನುಪಸ್ಥಿತಿಯನ್ನು ಹೊರತುಪಡಿಸಿ. ಕೆಲವು ಭಾಷೆಗಳಲ್ಲಿ ಒಂದು ಕಾರ್ಯವಿಧಾನವು ಅದರ ವಾದಗಳನ್ನು ಅವಲಂಬಿಸಿ ಮೌಲ್ಯದೊಂದಿಗೆ ಅಥವಾ ಇಲ್ಲದೆ ಮರಳಲು ಕ್ರಿಯಾತ್ಮಕವಾಗಿ ಆಯ್ಕೆ ಮಾಡಬಹುದು. ಭಾಷಾ ಬೆಂಬಲ ಉನ್ನತ ಮಟ್ಟದ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗಳು ಸಾಮಾನ್ಯವಾಗಿ ನಿರ್ದಿಷ್ಟ ರಚನೆಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತವೆಃ ಕಾರ್ಯವನ್ನು ರೂಪಿಸುವ ಪ್ರೋಗ್ರಾಂ (ಬಾಡಿ) ನ ಭಾಗವನ್ನು ವಿಂಗಡಿಸಿ ಕಾರ್ಯಕ್ಕೆ ಗುರುತಿಸುವ (ಹೆಸರನ್ನು) ನಿಯೋಜಿಸಿ ಅದರ ನಿಯತಾಂಕಗಳು ಮತ್ತು ರಿಟರ್ನ್ ಮೌಲ್ಯಗಳ ಹೆಸರುಗಳು ಮತ್ತು ಡೇಟಾ ಪ್ರಕಾರಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಿ ಅದರ ತಾತ್ಕಾಲಿಕ ಅಸ್ಥಿರಗಳಿಗೆ ಖಾಸಗಿ ಹೆಸರಿಸುವ ವ್ಯಾಪ್ತಿಯನ್ನು ಒದಗಿಸಿ ಅದರೊಳಗೆ ಪ್ರವೇಶಿಸಬಹುದಾದ ಕಾರ್ಯದ ಹೊರಗಿನ ಅಸ್ಥಿರಗಳನ್ನು ಗುರುತಿಸಿ ಕಾರ್ಯಕ್ಕೆ ಕರೆ ಮಾಡಿ ಅದರ ನಿಯತಾಂಕಗಳಿಗೆ ಮೌಲ್ಯಗಳನ್ನು ಒದಗಿಸಿ ಮುಖ್ಯ ಪ್ರೋಗ್ರಾಂ ಅದರ ಮುಖ್ಯ ಪ್ರೋಗ್ರಾಂನಲ್ಲಿನ ಫಂಕ್ಷನ್ ಕರೆಯ ಮುಂದಿನ ಸೂಚನೆಯ ವಿಳಾಸವನ್ನು ಹೊಂದಿರುತ್ತದೆ ಅದರ ದೇಹದಿಂದ ರಿಟರ್ನ್ ಮೌಲ್ಯಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಿ ಕರೆ ಮಾಡುವ ಪ್ರೋಗ್ರಾಂಗೆ ಹಿಂತಿರುಗಿ ಕರೆ ಪ್ಯಾಕೇಜ್ ಕಾರ್ಯಗಳ ಸಮಯದಲ್ಲಿ ಎದುರಾಗುವ ಯಾವುದೇ ಅಸಾಧಾರಣ ಪರಿಸ್ಥಿತಿಗಳನ್ನು ಮಾಡ್ಯೂಲ್, ಲೈಬ್ರರಿ, ಆಬ್ಜೆಕ್ಟ್ಗೆ ಹಿಂತಿರುಗಿಸಿ. ಆ ಭಾಷೆಗಳಲ್ಲಿ, ಫಂಕ್ಷನ್ ಕರೆಗಳನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ಅಭಿವ್ಯಕ್ತಿಗಳಲ್ಲಿ ಹುದುಗಿಸಲಾಗುತ್ತದೆ (ಉದಾಹರಣೆಗೆ, ಒಂದು sqrt ಕಾರ್ಯವನ್ನು y = z + sqrt (x) ಎಂದು ಕರೆಯಬಹುದು). ಕಾರ್ಯವಿಧಾನದ ಕರೆಗಳು ವಾಕ್ಯರಚನೆಯಲ್ಲಿ ಹೇಳಿಕೆಗಳಂತೆ ವರ್ತಿಸುತ್ತವೆ (ಉದಾಹರಣೆಗೆ, ಮುದ್ರಣ ಪ್ರಕ್ರಿಯೆಯನ್ನು x> 0 ಎಂದು ಕರೆಯಬಹುದು, ನಂತರ ಮುದ್ರಣ (x) ಎಂದು ಕರೆಯಬಹುದು ಅಥವಾ ಕರೆ ಅಥವಾ GOSUB (ಉದಾಹರಣೆಗೆ, ಕರೆ ಮುದ್ರಣ (x)) ನಂತಹ ಹೇಳಿಕೆಯಿಂದ ಸ್ಪಷ್ಟವಾಗಿ ಆಹ್ವಾನಿಸಲಾಗುತ್ತದೆ. ಸಿ ಮತ್ತು ಲಿಸ್ಪ್ನಂತಹ ಇತರ ಭಾಷೆಗಳು ಕಾರ್ಯಗಳು ಮತ್ತು ಸಬ್ರುಟೈನ್ಗಳ ನಡುವೆ ವ್ಯತ್ಯಾಸವನ್ನು ತೋರಿಸುವುದಿಲ್ಲ. ಹ್ಯಾಸ್ಕೆಲ್ನಂತಹ ಕಟ್ಟುನಿಟ್ಟಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುವ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗಳಲ್ಲಿ, ಉಪಪ್ರೋಗ್ರಾಮ್ಗಳು ಯಾವುದೇ ಅಡ್ಡಪರಿಣಾಮಗಳನ್ನು ಹೊಂದಿರುವುದಿಲ್ಲ, ಅಂದರೆ ಪ್ರೋಗ್ರಾಂನ ವಿವಿಧ ಆಂತರಿಕ ಸ್ಥಿತಿಗಳು ಬದಲಾಗುವುದಿಲ್ಲ. ಅದೇ ವಾದಗಳೊಂದಿಗೆ ಪದೇ ಪದೇ ಕರೆ ಮಾಡಿದರೆ ಕಾರ್ಯಗಳು ಯಾವಾಗಲೂ ಅದೇ ಫಲಿತಾಂಶವನ್ನು ನೀಡುತ್ತವೆ. ಅಂತಹ ಭಾಷೆಗಳು ಸಾಮಾನ್ಯವಾಗಿ ಮೌಲ್ಯವನ್ನು ಹಿಂದಿರುಗಿಸುವ ಕಾರ್ಯಗಳನ್ನು ಮಾತ್ರ ಬೆಂಬಲಿಸುತ್ತವೆ, ಏಕೆಂದರೆ ಮೌಲ್ಯವನ್ನು ಹಿಂದಿರುಗಿಸದ ಕಾರ್ಯಗಳು ಅಡ್ಡಪರಿಣಾಮವನ್ನು ಉಂಟುಮಾಡದ ಹೊರತು ಯಾವುದೇ ಪ್ರಯೋಜನವನ್ನು ಹೊಂದಿರುವುದಿಲ್ಲ. ಸಿ, ಸಿ + + ಮತ್ತು ಸಿ #ನಂತಹ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗಳಲ್ಲಿ, ಮೌಲ್ಯವನ್ನು ಹಿಂದಿರುಗಿಸುವ ಕಾರ್ಯಗಳು ಮತ್ತು ಯಾವುದೇ ಮೌಲ್ಯವನ್ನು ಹಿಂದಿರುಗಿಸದ ಕಾರ್ಯಗಳನ್ನು "ಕಾರ್ಯಗಳು" ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ (ಗಣಿತದ ಕಾರ್ಯಗಳು ಅಥವಾ ವಿಭಿನ್ನ ಪರಿಕಲ್ಪನೆಗಳಾದ ಕ್ರಿಯಾತ್ಮಕ ಪ್ರೋಗ್ರಾಮಿಂಗ್ಗಳೊಂದಿಗೆ ಗೊಂದಲಕ್ಕೀಡಾಗಬಾರದು). ಒಂದು ಭಾಷೆಯ ಕಂಪೈಲರ್ ಸಾಮಾನ್ಯವಾಗಿ ಕಾರ್ಯವಿಧಾನದ ಕರೆಗಳನ್ನು ಭಾಷಾಂತರಿಸುತ್ತದೆ ಮತ್ತು ಉತ್ತಮವಾಗಿ ವ್ಯಾಖ್ಯಾನಿಸಲಾದ ಕರೆ ಸಂಪ್ರದಾಯಕ್ಕೆ ಅನುಗುಣವಾಗಿ ಯಂತ್ರ ಸೂಚನೆಗಳಾಗಿ ಹಿಂದಿರುಗುತ್ತದೆ, ಇದರಿಂದಾಗಿ ಕಾರ್ಯಗಳನ್ನು ಅವುಗಳನ್ನು ಕರೆಯುವ ಪ್ರೋಗ್ರಾಂಗಳಿಂದ ಪ್ರತ್ಯೇಕವಾಗಿ ಸಂಕಲಿಸಬಹುದು. ಕರೆ ಮತ್ತು ರಿಟರ್ನ್ ಹೇಳಿಕೆಗಳಿಗೆ ಅನುಗುಣವಾದ ಸೂಚನಾ ಅನುಕ್ರಮಗಳನ್ನು ಕಾರ್ಯವಿಧಾನದ ಪೀಠಿಕೆ ಮತ್ತು ಉಪಸಂಹಾರ ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ಫಂಕ್ಷನ್ಗಳಾಗಿ ವಿಭಜಿಸುವ ಪ್ರಯೋಜನಗಳೆಂದರೆಃ ಸಂಕೀರ್ಣ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಕಾರ್ಯವನ್ನು ಸರಳ ಹಂತಗಳಾಗಿ ವಿಂಗಡಿಸುವುದುಃ ದತ್ತಾಂಶ ರಚನೆಗಳೊಂದಿಗೆ ರಚನಾತ್ಮಕ ಪ್ರೋಗ್ರಾಮಿಂಗ್ನ ಎರಡು ಪ್ರಮುಖ ಸಾಧನಗಳಲ್ಲಿ ಇದು ಒಂದಾಗಿದೆ, ಪ್ರೋಗ್ರಾಂನೊಳಗೆ ನಕಲಿ ಕೋಡ್ ಅನ್ನು ಕಡಿಮೆ ಮಾಡುವುದು ಅನೇಕ ಪ್ರೋಗ್ರಾಂಗಳಲ್ಲಿ ಕೋಡ್ ಅನ್ನು ಮರುಬಳಕೆ ಮಾಡಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ ವಿವಿಧ ಪ್ರೋಗ್ರಾಮರ್ಗಳ ನಡುವೆ ಅಥವಾ ಯೋಜನೆಯ ವಿವಿಧ ಹಂತಗಳಲ್ಲಿ ದೊಡ್ಡ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಕಾರ್ಯವನ್ನು ವಿಭಜಿಸುವುದು ಕಾರ್ಯದ ಬಳಕೆದಾರರಿಂದ ಅನುಷ್ಠಾನದ ವಿವರಗಳನ್ನು ಮರೆಮಾಡುವುದು ಕೋಡ್ನ ಬ್ಲಾಕ್ ಅನ್ನು ಫಂಕ್ಷನ್ ಕರೆಯೊಂದಿಗೆ ಬದಲಾಯಿಸುವ ಮೂಲಕ ಕೋಡ್ನ ಓದುವಿಕೆಯನ್ನು ಸುಧಾರಿಸುವುದು, ಅಲ್ಲಿ ವಿವರಣಾತ್ಮಕ ಕಾರ್ಯದ ಹೆಸರು ಕೋಡ್ನ ಬ್ಲಾಕ್ ಅನ್ನು ವಿವರಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ. ಫಂಕ್ಷನ್ ಅನ್ನು ಮರುಬಳಕೆ ಮಾಡಲು ಉದ್ದೇಶಿಸದಿದ್ದರೂ ಸಹ ಇದು ಕರೆ ಕೋಡ್ ಅನ್ನು ಸಂಕ್ಷಿಪ್ತವಾಗಿ ಮತ್ತು ಓದುವಂತೆ ಮಾಡುತ್ತದೆ. ಪತ್ತೆಹಚ್ಚುವಿಕೆಯನ್ನು ಸುಧಾರಿಸುವುದು (ಅಂದರೆ. ಹೆಚ್ಚಿನ ಭಾಷೆಗಳು ಕರೆ ಟ್ರೇಸ್ ಅನ್ನು ಪಡೆಯುವ ಮಾರ್ಗಗಳನ್ನು ಒದಗಿಸುತ್ತವೆ, ಇದರಲ್ಲಿ ಒಳಗೊಂಡಿರುವ ಕಾರ್ಯಗಳ ಹೆಸರುಗಳು ಮತ್ತು ಬಹುಶಃ ಕಡತದ ಹೆಸರುಗಳು ಮತ್ತು ಸಾಲಿನ ಸಂಖ್ಯೆಗಳಂತಹ ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗಳು ಸೇರಿವೆ); ಕೋಡ್ ಅನ್ನು ಕಾರ್ಯಗಳಾಗಿ ವಿಭಜಿಸದಿರುವ ಮೂಲಕ, ಡೀಬಗ್ ಮಾಡುವುದು ತೀವ್ರವಾಗಿ ದುರ್ಬಲಗೊಳ್ಳುತ್ತದೆ ಅನಾನುಕೂಲಗಳು ಇನ್-ಲೈನ್ ಕೋಡ್ ಅನ್ನು ಬಳಸುವುದಕ್ಕೆ ಹೋಲಿಸಿದರೆ, ಕಾರ್ಯವನ್ನು ಆಹ್ವಾನಿಸುವುದು ಕರೆ ಕಾರ್ಯವಿಧಾನದಲ್ಲಿ ಕೆಲವು ಕಂಪ್ಯೂಟೇಶನಲ್ ಓವರ್ಹೆಡ್ ಅನ್ನು ವಿಧಿಸುತ್ತದೆ. ಒಂದು ಫಂಕ್ಷನ್ಗೆ ಸಾಮಾನ್ಯವಾಗಿ ಪ್ರಮಾಣಿತ ಹೌಸ್ ಕೀಪಿಂಗ್ ಕೋಡ್ ಅಗತ್ಯವಿರುತ್ತದೆ-ಫಂಕ್ಷನ್ಗೆ ಪ್ರವೇಶಿಸುವಾಗ ಮತ್ತು ನಿರ್ಗಮಿಸುವಾಗ (ಫಂಕ್ಷನ್ ಪೀಠಿಕೆ ಮತ್ತು ಉಪಸಂಹಾರ-ಸಾಮಾನ್ಯವಾಗಿ ಸಾಮಾನ್ಯ ಉದ್ದೇಶದ ರೆಜಿಸ್ಟರ್ಗಳನ್ನು ಮತ್ತು ರಿಟರ್ನ್ ವಿಳಾಸವನ್ನು ಕನಿಷ್ಠವಾಗಿ ಉಳಿಸುತ್ತದೆ). ಇತಿಹಾಸ ಕಂಪ್ಯೂಟಿಂಗ್ ಯಂತ್ರಗಳು ಈಗಾಗಲೇ ಸ್ವಲ್ಪ ಸಮಯದವರೆಗೆ ಅಸ್ತಿತ್ವದಲ್ಲಿದ್ದ ನಂತರ ಸಬ್ರುಟೈನ್ನ ಕಲ್ಪನೆಯನ್ನು ರೂಪಿಸಲಾಯಿತು. ಅಂಕಗಣಿತ ಮತ್ತು ಷರತ್ತುಬದ್ಧ ಜಿಗಿತದ ಸೂಚನೆಗಳನ್ನು ಸಮಯಕ್ಕಿಂತ ಮುಂಚಿತವಾಗಿ ಯೋಜಿಸಲಾಗಿತ್ತು ಮತ್ತು ತುಲನಾತ್ಮಕವಾಗಿ ಕಡಿಮೆ ಬದಲಾಗಿದೆ, ಆದರೆ ಕಾರ್ಯವಿಧಾನದ ಕರೆಗಳಿಗೆ ಬಳಸುವ ವಿಶೇಷ ಸೂಚನೆಗಳು ವರ್ಷಗಳಲ್ಲಿ ಬಹಳವಾಗಿ ಬದಲಾಗಿವೆ. ಮ್ಯಾಂಚೆಸ್ಟರ್ ಬೇಬಿ ಮತ್ತು ಆರ್. ಸಿ. ಎ 1802ರಂತಹ ಆರಂಭಿಕ ಕಂಪ್ಯೂಟರ್ಗಳು ಮತ್ತು ಮೈಕ್ರೊಪ್ರೊಸೆಸರ್ಗಳು ಒಂದೇ ಉಪ-ನಿಯಮಿತ ಕರೆ ಸೂಚನೆಯನ್ನು ಹೊಂದಿರಲಿಲ್ಲ. ಸಬ್ರುಟೈನ್ಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದಾಗಿತ್ತು, ಆದರೆ ಅವರು ಪ್ರತಿ ಕರೆ ಸೈಟ್ನಲ್ಲಿ ಕರೆ ಅನುಕ್ರಮವನ್ನು-ಸೂಚನೆಗಳ ಸರಣಿಯನ್ನು-ಬಳಸಲು ಪ್ರೋಗ್ರಾಮರ್ಗಳ ಅಗತ್ಯವಿತ್ತು. 1945ರಲ್ಲಿ ಕೊನ್ರಾಡ್ ಜ್ಯೂಸ್ನ Z4ನಲ್ಲಿ ಸಬ್ರುಟೈನ್ಗಳನ್ನು ಜಾರಿಗೆ ತರಲಾಯಿತು. 1945ರಲ್ಲಿ, ಅಲನ್ ಎಮ್. ಟ್ಯೂರಿಂಗ್ ಅವರು "ಬರಿ" ಮತ್ತು "ಅನ್ಬರಿ" ಎಂಬ ಪದಗಳನ್ನು ಸಬ್ರುಟೈನ್ಗಳಿಂದ ಕರೆ ಮಾಡುವ ಮತ್ತು ಹಿಂದಿರುಗುವ ವಿಧಾನವಾಗಿ ಬಳಸಿದರು. 1947ರ ಜನವರಿಯಲ್ಲಿ ಜಾನ್ ಮೌಚ್ಲಿ ಅವರು ಹಾರ್ವರ್ಡ್ ವಿಶ್ವವಿದ್ಯಾಲಯ ಮತ್ತು ಯುನೈಟೆಡ್ ಸ್ಟೇಟ್ಸ್ ನೌಕಾಪಡೆಯ ಬ್ಯೂರೋ ಆಫ್ ಆರ್ಡನೆನ್ಸ್ ಜಂಟಿ ಪ್ರಾಯೋಜಕತ್ವದಲ್ಲಿ 'ಎ ಸಿಂಪೋಸಿಯಂ ಆಫ್ ಲಾರ್ಜ್ ಸ್ಕೇಲ್ ಡಿಜಿಟಲ್ ಕ್ಯಾಲ್ಕುಲೇಟಿಂಗ್ ಮೆಷಿನರಿ' ಯಲ್ಲಿ ಸಾಮಾನ್ಯ ಟಿಪ್ಪಣಿಗಳನ್ನು ಪ್ರಸ್ತುತಪಡಿಸಿದರು. ಇಲ್ಲಿ ಅವರು ಸರಣಿ ಮತ್ತು ಸಮಾನಾಂತರ ಕಾರ್ಯಾಚರಣೆಯನ್ನು ಚರ್ಚಿಸುತ್ತಾರೆ, ಇದು ಕೇ ಮೆಕ್ನಲ್ಟಿಯವರು ENIAC ತಂಡದಲ್ಲಿ ಜಾನ್ ಮೌಚ್ಲಿ ಅವರೊಂದಿಗೆ ನಿಕಟವಾಗಿ ಕೆಲಸ ಮಾಡಿದ್ದಾರೆ ಮತ್ತು ಎರಡನೇ ಮಹಾಯುದ್ಧದ ಸಮಯದಲ್ಲಿ ಅವರು ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಮಾಡುತ್ತಿದ್ದ ENIAC ಕಂಪ್ಯೂಟರ್ಗಾಗಿ ಸಬ್ರುಟೈನ್ಗಳ ಕಲ್ಪನೆಯನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸಿದ್ದಾರೆ ಎಂದು ಸೂಚಿಸುತ್ತದೆ. ಅವಳು ಮತ್ತು ಇತರ ಇ. ಎನ್. ಐ. ಎ. ಸಿ. ಪ್ರೋಗ್ರಾಮರ್ಗಳು ಕ್ಷಿಪಣಿ ಪಥಗಳನ್ನು ಲೆಕ್ಕಹಾಕಲು ಸಹಾಯ ಮಾಡಲು ಸಬ್ರುಟೈನ್ಗಳನ್ನು ಬಳಸಿದರು. ಗೋಲ್ಡ್ಸ್ಟೈನ್ ಮತ್ತು ವಾನ್ ನ್ಯೂಮನ್ ಅವರು 1948ರ ಆಗಸ್ಟ್ 16ರಂದು ಸಬ್ರುಟೈನ್ಗಳ ಬಳಕೆಯನ್ನು ಚರ್ಚಿಸುವ ಲೇಖನವೊಂದನ್ನು ಬರೆದರು. ಐಬಿಎಂ 1620, ಇಂಟೆಲ್ 4004 ಮತ್ತು ಇಂಟೆಲ್ 8008 ಮತ್ತು ಪಿಐಸಿ ಮೈಕ್ರೊಕಂಟ್ರೋಲರ್ಗಳಂತಹ ಕೆಲವು ಅತ್ಯಂತ ಮುಂಚಿನ ಕಂಪ್ಯೂಟರ್ಗಳು ಮತ್ತು ಮೈಕ್ರೊಪ್ರೊಸೆಸರ್ಗಳು ಏಕ-ಸೂಚನೆಯ ಸಬ್ರುಟೈನ್ ಕರೆಯನ್ನು ಹೊಂದಿದ್ದು, ಅದು ಹಿಂತಿರುಗಿಸುವ ವಿಳಾಸಗಳನ್ನು ಸಂಗ್ರಹಿಸಲು ಮೀಸಲಾದ ಹಾರ್ಡ್ವೇರ್ ಸ್ಟ್ಯಾಕ್ ಅನ್ನು ಬಳಸುತ್ತದೆ-ಅಂತಹ ಹಾರ್ಡ್ವೇರ್ ಕೆಲವು ಹಂತದ ಸಬ್ರುಟೈನ್ ಗೂಡುಕಟ್ಟುವಿಕೆಯನ್ನು ಮಾತ್ರ ಬೆಂಬಲಿಸುತ್ತದೆ, ಆದರೆ ಪುನರಾವರ್ತಿತ ಸಬ್ರುಟೈನ್ಗಳನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ. 1960ರ ದಶಕದ ಮಧ್ಯಭಾಗಕ್ಕೆ ಮುಂಚಿನ ಯಂತ್ರಗಳು-ಉದಾಹರಣೆಗೆ ಯುನಿವಾಕ್ I, ಪಿಡಿಪಿ-1, ಮತ್ತು ಐಬಿಎಂ 1130-ಸಾಮಾನ್ಯವಾಗಿ ಕರೆ ಮಾಡುವ ಸಂಪ್ರದಾಯವನ್ನು ಬಳಸುತ್ತವೆ, ಇದು ಸೂಚನಾ ಕೌಂಟರ್ ಅನ್ನು ಸಬ್ರುಟೈನ್ ಎಂದು ಕರೆಯಲ್ಪಡುವ ಮೊದಲ ಮೆಮೊರಿ ಸ್ಥಳದಲ್ಲಿ ಉಳಿಸುತ್ತದೆ. ಇದು ಅನಿಯಂತ್ರಿತವಾಗಿ ಆಳವಾದ ಮಟ್ಟದ ಸಬ್ರುಟೈನ್ ಗೂಡುಕಟ್ಟುವಿಕೆಯನ್ನು ಅನುಮತಿಸುತ್ತದೆ ಆದರೆ ಪುನರಾವರ್ತಿತ ಸಬ್ರುಟೈನ್ಗಳನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ. ಐಬಿಎಂ ಸಿಸ್ಟಮ್/360 ಒಂದು ಸಬ್ರುಟೈನ್ ಕರೆ ಸೂಚನೆಯನ್ನು ಹೊಂದಿತ್ತು, ಅದು ಉಳಿಸಿದ ಸೂಚನಾ ಕೌಂಟರ್ ಮೌಲ್ಯವನ್ನು ಸಾಮಾನ್ಯ-ಉದ್ದೇಶದ ರಿಜಿಸ್ಟರ್ನಲ್ಲಿ ಇರಿಸಿತು; ಇದನ್ನು ಅನಿಯಂತ್ರಿತವಾಗಿ ಆಳವಾದ ಸಬ್ರುಟೈನ್ ಗೂಡುಕಟ್ಟುವಿಕೆ ಮತ್ತು ಪುನರಾವರ್ತಿತ ಸಬ್ರುಟೈನ್ಗಳನ್ನು ಬೆಂಬಲಿಸಲು ಬಳಸಬಹುದು. ಪಿಡಿಪಿ-11 (1970) ಸ್ಟ್ಯಾಕ್-ಪುಶಿಂಗ್ ಸಬ್ರುಟೈನ್ ಕರೆ ಸೂಚನೆಯನ್ನು ಹೊಂದಿರುವ ಮೊದಲ ಕಂಪ್ಯೂಟರ್ಗಳಲ್ಲಿ ಒಂದಾಗಿದೆ; ಈ ವೈಶಿಷ್ಟ್ಯವು ಅನಿಯಂತ್ರಿತವಾಗಿ ಆಳವಾದ ಸಬ್ರುಟೈನ್ ಗೂಡುಕಟ್ಟುವಿಕೆ ಮತ್ತು ಪುನರಾವರ್ತಿತ ಸಬ್ರುಟೈನ್ಗಳನ್ನು ಸಹ ಬೆಂಬಲಿಸುತ್ತದೆ. ಭಾಷಾ ಬೆಂಬಲವು ಅತ್ಯಂತ ಮುಂಚಿನ ಜೋಡಣೆದಾರರಲ್ಲಿ, ಸಬ್ರುಟೈನ್ ಬೆಂಬಲವು ಸೀಮಿತವಾಗಿತ್ತು. ಸಬ್ರುಟೈನ್ಗಳನ್ನು ಪರಸ್ಪರ ಅಥವಾ ಮುಖ್ಯ ಪ್ರೋಗ್ರಾಂನಿಂದ ಸ್ಪಷ್ಟವಾಗಿ ಬೇರ್ಪಡಿಸಲಾಗಿಲ್ಲ, ಮತ್ತು ವಾಸ್ತವವಾಗಿ ಸಬ್ರುಟೈನ್ನ ಮೂಲ ಸಂಕೇತವನ್ನು ಇತರ ಸಬ್ಪ್ರೋಗ್ರಾಮ್ಗಳೊಂದಿಗೆ ವಿಂಗಡಿಸಬಹುದು. ಕೆಲವು ಜೋಡಣೆದಾರರು ಕರೆ ಮತ್ತು ರಿಟರ್ನ್ ಅನುಕ್ರಮಗಳನ್ನು ಉತ್ಪಾದಿಸಲು ಪೂರ್ವನಿರ್ಧರಿತ ಮ್ಯಾಕ್ರೋಗಳನ್ನು ಒದಗಿಸುತ್ತಾರೆ. 1960ರ ದಶಕದ ಹೊತ್ತಿಗೆ, ಜೋಡಣೆದಾರರು ಸಾಮಾನ್ಯವಾಗಿ ಒಟ್ಟಿಗೆ ಜೋಡಿಸಬಹುದಾದ ಇನ್ಲೈನ್ ಮತ್ತು ಪ್ರತ್ಯೇಕವಾಗಿ ಜೋಡಿಸಲಾದ ಸಬ್ರುಟೈನ್ಗಳೆರಡಕ್ಕೂ ಹೆಚ್ಚು ಅತ್ಯಾಧುನಿಕ ಬೆಂಬಲವನ್ನು ಹೊಂದಿದ್ದರು. ಬಳಕೆದಾರ-ಲಿಖಿತ ಉಪ-ದಿನಚರಿಗಳು ಮತ್ತು ಕಾರ್ಯಗಳನ್ನು ಬೆಂಬಲಿಸಿದ ಮೊದಲ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗಳಲ್ಲಿ ಒಂದಾದ ಫೋರ್ಟ್ರಾನ್ II. ಐಬಿಎಂ ಫೋರ್ಟ್ರಾನ್ II ಕಂಪೈಲರ್ ಅನ್ನು 1958ರಲ್ಲಿ ಬಿಡುಗಡೆ ಮಾಡಲಾಯಿತು. ALGOL 58 ಮತ್ತು ಇತರ ಆರಂಭಿಕ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗಳು ಸಹ ಕಾರ್ಯವಿಧಾನದ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಅನ್ನು ಬೆಂಬಲಿಸಿದವು. ಗ್ರಂಥಾಲಯಗಳು ಈ ತೊಡಕಿನ ವಿಧಾನದ ಹೊರತಾಗಿಯೂ, ಸಬ್ರುಟೈನ್ಗಳು ಬಹಳ ಉಪಯುಕ್ತವೆಂದು ಸಾಬೀತಾಯಿತು. ಅವರು ಅನೇಕ ವಿಭಿನ್ನ ಕಾರ್ಯಕ್ರಮಗಳಲ್ಲಿ ಒಂದೇ ಕೋಡ್ ಅನ್ನು ಬಳಸಲು ಅವಕಾಶ ಮಾಡಿಕೊಟ್ಟರು. ಆರಂಭಿಕ ಕಂಪ್ಯೂಟರ್ಗಳಲ್ಲಿ ಮೆಮೊರಿಯು ಬಹಳ ವಿರಳವಾದ ಸಂಪನ್ಮೂಲವಾಗಿತ್ತು, ಮತ್ತು ಸಬ್ರುಟೈನ್ಗಳು ಪ್ರೋಗ್ರಾಂಗಳ ಗಾತ್ರದಲ್ಲಿ ಗಮನಾರ್ಹ ಉಳಿತಾಯಕ್ಕೆ ಅವಕಾಶ ಮಾಡಿಕೊಟ್ಟವು. ಅನೇಕ ಆರಂಭಿಕ ಕಂಪ್ಯೂಟರ್ಗಳು ಪಂಚ್ ಪೇಪರ್ ಟೇಪ್ನಿಂದ ಪ್ರೋಗ್ರಾಂ ಸೂಚನೆಗಳನ್ನು ಮೆಮೊರಿಗೆ ಲೋಡ್ ಮಾಡಿದ್ದವು. ಪ್ರತಿ ಸಬ್ರುಟೈನ್ ಅನ್ನು ನಂತರ ಪ್ರತ್ಯೇಕ ಟೇಪ್ನಿಂದ ಒದಗಿಸಬಹುದು, ಮುಖ್ಯ ಪ್ರೋಗ್ರಾಂಗೆ ಮೊದಲು ಅಥವಾ ನಂತರ ಲೋಡ್ ಮಾಡಬಹುದು ಅಥವಾ ಜೋಡಿಸಬಹುದು (ಅಥವಾ "ಮುಖ್ಯ ಲೈನ್"); ಮತ್ತು ಅದೇ ಸಬ್ರುಟೈನ್ ಟೇಪ್ ಅನ್ನು ನಂತರ ಅನೇಕ ವಿಭಿನ್ನ ಪ್ರೋಗ್ರಾಂಗಳಿಂದ ಬಳಸಬಹುದು. ಪಂಚ್ ಕಾರ್ಡ್ಗಳಿಂದ ಪ್ರೋಗ್ರಾಂ ಸೂಚನೆಗಳನ್ನು ಲೋಡ್ ಮಾಡುವ ಕಂಪ್ಯೂಟರ್ಗಳಲ್ಲಿ ಇದೇ ರೀತಿಯ ವಿಧಾನವನ್ನು ಬಳಸಲಾಯಿತು. ಸಬ್ರುಟೈನ್ ಲೈಬ್ರರಿ ಎಂಬ ಹೆಸರು ಮೂಲತಃ ಗ್ರಂಥಾಲಯವನ್ನು ಅರ್ಥೈಸುತ್ತದೆ, ಅಕ್ಷರಶಃ ಅರ್ಥದಲ್ಲಿ, ಇದು ಸಾಮೂಹಿಕ ಬಳಕೆಗಾಗಿ ಟೇಪ್ಗಳು ಅಥವಾ ಕಾರ್ಡ್ಗಳ ಡೆಕ್ಗಳ ಸೂಚ್ಯಂಕ ಸಂಗ್ರಹಗಳನ್ನು ಇರಿಸುತ್ತದೆ. ಸ್ವಯಂ-ಮಾರ್ಪಾಡು ಕೋಡ್ನ ಅಗತ್ಯವನ್ನು ತೆಗೆದುಹಾಕಲು, ಕಂಪ್ಯೂಟರ್ ವಿನ್ಯಾಸಕರು ಅಂತಿಮವಾಗಿ ಪರೋಕ್ಷ ಜಂಪ್ ಸೂಚನೆಯನ್ನು ಒದಗಿಸಿದರು, ಅದರ ಆಪರೆಂಡ್, ರಿಟರ್ನ್ ವಿಳಾಸದ ಬದಲು, ರಿಟರ್ನ್ ವಿಳಾಸವನ್ನು ಹೊಂದಿರುವ ವೇರಿಯೇಬಲ್ ಅಥವಾ ಪ್ರೊಸೆಸರ್ ರಿಜಿಸ್ಟರ್ನ ಸ್ಥಳವಾಗಿತ್ತು. ಆ ಕಂಪ್ಯೂಟರ್ಗಳಲ್ಲಿ, ಕಾರ್ಯದ ರಿಟರ್ನ್ ಜಂಪ್ ಅನ್ನು ಮಾರ್ಪಡಿಸುವ ಬದಲು, ಕರೆ ಮಾಡುವ ಪ್ರೋಗ್ರಾಂ ರಿಟರ್ನ್ ವಿಳಾಸವನ್ನು ವೇರಿಯೇಬಲ್ನಲ್ಲಿ ಸಂಗ್ರಹಿಸುತ್ತದೆ, ಇದರಿಂದಾಗಿ ಕಾರ್ಯವು ಪೂರ್ಣಗೊಂಡಾಗ, ಅದು ಪರೋಕ್ಷ ಜಂಪ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ, ಅದು ಪೂರ್ವನಿರ್ಧರಿತ ವೇರಿಯೇಬಲ್ ನೀಡಿದ ಸ್ಥಳಕ್ಕೆ ಕಾರ್ಯಗತಗೊಳ್ಳುತ್ತದೆ. ಮತ್ತೊಂದು ಮುಂಗಡವೆಂದರೆ ಸಬ್ ರೂಟಿನ್ ಸೂಚನೆಗೆ ಜಿಗಿತ, ಇದು ರಿಟರ್ನ್ ಅಡ್ರೆಸ್ನ ಉಳಿತಾಯವನ್ನು ಕಾಲಿಂಗ್ ಜಂಪ್ನೊಂದಿಗೆ ಸಂಯೋಜಿಸಿ, ಆ ಮೂಲಕ ಓವರ್ಹೆಡ್ ಅನ್ನು ಗಮನಾರ್ಹವಾಗಿ ಕಡಿಮೆ ಮಾಡುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ಐಬಿಎಂ ಸಿಸ್ಟಮ್/360 ರಲ್ಲಿ, ಕಾರ್ಯವಿಧಾನದ ಕರೆಗಾಗಿ ವಿನ್ಯಾಸಗೊಳಿಸಲಾದ ಶಾಖೆಯ ಸೂಚನೆಗಳಾದ ಬಿ. ಎ. ಎಲ್ ಅಥವಾ ಬಿ. ಎ. ಎಲ್. ಆರ್, ರಿಟರ್ನ್ ವಿಳಾಸವನ್ನು ಸೂಚನೆಯಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಪ್ರೊಸೆಸರ್ ರಿಜಿಸ್ಟರ್ನಲ್ಲಿ ಕನ್ವೆನ್ಷನ್ ರಿಜಿಸ್ಟರ್ 14 ರ ಮೂಲಕ ಉಳಿಸುತ್ತದೆ. ಹಿಂದಿರುಗಲು, ಸಬ್ ರುಟೀನ್ ಆ ರಿಜಿಸ್ಟರ್ ಮೂಲಕ ಪರೋಕ್ಷ ಶಾಖೆ ಸೂಚನೆಯನ್ನು (ಬಿಆರ್) ಮಾತ್ರ ಕಾರ್ಯಗತಗೊಳಿಸಬೇಕಾಗಿತ್ತು. ಸಬ್ ರುಟೀನ್ಗೆ ಬೇರೆ ಯಾವುದಾದರೂ ಉದ್ದೇಶಕ್ಕಾಗಿ ಆ ರಿಜಿಸ್ಟರ್ ಅಗತ್ಯವಿದ್ದರೆ (ಉದಾಹರಣೆಗೆ ಮತ್ತೊಂದು ಸಬ್ ರುಟೀನ್ಗೆ ಕರೆ ಮಾಡುವುದು), ಅದು ರಿಜಿಸ್ಟರ್ನ ವಿಷಯಗಳನ್ನು ಖಾಸಗಿ ಮೆಮೊರಿ ಸ್ಥಳ ಅಥವಾ ರಿಜಿಸ್ಟರ್ ಸ್ಟ್ಯಾಕ್ಗೆ ಉಳಿಸುತ್ತದೆ. HP 2100 ನಂತಹ ವ್ಯವಸ್ಥೆಗಳಲ್ಲಿ, JSB ಸೂಚನೆಯು ಇದೇ ರೀತಿಯ ಕಾರ್ಯವನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ, ಆದರೆ ಹಿಂತಿರುಗುವ ವಿಳಾಸವನ್ನು ಶಾಖೆಯ ಗುರಿಯಾಗಿದ್ದ ಮೆಮೊರಿ ಸ್ಥಳದಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾಗಿದೆ. ಕಾರ್ಯವಿಧಾನದ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯು ವಾಸ್ತವವಾಗಿ ಮುಂದಿನ ಮೆಮೊರಿ ಸ್ಥಳದಲ್ಲಿ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, HP 2100 ಅಸೆಂಬ್ಲಿ ಭಾಷೆಯಲ್ಲಿ, ಒಬ್ಬರು ಬರೆಯಬಹುದು. JSB MYSUB (ಕಾಲ್ಸ್ ಸಬ್ರುಟೈನ್ MYSUB.) ಬಿ. ಬಿ. (ಮೈಸುಬ್ ಮುಗಿದ ನಂತರ ಇಲ್ಲಿಗೆ ಮರಳುತ್ತೇನೆ.) ಮುಖ್ಯ ಪ್ರೋಗ್ರಾಂನಿಂದ MYSUB ಎಂಬ ಸಬ್ರುಟೈನ್ಗೆ ಕರೆ ಮಾಡಲು. ಸಬ್ ರೂಟಿನ್ ಅನ್ನು ಮೈಸುಬ್ ಎನ್ಓಪಿ (ಮೈಸುಬ್ನ ರಿಟರ್ನ್ ವಿಳಾಸಕ್ಕಾಗಿ ಸಂಗ್ರಹಣೆ) ಎಂದು ಕೋಡ್ ಮಾಡಲಾಗುತ್ತದೆ. ಎಎ. (ಮೈಸುಬ್ನ ದೇಹದ ಆರಂಭ.) . JMP MYSUB, I (ಕರೆ ಮಾಡುವ ಪ್ರೋಗ್ರಾಂಗೆ ಹಿಂತಿರುಗುತ್ತದೆ.) ಜೆಎಸ್ಬಿ ಸೂಚನೆಯು ಮುಂದಿನ ಸೂಚನೆಯ ವಿಳಾಸವನ್ನು (ಅಂದರೆ, ಬಿಬಿ) ಅದರ ಕಾರ್ಯಾಚರಣಾ ಸ್ಥಳ (ಅಂದರೆ, ಮೈಸುಬ್) ಎಂದು ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಸ್ಥಳಕ್ಕೆ ಇರಿಸಿತು ಮತ್ತು ನಂತರ ಮುಂದಿನ ಸ್ಥಳಕ್ಕೆ (ಅಂದರೆ, ಎಎ = ಮೈಸುಬ್ + 1) ಕವಲೊಡೆಯಿತು. ಸಬ್ ರುಟೀನ್ ನಂತರ ಪರೋಕ್ಷ ಜಂಪ್ ಜೆಎಂಪಿ ಎಂವೈಎಸ್ಯುಬಿ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವ ಮೂಲಕ ಮುಖ್ಯ ಪ್ರೋಗ್ರಾಂಗೆ ಮರಳಬಹುದು, ಇದು ಎಂವೈಎಸ್ಯುಬಿ ಸ್ಥಳದಲ್ಲಿ ಸಂಗ್ರಹವಾಗಿರುವ ಸ್ಥಳಕ್ಕೆ ಕವಲೊಡೆದಿದೆ. ಫೋರ್ಟ್ರಾನ್ ಮತ್ತು ಇತರ ಭಾಷೆಗಳ ಕಂಪೈಲರ್ಗಳು ಲಭ್ಯವಿದ್ದಾಗ ಈ ಸೂಚನೆಗಳನ್ನು ಸುಲಭವಾಗಿ ಬಳಸಬಹುದಾಗಿತ್ತು. ಈ ವಿಧಾನವು ಅನೇಕ ಹಂತದ ಕರೆಗಳನ್ನು ಬೆಂಬಲಿಸಿತು; ಆದಾಗ್ಯೂ, ರಿಟರ್ನ್ ವಿಳಾಸ, ನಿಯತಾಂಕಗಳು ಮತ್ತು ಸಬ್ ರುಟೀನ್ನ ರಿಟರ್ನ್ ಮೌಲ್ಯಗಳಿಗೆ ಸ್ಥಿರ ಮೆಮೊರಿ ಸ್ಥಳಗಳನ್ನು ನಿಗದಿಪಡಿಸಿದ್ದರಿಂದ, ಇದು ಪುನರಾವರ್ತಿತ ಕರೆಗಳನ್ನು ಅನುಮತಿಸಲಿಲ್ಲ. ಪ್ರಾಸಂಗಿಕವಾಗಿ, ಸ್ಪ್ರೆಡ್ಶೀಟ್ನಲ್ಲಿ ಮರುಮೌಲ್ಯಮಾಪನ ಅವಲಂಬನೆಗಳನ್ನು ಕಂಡುಹಿಡಿಯಲು 1980ರ ದಶಕದ ಆರಂಭದಲ್ಲಿ ಲೋಟಸ್ 1-2-3 ಇದೇ ರೀತಿಯ ವಿಧಾನವನ್ನು ಬಳಸಿತು. ಅಂದರೆ, ಹಿಂದಿರುಗುವ ವಿಳಾಸವನ್ನು ಸಂಗ್ರಹಿಸಲು ಪ್ರತಿ ಕೋಶದಲ್ಲಿ ಒಂದು ಸ್ಥಳವನ್ನು ಕಾಯ್ದಿರಿಸಲಾಗಿತ್ತು. ನೈಸರ್ಗಿಕ ಮರುಮೌಲ್ಯಮಾಪನ ಕ್ರಮಕ್ಕೆ ವೃತ್ತಾಕಾರದ ಉಲ್ಲೇಖಗಳನ್ನು ಅನುಮತಿಸಲಾಗದ ಕಾರಣ, ಇದು ಐಬಿಎಂ ಪಿಸಿಯಂತಹ ಸಣ್ಣ ಕಂಪ್ಯೂಟರ್ಗಳಲ್ಲಿ ಬಹಳ ಸೀಮಿತವಾಗಿದ್ದ ಮೆಮೊರಿಯಲ್ಲಿನ ಸ್ಟ್ಯಾಕ್ಗೆ ಜಾಗವನ್ನು ಕಾಯ್ದಿರಿಸದೆ ಮರದ ನಡಿಗೆಗೆ ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ. ಕಾಲ್ ಸ್ಟ್ಯಾಕ್ ಫಂಕ್ಷನ್ ಕರೆಯ ಹೆಚ್ಚಿನ ಆಧುನಿಕ ಅನುಷ್ಠಾನಗಳು ಕಾಲ್ ಸ್ಟ್ಯಾಕ್ ಅನ್ನು ಬಳಸುತ್ತವೆ, ಇದು ಫಂಕ್ಷನ್ ಕರೆಗಳು ಮತ್ತು ರಿಟರ್ನ್ಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಸ್ಟ್ಯಾಕ್ ಡೇಟಾ ರಚನೆಯ ವಿಶೇಷ ಪ್ರಕರಣವಾಗಿದೆ. ಪ್ರತಿಯೊಂದು ಕಾರ್ಯವಿಧಾನದ ಕರೆಯು ಸ್ಟ್ಯಾಕ್ನ ಮೇಲ್ಭಾಗದಲ್ಲಿ ಸ್ಟ್ಯಾಕ್ ಫ್ರೇಮ್ ಎಂದು ಕರೆಯಲಾಗುವ ಹೊಸ ನಮೂದನ್ನು ರಚಿಸುತ್ತದೆ; ಕಾರ್ಯವಿಧಾನವು ಹಿಂದಿರುಗಿದಾಗ, ಅದರ ಸ್ಟ್ಯಾಕ್ ಫ್ರೇಮ್ ಅನ್ನು ಸ್ಟ್ಯಾಕ್ನಿಂದ ಅಳಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಅದರ ಜಾಗವನ್ನು ಇತರ ಕಾರ್ಯವಿಧಾನದ ಕರೆಗಳಿಗೆ ಬಳಸಬಹುದು. ಪ್ರತಿ ಸ್ಟ್ಯಾಕ್ ಫ್ರೇಮ್ ಅನುಗುಣವಾದ ಕರೆಯ ಖಾಸಗಿ ಡೇಟಾವನ್ನು ಹೊಂದಿರುತ್ತದೆ, ಇದು ಸಾಮಾನ್ಯವಾಗಿ ಕಾರ್ಯವಿಧಾನದ ನಿಯತಾಂಕಗಳು ಮತ್ತು ಆಂತರಿಕ ಅಸ್ಥಿರಗಳು ಮತ್ತು ರಿಟರ್ನ್ ವಿಳಾಸವನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ. ಕರೆ ಅನುಕ್ರಮವನ್ನು ಸಾಮಾನ್ಯ ಸೂಚನೆಗಳ ಅನುಕ್ರಮದಿಂದ ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದು (ಈ ವಿಧಾನವನ್ನು ರಿಡ್ಯೂಸ್ಡ್ ಇನ್ಸ್ಟ್ರಕ್ಷನ್ ಸೆಟ್ ಕಂಪ್ಯೂಟಿಂಗ್ (ಆರ್ಐಎಸ್ಸಿ) ಮತ್ತು ವೆರಿ ಲಾಂಗ್ ಇನ್ಸ್ಟ್ರಕ್ಷನ್ ವರ್ಡ್ (ವಿಎಲ್ಐಡಬ್ಲ್ಯೂ) ಆರ್ಕಿಟೆಕ್ಚರ್ಗಳಲ್ಲಿ ಇನ್ನೂ ಬಳಸಲಾಗುತ್ತದೆ), ಆದರೆ 1960ರ ದಶಕದ ಅಂತ್ಯದಿಂದ ವಿನ್ಯಾಸಗೊಳಿಸಲಾದ ಅನೇಕ ಸಾಂಪ್ರದಾಯಿಕ ಯಂತ್ರಗಳು ಆ ಉದ್ದೇಶಕ್ಕಾಗಿ ವಿಶೇಷ ಸೂಚನೆಗಳನ್ನು ಒಳಗೊಂಡಿವೆ. ಕಾಲ್ ಸ್ಟ್ಯಾಕ್ ಅನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ಮೆಮೊರಿಯ ಸಮೀಪದ ಪ್ರದೇಶವಾಗಿ ಅಳವಡಿಸಲಾಗುತ್ತದೆ. ಸ್ಟ್ಯಾಕ್ನ ಕೆಳಭಾಗವು ಈ ಪ್ರದೇಶದೊಳಗಿನ ಕಡಿಮೆ ಅಥವಾ ಅತಿ ಎತ್ತರದ ವಿಳಾಸವಾಗಿದೆಯೇ ಎಂಬುದು ಅನಿಯಂತ್ರಿತ ವಿನ್ಯಾಸದ ಆಯ್ಕೆಯಾಗಿದೆ, ಇದರಿಂದಾಗಿ ಸ್ಟ್ಯಾಕ್ ಮೆಮೊರಿಯಲ್ಲಿ ಮುಂದಕ್ಕೆ ಅಥವಾ ಹಿಂದಕ್ಕೆ ಬೆಳೆಯಬಹುದು; ಆದಾಗ್ಯೂ, ಅನೇಕ ವಾಸ್ತುಶಿಲ್ಪಗಳು ಎರಡನೆಯದನ್ನು ಆಯ್ಕೆ ಮಾಡಿವೆ. ಕೆಲವು ವಿನ್ಯಾಸಗಳು, ವಿಶೇಷವಾಗಿ ಕೆಲವು ಫೋರ್ತ್ ಅನುಷ್ಠಾನಗಳು, ಎರಡು ಪ್ರತ್ಯೇಕ ಸ್ಟ್ಯಾಕ್ಗಳನ್ನು ಬಳಸಿಕೊಂಡವು, ಒಂದು ಮುಖ್ಯವಾಗಿ ನಿಯಂತ್ರಣ ಮಾಹಿತಿಗಾಗಿ (ರಿಟರ್ನ್ ವಿಳಾಸಗಳು ಮತ್ತು ಲೂಪ್ ಕೌಂಟರ್ಗಳಂತಹವು) ಮತ್ತು ಇನ್ನೊಂದು ದತ್ತಾಂಶಕ್ಕಾಗಿ. ಮೊದಲನೆಯದು ಕಾಲ್ ಸ್ಟ್ಯಾಕ್ ಆಗಿತ್ತು ಅಥವಾ ಹಾಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿತ್ತು ಮತ್ತು ಇತರ ಭಾಷೆಯ ರಚನೆಗಳ ಮೂಲಕ ಪ್ರೋಗ್ರಾಮರ್ಗೆ ಪರೋಕ್ಷವಾಗಿ ಮಾತ್ರ ಪ್ರವೇಶಿಸಬಹುದಾಗಿತ್ತು, ಆದರೆ ಎರಡನೆಯದು ಹೆಚ್ಚು ನೇರವಾಗಿ ಪ್ರವೇಶಿಸಬಹುದಾಗಿತ್ತು. ಸ್ಟ್ಯಾಕ್-ಆಧಾರಿತ ಕಾರ್ಯವಿಧಾನದ ಕರೆಗಳನ್ನು ಮೊದಲು ಪರಿಚಯಿಸಿದಾಗ, ಅಮೂಲ್ಯವಾದ ಸ್ಮರಣೆಯನ್ನು ಉಳಿಸುವುದು ಒಂದು ಪ್ರಮುಖ ಪ್ರೇರಣೆಯಾಗಿತ್ತು. ಈ ಯೋಜನೆಯೊಂದಿಗೆ, ಕಂಪೈಲರ್ ಪ್ರತಿ ಕಾರ್ಯವಿಧಾನದ ಖಾಸಗಿ ದತ್ತಾಂಶಕ್ಕಾಗಿ (ನಿಯತಾಂಕಗಳು, ರಿಟರ್ನ್ ವಿಳಾಸ ಮತ್ತು ಸ್ಥಳೀಯ ಅಸ್ಥಿರಗಳು) ಮೆಮೊರಿಯಲ್ಲಿ ಪ್ರತ್ಯೇಕ ಜಾಗವನ್ನು ಕಾಯ್ದಿರಿಸಬೇಕಾಗಿಲ್ಲ. ಯಾವುದೇ ಸಮಯದಲ್ಲಿ, ಸ್ಟ್ಯಾಕ್ ಪ್ರಸ್ತುತ ಸಕ್ರಿಯವಾಗಿರುವ ಕರೆಗಳ ಖಾಸಗಿ ಡೇಟಾವನ್ನು ಮಾತ್ರ ಹೊಂದಿರುತ್ತದೆ (ಅವುಗಳೆಂದರೆ, ಕರೆ ಮಾಡಲಾಗಿದ್ದರೂ ಇನ್ನೂ ಹಿಂತಿರುಗಿಲ್ಲ). ಪ್ರೋಗ್ರಾಂಗಳನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ಗ್ರಂಥಾಲಯಗಳಿಂದ ಜೋಡಿಸುವ ವಿಧಾನಗಳ ಕಾರಣದಿಂದಾಗಿ, ಸಾವಿರಾರು ಕಾರ್ಯಗಳನ್ನು ಒಳಗೊಂಡಿರುವ ಪ್ರೋಗ್ರಾಂಗಳನ್ನು ಕಂಡುಹಿಡಿಯುವುದು (ಮತ್ತು ಇನ್ನೂ) ಅಸಾಮಾನ್ಯವೇನಲ್ಲ, ಅವುಗಳಲ್ಲಿ ಬೆರಳೆಣಿಕೆಯಷ್ಟು ಮಾತ್ರ ಯಾವುದೇ ನಿರ್ದಿಷ್ಟ ಕ್ಷಣದಲ್ಲಿ ಸಕ್ರಿಯವಾಗಿರುತ್ತವೆ. ಅಂತಹ ಪ್ರೋಗ್ರಾಂಗಳಿಗೆ, ಕಾಲ್ ಸ್ಟ್ಯಾಕ್ ಕಾರ್ಯವಿಧಾನವು ಗಮನಾರ್ಹ ಪ್ರಮಾಣದ ಮೆಮೊರಿಯನ್ನು ಉಳಿಸಬಹುದು. ವಾಸ್ತವವಾಗಿ, ಕಾಲ್ ಸ್ಟ್ಯಾಕ್ ಕಾರ್ಯವಿಧಾನವನ್ನು ಸ್ವಯಂಚಾಲಿತ ಮೆಮೊರಿ ನಿರ್ವಹಣೆಯ ಆರಂಭಿಕ ಮತ್ತು ಸರಳ ವಿಧಾನವೆಂದು ಪರಿಗಣಿಸಬಹುದು. ಆದಾಗ್ಯೂ, ಕಾಲ್ ಸ್ಟ್ಯಾಕ್ ವಿಧಾನದ ಮತ್ತೊಂದು ಪ್ರಯೋಜನವೆಂದರೆ ಇದು ರಿಕರ್ಸಿವ್ ಫಂಕ್ಷನ್ ಕರೆಗಳನ್ನು ಅನುಮತಿಸುತ್ತದೆ, ಏಕೆಂದರೆ ಅದೇ ಕಾರ್ಯವಿಧಾನಕ್ಕೆ ಪ್ರತಿ ನೆಸ್ಟೆಡ್ ಕರೆಯು ಅದರ ಖಾಸಗಿ ಡೇಟಾದ ಪ್ರತ್ಯೇಕ ನಿದರ್ಶನವನ್ನು ಪಡೆಯುತ್ತದೆ. ಬಹು-ಥ್ರೆಡ್ ಪರಿಸರದಲ್ಲಿ, ಸಾಮಾನ್ಯವಾಗಿ ಒಂದಕ್ಕಿಂತ ಹೆಚ್ಚು ಸ್ಟ್ಯಾಕ್ ಇರುತ್ತದೆ. ಕೊರೌಟೈನ್ಗಳು ಅಥವಾ ಸೋಮಾರಿಯಾದ ಮೌಲ್ಯಮಾಪನವನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಬೆಂಬಲಿಸುವ ಪರಿಸರವು ಅವುಗಳ ಸಕ್ರಿಯಗೊಳಿಸುವ ದಾಖಲೆಗಳನ್ನು ಸಂಗ್ರಹಿಸಲು ಸ್ಟ್ಯಾಕ್ಗಳನ್ನು ಹೊರತುಪಡಿಸಿ ಬೇರೆ ದತ್ತಾಂಶ ರಚನೆಗಳನ್ನು ಬಳಸಬಹುದು. ಕಾಲ್ ಸ್ಟ್ಯಾಕ್ ಕಾರ್ಯವಿಧಾನದ ಒಂದು ಅನನುಕೂಲವೆಂದರೆ ಕಾರ್ಯವಿಧಾನದ ಕರೆಯ ಹೆಚ್ಚಿದ ವೆಚ್ಚ ಮತ್ತು ಅದರ ಹೊಂದಾಣಿಕೆಯ ರಿಟರ್ನ್. ಹೆಚ್ಚುವರಿ ವೆಚ್ಚವು ಸ್ಟ್ಯಾಕ್ ಪಾಯಿಂಟರ್ ಅನ್ನು ಹೆಚ್ಚಿಸುವುದು ಮತ್ತು ಕಡಿಮೆ ಮಾಡುವುದು (ಮತ್ತು, ಕೆಲವು ವಿನ್ಯಾಸಗಳಲ್ಲಿ, ಸ್ಟ್ಯಾಕ್ ಓವರ್ಫ್ಲೋ ಅನ್ನು ಪರಿಶೀಲಿಸುವುದು), ಮತ್ತು ಸಂಪೂರ್ಣ ವಿಳಾಸಗಳ ಬದಲಿಗೆ ಫ್ರೇಮ್-ಸಂಬಂಧಿತ ವಿಳಾಸಗಳಿಂದ ಸ್ಥಳೀಯ ಅಸ್ಥಿರಗಳು ಮತ್ತು ನಿಯತಾಂಕಗಳನ್ನು ಪ್ರವೇಶಿಸುವುದನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ. ವೆಚ್ಚವನ್ನು ಹೆಚ್ಚಿದ ಕಾರ್ಯಗತಗೊಳಿಸುವ ಸಮಯ ಅಥವಾ ಹೆಚ್ಚಿದ ಪ್ರೊಸೆಸರ್ ಸಂಕೀರ್ಣತೆ ಅಥವಾ ಎರಡರಲ್ಲೂ ಅರಿತುಕೊಳ್ಳಬಹುದು. ಲೀಫ್ ಕಾರ್ಯವಿಧಾನಗಳು ಅಥವಾ ಲೀಫ್ ಫಂಕ್ಷನ್ಗಳಲ್ಲಿ ಈ ಓವರ್ಹೆಡ್ ಅತ್ಯಂತ ಸ್ಪಷ್ಟವಾಗಿದೆ ಮತ್ತು ಆಕ್ಷೇಪಾರ್ಹವಾಗಿದೆ, ಇದು ಯಾವುದೇ ಕಾರ್ಯವಿಧಾನವನ್ನು ಮಾಡದೆಯೇ ಹಿಂತಿರುಗುತ್ತದೆ. ಆ ಓವರ್ಹೆಡ್ ಅನ್ನು ಕಡಿಮೆ ಮಾಡಲು, ಅನೇಕ ಆಧುನಿಕ ಕಂಪೈಲರ್ಗಳು ಕರೆ ಸ್ಟ್ಯಾಕ್ನ ಬಳಕೆಯನ್ನು ನಿಜವಾಗಿಯೂ ಅಗತ್ಯವಿರುವವರೆಗೆ ವಿಳಂಬಗೊಳಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತವೆ. ಉದಾಹರಣೆಗೆ, ಪಿ ಕಾರ್ಯವಿಧಾನದ ಕರೆಯು ಕೆಲವು ಪ್ರೊಸೆಸರ್ ರೆಜಿಸ್ಟರ್ಗಳಲ್ಲಿ ಕರೆಯಲ್ಪಡುವ ಕಾರ್ಯವಿಧಾನದ ರಿಟರ್ನ್ ವಿಳಾಸ ಮತ್ತು ನಿಯತಾಂಕಗಳನ್ನು ಸಂಗ್ರಹಿಸಬಹುದು ಮತ್ತು ಸರಳ ಜಿಗಿತದ ಮೂಲಕ ಕಾರ್ಯವಿಧಾನದ ಮುಖ್ಯ ಭಾಗಕ್ಕೆ ನಿಯಂತ್ರಣವನ್ನು ವರ್ಗಾಯಿಸಬಹುದು. ಕಾರ್ಯವಿಧಾನ ಪಿ ಬೇರೆ ಯಾವುದೇ ಕರೆ ಮಾಡದೆ ಹಿಂತಿರುಗಿದರೆ, ಕರೆ ಸ್ಟ್ಯಾಕ್ ಅನ್ನು ಬಳಸಲಾಗುವುದಿಲ್ಲ. ಪಿ ಮತ್ತೊಂದು ಕಾರ್ಯವಿಧಾನ ಕ್ಯೂಗೆ ಕರೆ ಮಾಡಬೇಕಾದರೆ, ಅದು ಕ್ಯೂ ಹಿಂದಿರುಗಿದ ನಂತರ ಅಗತ್ಯವಿರುವ ಯಾವುದೇ ರೆಜಿಸ್ಟರ್ಗಳ (ರಿಟರ್ನ್ ವಿಳಾಸದಂತಹ) ವಿಷಯಗಳನ್ನು ಉಳಿಸಲು ಕರೆ ಸ್ಟ್ಯಾಕ್ ಅನ್ನು ಬಳಸುತ್ತದೆ. ಉದಾಹರಣೆಗಳು ಸಿ ಮತ್ತು ಸಿ + + ಸಿ ಮತ್ತು ಸಿ + + ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗಳಲ್ಲಿ, ಉಪಪ್ರೋಗ್ರಾಮ್ಗಳನ್ನು ಕಾರ್ಯಗಳು ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ (ವರ್ಗದೊಂದಿಗೆ ಸಂಯೋಜಿಸಿದಾಗ ಸದಸ್ಯ ಕಾರ್ಯಗಳು ಅಥವಾ ಇಲ್ಲದಿದ್ದರೆ ಮುಕ್ತ ಕಾರ್ಯಗಳು ಎಂದು ವರ್ಗೀಕರಿಸಲಾಗಿದೆ). ಒಂದು ಕಾರ್ಯವು ಯಾವುದೇ ಮೌಲ್ಯವನ್ನು ಹಿಂದಿರುಗಿಸುವುದಿಲ್ಲ ಎಂಬುದನ್ನು ಸೂಚಿಸಲು ಈ ಭಾಷೆಗಳು ಶೂನ್ಯ ಎಂಬ ವಿಶೇಷ ಕೀವರ್ಡ್ ಅನ್ನು ಬಳಸುತ್ತವೆ. ಸಿ/ಸಿ + + ಕಾರ್ಯಗಳು ಅಡ್ಡಪರಿಣಾಮಗಳನ್ನು ಹೊಂದಿರಬಹುದು ಎಂಬುದನ್ನು ಗಮನಿಸಿ, ಅವುಗಳ ವಿಳಾಸಗಳನ್ನು ನಿಯತಾಂಕಗಳಾಗಿ ರವಾನಿಸಲಾಗಿರುವ ಯಾವುದೇ ಅಸ್ಥಿರಗಳನ್ನು ಮಾರ್ಪಡಿಸುವುದು ಸೇರಿದಂತೆ. ಉದಾಹರಣೆಗಳುಃ ಶೂನ್ಯ ಕಾರ್ಯ 1 () {/* ಕೆಲವು ಕೋಡ್ */} ಕಾರ್ಯವು ಒಂದು ಮೌಲ್ಯವನ್ನು ಹಿಂದಿರುಗಿಸುವುದಿಲ್ಲ ಮತ್ತು ಅದನ್ನು ಸ್ವತಂತ್ರ ಕಾರ್ಯ ಎಂದು ಕರೆಯಬೇಕಾಗುತ್ತದೆ, ಉದಾಹರಣೆಗೆ, ಕಾರ್ಯ 1 (); ಇಂಟ ಫಂಕ್ಷನ್ 2 () {ರಿಟರ್ನ್ 5;} ಈ ಕಾರ್ಯವು ಫಲಿತಾಂಶವನ್ನು (ಸಂಖ್ಯೆ 5) ಹಿಂದಿರುಗಿಸುತ್ತದೆ, ಮತ್ತು ಕರೆ ಅಭಿವ್ಯಕ್ತಿಯ ಭಾಗವಾಗಿರಬಹುದು, ಉದಾಹರಣೆಗೆ, x + ಕಾರ್ಯ 2 () ಚಾರ್ ಫಂಕ್ಷನ್ 3 (ಇಂಟ ಸಂಖ್ಯೆ) {ಚಾರ್ ಆಯ್ಕೆ [] = {'S', 'M', 'T', 'W', 'T', 'F', 'S', 'ರಿಟರ್ನ್ ಆಯ್ಕೆ [ಸಂಖ್ಯೆ];} ಈ ಕಾರ್ಯವು 0 ಮತ್ತು 6 ರ ನಡುವಿನ ಸಂಖ್ಯೆಯನ್ನು ಆರಂಭಿಕ ಅಕ್ಷರಕ್ಕೆ ಪರಿವರ್ತಿಸುತ್ತದೆ. ಇದನ್ನು ಕರೆಯುವ ಫಲಿತಾಂಶವನ್ನು ಚಲಪರಿಮಾಣಕ್ಕೆ ನಿಯೋಜಿಸಬಹುದು, ಉದಾಹರಣೆಗೆ, num _ ದಿನ = ಕಾರ್ಯ 3 (ಸಂಖ್ಯೆ);. ಶೂನ್ಯ ಫಂಕ್ಷನ್ 4 (ಇಂಟ್ * ಪಾಯಿಂಟರ್ _ ಟು _ ವರ್) {(* ಪಾಯಿಂಟರ್ _ ಟು _ ವರ್) + +;} ಈ ಫಂಕ್ಷನ್ ಮೌಲ್ಯವನ್ನು ಹಿಂದಿರುಗಿಸುವುದಿಲ್ಲ ಆದರೆ ಅದರ ವಿಳಾಸವನ್ನು ನಿಯತಾಂಕವಾಗಿ ರವಾನಿಸಲಾಗಿರುವ ವೇರಿಯೇಬಲ್ ಅನ್ನು ಮಾರ್ಪಡಿಸುತ್ತದೆ; ಇದನ್ನು ಫಂಕ್ಷನ್ 4 (& ವೇರಿಯೇಬಲ್ _ ಟು _ ಇಂಕ್ರಿಮೆಂಟ್) ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ಬೇಸಿಕ್ ಉಪಭಾಷೆಗಳಾದ ಮೈಕ್ರೋಸಾಫ್ಟ್ ಸ್ಮಾಲ್ ಬೇಸಿಕ್ ಎಕ್ಸಾಂಪಲ್ () 'ಕಾಲ್ಸ್ ದಿ ಸಬ್ರುಟೈನ್ ಸಬ್ ಎಕ್ಸಾಂಪಲ್' ಎಂಬುದು ಸಬ್ರುಟೈನ್ TextWindow.WriteLine ಅನ್ನು ಪ್ರಾರಂಭಿಸುತ್ತದೆ ("ಇದು ಮೈಕ್ರೋಸಾಫ್ಟ್ ಸ್ಮಾಲ್ ಬೇಸಿಕ್ನಲ್ಲಿನ ಸಬ್ರುಟೈನ್ಗೆ ಒಂದು ಉದಾಹರಣೆಯಾಗಿದೆ"). 'ಸಬ್ ರೂಟಿನ್ ಏನು ಮಾಡುತ್ತದೆ ಎಂಡ್ ಸಬ್' ಸಬ್ ರೂಟಿನ್ ಅನ್ನು ಕೊನೆಗೊಳಿಸುತ್ತದೆ ಮೇಲಿನ ಉದಾಹರಣೆಯಲ್ಲಿ, ಉದಾಹರಣೆ () ಸಬ್ ರೂಟಿನ್ ಅನ್ನು ಕರೆಯುತ್ತದೆ. ನಿಜವಾದ ಸಬ್ ರೂಟಿನ್ ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಲು, ಸಬ್ ಕೀವರ್ಡ್ ಅನ್ನು ಬಳಸಬೇಕು, ಸಬ್ ಅನ್ನು ಅನುಸರಿಸುವ ಸಬ್ ರೂಟಿನ್ ಹೆಸರನ್ನು ಬಳಸಬೇಕು. ವಿಷಯವನ್ನು ಅನುಸರಿಸಿದ ನಂತರ, ಎಂಡ್ಸಬ್ ಅನ್ನು ಟೈಪ್ ಮಾಡಬೇಕು. ವಿಷುಯಲ್ ಬೇಸಿಕ್ (ಕ್ಲಾಸಿಕ್) ಭಾಷೆಯಲ್ಲಿ, ಉಪಪ್ರೋಗ್ರಾಮ್ಗಳನ್ನು ಕಾರ್ಯಗಳು ಅಥವಾ ಉಪಗಳು (ಅಥವಾ ವರ್ಗದೊಂದಿಗೆ ಸಂಯೋಜಿಸಿದಾಗ ವಿಧಾನಗಳು) ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ವಿಷುಯಲ್ ಬೇಸಿಕ್ 6 ನಿಯತಾಂಕವಾಗಿ ಏನನ್ನು ರವಾನಿಸಲಾಗುತ್ತಿದೆ ಎಂಬುದನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಲು ಪ್ರಕಾರಗಳು ಎಂಬ ವಿವಿಧ ಪದಗಳನ್ನು ಬಳಸುತ್ತದೆ. ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ, ಅನಿರ್ದಿಷ್ಟ ವೇರಿಯೇಬಲ್ ಅನ್ನು ರೂಪಾಂತರ ಪ್ರಕಾರವಾಗಿ ನೋಂದಾಯಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಅದನ್ನು ಬೈರೆಫ್ (ಡೀಫಾಲ್ಟ್) ಅಥವಾ ಬೈವಾಲ್ ಎಂದು ರವಾನಿಸಬಹುದು. ಅಲ್ಲದೆ, ಒಂದು ಕಾರ್ಯ ಅಥವಾ ಉಪವನ್ನು ಘೋಷಿಸಿದಾಗ, ಅದಕ್ಕೆ ಸಾರ್ವಜನಿಕ, ಖಾಸಗಿ ಅಥವಾ ಸ್ನೇಹಿತ ಪದನಾಮವನ್ನು ನೀಡಲಾಗುತ್ತದೆ, ಇದು ಅದನ್ನು ಘೋಷಿಸಿದ ಘಟಕ ಅಥವಾ ಯೋಜನೆಯ ಹೊರಗೆ ಅದನ್ನು ಪ್ರವೇಶಿಸಬಹುದೇ ಎಂದು ನಿರ್ಧರಿಸುತ್ತದೆ. ಮೌಲ್ಯದ ಪ್ರಕಾರ [ಬೈವಲ್]-ವಿಳಾಸವನ್ನು ರವಾನಿಸುವ ಬದಲು ಮೌಲ್ಯದ ನಕಲನ್ನು ರವಾನಿಸುವ ಮೂಲಕ ಒಂದು ಕಾರ್ಯವಿಧಾನಕ್ಕೆ ವಾದದ ಮೌಲ್ಯವನ್ನು ರವಾನಿಸುವ ಒಂದು ಮಾರ್ಗವಾಗಿದೆ. ಇದರ ಪರಿಣಾಮವಾಗಿ, ಚಲಪರಿಮಾಣದ ನಿಜವಾದ ಮೌಲ್ಯವನ್ನು ಅದನ್ನು ರವಾನಿಸುವ ವಿಧಾನದಿಂದ ಬದಲಾಯಿಸಲಾಗುವುದಿಲ್ಲ. ಉಲ್ಲೇಖದ ಮೂಲಕ [ಬೈರೆಫ್]-ಅದರ ಮೌಲ್ಯದ ನಕಲನ್ನು ರವಾನಿಸುವ ಬದಲು, ವೇರಿಯೇಬಲ್ನ ವಿಳಾಸವನ್ನು ರವಾನಿಸುವ ಮೂಲಕ ಒಂದು ಕಾರ್ಯವಿಧಾನಕ್ಕೆ ವಾದದ ಮೌಲ್ಯವನ್ನು ರವಾನಿಸುವ ಒಂದು ಮಾರ್ಗವಾಗಿದೆ. ಇದು ನಿಜವಾದ ವೇರಿಯೇಬಲ್ ಅನ್ನು ಪ್ರವೇಶಿಸಲು ಕಾರ್ಯವಿಧಾನವನ್ನು ಅನುಮತಿಸುತ್ತದೆ. ಇದರ ಪರಿಣಾಮವಾಗಿ, ಚಲಪರಿಮಾಣದ ನಿಜವಾದ ಮೌಲ್ಯವನ್ನು ಅದನ್ನು ರವಾನಿಸುವ ವಿಧಾನದಿಂದ ಬದಲಾಯಿಸಬಹುದು. ಬೇರೆ ರೀತಿಯಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸದ ಹೊರತು, ವಾದಗಳನ್ನು ಉಲ್ಲೇಖದ ಮೂಲಕ ಅಂಗೀಕರಿಸಲಾಗುತ್ತದೆ. ಸಾರ್ವಜನಿಕ (ಐಚ್ಛಿಕ)-ಎಲ್ಲಾ ಮಾಡ್ಯೂಲ್ಗಳಲ್ಲಿನ ಎಲ್ಲಾ ಇತರ ಕಾರ್ಯವಿಧಾನಗಳಿಗೆ ಕಾರ್ಯವಿಧಾನವು ಪ್ರವೇಶಿಸಬಹುದೆಂದು ಸೂಚಿಸುತ್ತದೆ. ಖಾಸಗಿ ಆಯ್ಕೆಯನ್ನು ಒಳಗೊಂಡಿರುವ ಮಾಡ್ಯೂಲ್ನಲ್ಲಿ ಬಳಸಿದರೆ, ಕಾರ್ಯವಿಧಾನವು ಯೋಜನೆಯ ಹೊರಗೆ ಲಭ್ಯವಿರುವುದಿಲ್ಲ. ಖಾಸಗಿ (ಐಚ್ಛಿಕ)-ಕಾರ್ಯವಿಧಾನವು ಅದನ್ನು ಘೋಷಿಸಲಾಗಿರುವ ಮಾಡ್ಯೂಲ್ನಲ್ಲಿರುವ ಇತರ ಕಾರ್ಯವಿಧಾನಗಳಿಗೆ ಮಾತ್ರ ಪ್ರವೇಶಿಸಬಹುದೆಂದು ಸೂಚಿಸುತ್ತದೆ. ಸ್ನೇಹಿತ (ಐಚ್ಛಿಕ)-ವರ್ಗ ಘಟಕದಲ್ಲಿ ಮಾತ್ರ ಬಳಸಲಾಗುತ್ತದೆ. ಕಾರ್ಯವಿಧಾನವು ಯೋಜನೆಯ ಉದ್ದಕ್ಕೂ ಗೋಚರಿಸುತ್ತದೆ, ಆದರೆ ವಸ್ತುವಿನ ನಿದರ್ಶನದ ನಿಯಂತ್ರಕಕ್ಕೆ ಗೋಚರಿಸುವುದಿಲ್ಲ ಎಂದು ಸೂಚಿಸುತ್ತದೆ. ಪ್ರೈವೇಟ್ ಫಂಕ್ಷನ್ ಫಂಕ್ಷನ್ 1 () 'ಕೆಲವು ಕೋಡ್ ಇಲ್ಲಿ ಎಂಡ್ ಫಂಕ್ಷನ್ ಫಂಕ್ಷನ್ ಒಂದು ಮೌಲ್ಯವನ್ನು ಹಿಂದಿರುಗಿಸುವುದಿಲ್ಲ ಮತ್ತು ಅದನ್ನು ಸ್ವತಂತ್ರ ಕಾರ್ಯ ಎಂದು ಕರೆಯಬೇಕಾಗುತ್ತದೆ, ಉದಾಹರಣೆಗೆ, ಫಂಕ್ಷನ್ 1 ಪ್ರೈವೇಟ್ ಫಂಕ್ಷನ್ ಫಂಕ್ಷನ್ 2 () ಪೂರ್ಣಾಂಕ ಕಾರ್ಯ 2 = 5 ಎಂಡ್ ಫಂಕ್ಷನ್ ಈ ಕಾರ್ಯವು ಫಲಿತಾಂಶವನ್ನು (ಸಂಖ್ಯೆ 5) ಹಿಂದಿರುಗಿಸುತ್ತದೆ, ಮತ್ತು ಕರೆ ಅಭಿವ್ಯಕ್ತಿಯ ಭಾಗವಾಗಿರಬಹುದು, ಉದಾಹರಣೆಗೆ, x + ಫಂಕ್ಷನ್ 2 () ಖಾಸಗಿ ಕಾರ್ಯ ಕಾರ್ಯ 3 (ಪೂರ್ಣಾಂಕವಾಗಿ ಬೈವಲ್ ಇಂಟ್ವ್ಯಾಲ್ಯೂ) ಸ್ಟ್ರಿಂಗ್ ಡಿಮ್ ಸ್ಟ್ರಾರೆ (6) ಸ್ಟ್ರಿಂಗ್ ಸ್ಟ್ರಾರೆ = ಅರೇ ("M", "T", "W", "T", "F", "S". ಇದನ್ನು ಕರೆಯುವ ಫಲಿತಾಂಶವನ್ನು ಚಲಪರಿಮಾಣಕ್ಕೆ ನಿಯೋಜಿಸಬಹುದು, ಉದಾಹರಣೆಗೆ, num _ ದಿನ = ಕಾರ್ಯ 3 (ಸಂಖ್ಯೆ). ಪ್ರೈವೇಟ್ ಫಂಕ್ಷನ್ ಫಂಕ್ಷನ್ 4 (ಪೂರ್ಣಾಂಕವಾಗಿ ಬೈರೆಫ್ ಇಂಟ್ವ್ಯಾಲ್ಯೂ) ಇಂಟ್ವ್ಯಾಲ್ಯೂ = ಇಂಟ್ವ್ಯಾಲ್ಯೂ + 1 ಎಂಡ್ ಫಂಕ್ಷನ್ ಈ ಫಂಕ್ಷನ್ ಮೌಲ್ಯವನ್ನು ಹಿಂದಿರುಗಿಸುವುದಿಲ್ಲ ಆದರೆ ಅದರ ವಿಳಾಸವನ್ನು ನಿಯತಾಂಕವಾಗಿ ಹಾದುಹೋಗುವ ವೇರಿಯೇಬಲ್ ಅನ್ನು ಮಾರ್ಪಡಿಸುತ್ತದೆ; ಇದನ್ನು "ಫಂಕ್ಷನ್ 4 (ವೇರಿಯೇಬಲ್ _ ಟು _ ಇಂಕ್ರಿಮೆಂಟ್)" ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ಪಿಎಲ್/ಐನಲ್ಲಿ ಕರೆಯಲ್ಪಡುವ ಕಾರ್ಯವಿಧಾನವನ್ನು ಸ್ಟ್ರಿಂಗ್ ಉದ್ದಗಳು ಮತ್ತು ರಚನೆಯ ಮಿತಿಗಳಂತಹ ವಾದದ ಬಗ್ಗೆ ಮಾಹಿತಿಯನ್ನು ಒದಗಿಸುವ ಡಿಸ್ಕ್ರಿಪ್ಟರ್ ಅನ್ನು ರವಾನಿಸಬಹುದು. ಇದು ಕಾರ್ಯವಿಧಾನವನ್ನು ಹೆಚ್ಚು ಸಾಮಾನ್ಯವಾಗಿಸಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ ಮತ್ತು ಪ್ರೋಗ್ರಾಮರ್ ಅಂತಹ ಮಾಹಿತಿಯನ್ನು ರವಾನಿಸುವ ಅಗತ್ಯವನ್ನು ನಿವಾರಿಸುತ್ತದೆ. ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಪಿಎಲ್/ಐ ಉಲ್ಲೇಖದ ಮೂಲಕ ವಾದಗಳನ್ನು ರವಾನಿಸುತ್ತದೆ. ಎರಡು ಆಯಾಮದ ವ್ಯೂಹದ ಪ್ರತಿಯೊಂದು ಅಂಶದ ಚಿಹ್ನೆಯನ್ನು ಬದಲಾಯಿಸಲು ಒಂದು (ಕ್ಷುಲ್ಲಕ) ಕಾರ್ಯವು ಈ ರೀತಿ ಕಾಣಿಸಬಹುದುಃ ಬದಲಾವಣೆ ಚಿಹ್ನೆಃ ಕಾರ್ಯವಿಧಾನ (ವ್ಯೂಹ); ಘೋಷಿಸು ವ್ಯೂಹ (*, *) ಫ್ಲೋಟ್; ವ್ಯೂಹ =-ವ್ಯೂಹ; ಅಂತ್ಯ ಬದಲಾವಣೆ ಚಿಹ್ನೆ; ಇದನ್ನು ಈ ಕೆಳಗಿನಂತೆ ವಿವಿಧ ವ್ಯೂಹಗಳೊಂದಿಗೆ ಕರೆಯಬಹುದುಃ/* ಮೊದಲ ವ್ಯೂಹವು-5 ರಿಂದ + 10 ಮತ್ತು 3 ರಿಂದ 9 * ವರೆಗೆ ಸೀಮಿತವಾಗಿರುತ್ತದೆ/ಘೋಷಿಸು ವ್ಯೂಹ 1 (-5:10,3:9) ಫ್ಲೋಟ್;/* ಎರಡನೇ ವ್ಯೂಹವು 1 ರಿಂದ 16 ಮತ್ತು 1 ರಿಂದ 16 * ವರೆಗೆ ಸೀಮಿತವಾಗಿರುತ್ತದೆ/ಘೋಷಿಸು ವ್ಯೂಹ 2 (16,16) ಫ್ಲೋಟ್ ಕರೆ ಬದಲಾವಣೆ ಚಿಹ್ನೆ (ವ್ಯೂಹ 1); ಕರೆ ಬದಲಾವಣೆ ಚಿಹ್ನೆ (ವ್ಯೂಹ 2); ಪೈಥಾನ್ನಲ್ಲಿ ಪೈಥಾನ್ ಎಂಬ ಕೀವರ್ಡ್ ಅನ್ನು ಒಂದು ಕಾರ್ಯವನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ. ಕಾರ್ಯದ ಮುಖ್ಯಭಾಗವನ್ನು ರೂಪಿಸುವ ಹೇಳಿಕೆಗಳು ಒಂದೇ ಸಾಲಿನಲ್ಲಿ ಮುಂದುವರಿಯಬೇಕು ಅಥವಾ ಮುಂದಿನ ಸಾಲಿನಲ್ಲಿ ಪ್ರಾರಂಭವಾಗಿ ಇಂಡೆಂಟ್ ಆಗಿರಬೇಕು. ಕೆಳಗಿನ ಉದಾಹರಣೆಯ ಪ್ರೋಗ್ರಾಂ "ಹಲೋ ವರ್ಲ್ಡ್!" ಅನ್ನು ಮುದ್ರಿಸುತ್ತದೆ. ಅದರ ನಂತರ ಮುಂದಿನ line.def ಸಿಂಪಲ್ _ ಫಂಕ್ಷನ್ () ನಲ್ಲಿ "ವಿಕಿಪೀಡಿಯಾ": ಮುದ್ರಿಸಿ ('ಹಲೋ ವರ್ಲ್ಡ್!') ಪ್ರಿಂಟ್ ('ವಿಕಿಪೀಡಿಯಾ') ಸಿಂಪಲ್ _ ಫಂಕ್ಷನ್ () #ಔಟ್ಪುಟ್ ಹೀಗಿರುತ್ತದೆಃ ಹಲೋ ವರ್ಲ್ಡ್! ವಿಕಿಪೀಡಿಯ ಡೆಫ್ ಫಂಕ್ (ಹೆಸರು) ಪ್ರಿಂಟ್ ("ಸ್ವಾಗತ" + ಹೆಸರು) ಪ್ರಿಂಟ್ (ಫಂಕ್ ("ಮಾರ್ಟಿನ್"))) #output ಎಂದರೆಃ ವೆಲ್ಕಮ್ ಮಾರ್ಟಿನ್ ಲೋಕಲ್ ವೇರಿಯೇಬಲ್ಗಳು, ರಿಕರ್ಶನ್ ಮತ್ತು ರೀಎಂಟ್ರಾನ್ಸಿ ಒಂದು ಉಪಪ್ರೋಗ್ರಾಮ್ ನಿರ್ದಿಷ್ಟ ಪ್ರಮಾಣದ ಸ್ಕ್ರಾಚ್ ಜಾಗವನ್ನು ಬಳಸುವುದು ಉಪಯುಕ್ತವೆಂದು ಕಂಡುಕೊಳ್ಳಬಹುದು; ಅಂದರೆ, ಮಧ್ಯಂತರ ಫಲಿತಾಂಶಗಳನ್ನು ಹಿಡಿದಿಡಲು ಆ ಉಪಪ್ರೋಗ್ರಾಮ್ನ ಕಾರ್ಯಗತಗೊಳಿಸುವಾಗ ಬಳಸುವ ಮೆಮೊರಿ. ಈ ಸ್ಕ್ರಾಚ್ ಜಾಗದಲ್ಲಿ ಸಂಗ್ರಹವಾಗಿರುವ ವೇರಿಯೇಬಲ್ಗಳನ್ನು ಸ್ಥಳೀಯ ವೇರಿಯೇಬಲ್ಗಳು ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ ಮತ್ತು ಸ್ಕ್ರಾಚ್ ಜಾಗವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುವ ದಾಖಲೆ ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ಸಕ್ರಿಯಗೊಳಿಸುವ ದಾಖಲೆಯು ಸಾಮಾನ್ಯವಾಗಿ ಹಿಂದಿರುಗುವ ವಿಳಾಸವನ್ನು ಹೊಂದಿರುತ್ತದೆ, ಅದು ಉಪಪ್ರೋಗ್ರಾಮ್ ಮುಗಿದ ನಂತರ ನಿಯಂತ್ರಣವನ್ನು ಎಲ್ಲಿಗೆ ರವಾನಿಸಬೇಕು ಎಂದು ಹೇಳುತ್ತದೆ. ಉಪಪ್ರೋಗ್ರಾಮ್ ಯಾವುದೇ ಸಂಖ್ಯೆ ಮತ್ತು ಕರೆ ಸೈಟ್ಗಳ ಸ್ವರೂಪವನ್ನು ಹೊಂದಿರಬಹುದು. ಪುನರಾವರ್ತನೆಯನ್ನು ಬೆಂಬಲಿಸಿದರೆ, ಒಂದು ಉಪಪ್ರೋಗ್ರಾಮ್ ತನ್ನನ್ನು ತಾನೇ ಕರೆಯಬಹುದು, ಅದೇ ಉಪಪ್ರೋಗ್ರಾಮ್ನ ಮತ್ತೊಂದು ನೆಸ್ಟೆಡ್ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯು ಸಂಭವಿಸಿದಾಗ ಅದರ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯು ಅಮಾನತುಗೊಳ್ಳುತ್ತದೆ. ಕೆಲವು ಸಂಕೀರ್ಣ ಕ್ರಮಾವಳಿಗಳನ್ನು ಸರಳಗೊಳಿಸಲು ಮತ್ತು ಸಂಕೀರ್ಣ ಸಮಸ್ಯೆಗಳನ್ನು ವಿಭಜಿಸಲು ಪುನರಾವರ್ತನೆಯು ಒಂದು ಉಪಯುಕ್ತ ವಿಧಾನವಾಗಿದೆ. ಪುನರಾವರ್ತಿತ ಭಾಷೆಗಳು ಸಾಮಾನ್ಯವಾಗಿ ಪ್ರತಿ ಕರೆಯಲ್ಲಿ ಸ್ಥಳೀಯ ಅಸ್ಥಿರಗಳ ಹೊಸ ಪ್ರತಿಯನ್ನು ಒದಗಿಸುತ್ತವೆ. ಸ್ಥಳೀಯ ಅಸ್ಥಿರಗಳ ಮೌಲ್ಯವು ಕರೆಗಳ ನಡುವೆ ಒಂದೇ ಆಗಿರಬೇಕೆಂದು ಪ್ರೋಗ್ರಾಮರ್ ಬಯಸಿದರೆ, ಅವುಗಳನ್ನು ಕೆಲವು ಭಾಷೆಗಳಲ್ಲಿ ಸ್ಥಿರವೆಂದು ಘೋಷಿಸಬಹುದು, ಅಥವಾ ಜಾಗತಿಕ ಮೌಲ್ಯಗಳು ಅಥವಾ ಸಾಮಾನ್ಯ ಪ್ರದೇಶಗಳನ್ನು ಬಳಸಬಹುದು. ಫಿಬೊನಾಚಿ ಸಂಖ್ಯೆಗಳನ್ನು ಕಂಡುಹಿಡಿಯಲು C/C + + ನಲ್ಲಿ ಪುನರಾವರ್ತಿತ ಕಾರ್ಯದ ಒಂದು ಉದಾಹರಣೆ ಹೀಗಿದೆಃ int Fib (int n) {(n <= 1) {ರಿಟರ್ನ್ n;} ರಿಟರ್ನ್ Fib (n-1) + Fib (n-2);} ಫೋರ್ಟ್ರಾನ್ನಂತಹ ಆರಂಭಿಕ ಭಾಷೆಗಳು ಆರಂಭದಲ್ಲಿ ಪುನರಾವರ್ತನೆಯನ್ನು ಬೆಂಬಲಿಸಲಿಲ್ಲ ಏಕೆಂದರೆ ಅಸ್ಥಿರಗಳನ್ನು ಸ್ಥಿರವಾಗಿ ನಿಗದಿಪಡಿಸಲಾಗಿದೆ, ಜೊತೆಗೆ ರಿಟರ್ನ್ ವಿಳಾಸದ ಸ್ಥಳವೂ ಸಹ. ಆರಂಭಿಕ ಕಂಪ್ಯೂಟರ್ ಸೂಚನಾ ಸೆಟ್ಗಳು ರಿಟರ್ನ್ ವಿಳಾಸಗಳು ಮತ್ತು ಅಸ್ಥಿರಗಳನ್ನು ಸ್ಟಾಕ್ನಲ್ಲಿ ಸಂಗ್ರಹಿಸುವುದನ್ನು ಕಷ್ಟಕರವಾಗಿಸಿದವು. ಸೂಚ್ಯಂಕ ರೆಜಿಸ್ಟರ್ಗಳು ಅಥವಾ ಸಾಮಾನ್ಯ-ಉದ್ದೇಶದ ರೆಜಿಸ್ಟರ್ಗಳನ್ನು ಹೊಂದಿರುವ ಯಂತ್ರಗಳು, ಉದಾಹರಣೆಗೆ, ಸಿಡಿಸಿ 6000 ಸರಣಿಗಳು, ಪಿಡಿಪಿ-6, ಜಿಇ 635, ಸಿಸ್ಟಮ್/360, ಯುನಿವಾಕ್ 1100 ಸರಣಿಗಳು, ಆ ರೆಜಿಸ್ಟರ್ಗಳಲ್ಲಿ ಒಂದನ್ನು ಸ್ಟಾಕ್ ಪಾಯಿಂಟರ್ ಆಗಿ ಬಳಸಬಹುದು. ALGOL ನಂತರದ ಆಧುನಿಕ ಭಾಷೆಗಳಾದ ಪಿಎಲ್/ಐ ಮತ್ತು ಸಿ ಬಹುತೇಕ ಏಕರೂಪವಾಗಿ ಸ್ಟ್ಯಾಕ್ ಅನ್ನು ಬಳಸುತ್ತವೆ, ಸಾಮಾನ್ಯವಾಗಿ ಉಪಪ್ರೋಗ್ರಾಮ್ನ ಪ್ರತಿ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಗೆ ಹೊಸ ಸಕ್ರಿಯಗೊಳಿಸುವ ದಾಖಲೆಯನ್ನು ಒದಗಿಸಲು ಹೆಚ್ಚಿನ ಆಧುನಿಕ ಕಂಪ್ಯೂಟರ್ ಸೂಚನಾ ಸೆಟ್ಗಳಿಂದ ಬೆಂಬಲಿತವಾಗಿದೆ. ಆ ರೀತಿಯಲ್ಲಿ, ನೆಸ್ಟೆಡ್ ಮರಣದಂಡನೆಯು ಪ್ರಗತಿಯಲ್ಲಿರುವ ಇತರ ಅಮಾನತುಗೊಂಡ ಮರಣದಂಡನೆಗಳ ಮೇಲಿನ ಪರಿಣಾಮದ ಬಗ್ಗೆ ಚಿಂತಿಸದೆ ಅದರ ಸ್ಥಳೀಯ ಅಸ್ಥಿರಗಳನ್ನು ಮಾರ್ಪಡಿಸಲು ಮುಕ್ತವಾಗಿದೆ. ನೆಸ್ಟೆಡ್ ಕರೆಗಳು ಸಂಗ್ರಹವಾಗುತ್ತಿದ್ದಂತೆ, ಪ್ರತಿ ಅಮಾನತುಗೊಂಡ ಉಪಪ್ರೋಗ್ರಾಮ್ಗೆ ಒಂದು ಸಕ್ರಿಯಗೊಳಿಸುವ ದಾಖಲೆಯನ್ನು ಒಳಗೊಂಡಿರುವ ಕಾಲ್ ಸ್ಟ್ಯಾಕ್ ರಚನೆಯು ರೂಪುಗೊಳ್ಳುತ್ತದೆ. ವಾಸ್ತವವಾಗಿ, ಈ ಸ್ಟ್ಯಾಕ್ ರಚನೆಯು ವಾಸ್ತವಿಕವಾಗಿ ಸರ್ವತ್ರವಾಗಿದೆ, ಆದ್ದರಿಂದ ಸಕ್ರಿಯಗೊಳಿಸುವ ದಾಖಲೆಗಳನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ಸ್ಟ್ಯಾಕ್ ಫ್ರೇಮ್ಗಳು ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ಪ್ಯಾಸ್ಕಲ್, ಪಿಎಲ್/ಐ, ಮತ್ತು ಅಡಾ ಮುಂತಾದ ಕೆಲವು ಭಾಷೆಗಳು ಸಹ ನೆಸ್ಟೆಡ್ ಕಾರ್ಯಗಳನ್ನು ಬೆಂಬಲಿಸುತ್ತವೆ, ಇವು ಬಾಹ್ಯ (ಮೂಲ) ಕಾರ್ಯದ ವ್ಯಾಪ್ತಿಯಲ್ಲಿ ಮಾತ್ರ ಕರೆಯಬಹುದಾದ ಕಾರ್ಯಗಳಾಗಿವೆ. ಆಂತರಿಕ ಕಾರ್ಯಗಳು ಅವುಗಳನ್ನು ಕರೆಯುವ ಬಾಹ್ಯ ಕಾರ್ಯದ ಸ್ಥಳೀಯ ಅಸ್ಥಿರಗಳಿಗೆ ಪ್ರವೇಶವನ್ನು ಹೊಂದಿವೆ. ಸಕ್ರಿಯಗೊಳಿಸುವ ದಾಖಲೆಯೊಳಗೆ ಹೆಚ್ಚುವರಿ ಸಂದರ್ಭ ಮಾಹಿತಿಯನ್ನು ಸಂಗ್ರಹಿಸುವ ಮೂಲಕ ಇದನ್ನು ಸಾಧಿಸಲಾಗುತ್ತದೆ, ಇದನ್ನು ಪ್ರದರ್ಶನ ಎಂದೂ ಕರೆಯಲಾಗುತ್ತದೆ. ಅದೇ ಉಪಪ್ರೋಗ್ರಾಮ್ನ ಮತ್ತೊಂದು ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯು ಈಗಾಗಲೇ ಪ್ರಗತಿಯಲ್ಲಿರುವಾಗಲೂ ಒಂದು ಉಪಪ್ರೋಗ್ರಾಮ್ ಅನ್ನು ಸರಿಯಾಗಿ ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದಾದರೆ, ಆ ಉಪಪ್ರೋಗ್ರಾಮ್ ಅನ್ನು ಮರುಪ್ರವೇಶ ಎಂದು ಹೇಳಲಾಗುತ್ತದೆ. ಪುನರಾವರ್ತಿತ ಉಪಪ್ರೋಗ್ರಾಮ್ ಪುನರಾವರ್ತಿತವಾಗಿರಬೇಕು. ಅನೇಕ ಥ್ರೆಡ್ಗಳು ಪರಸ್ಪರ ಮಧ್ಯಪ್ರವೇಶಿಸುವ ಭಯವಿಲ್ಲದೆ ಒಂದೇ ಉಪಪ್ರೋಗ್ರಾಮ್ ಅನ್ನು ಕರೆಯುವುದರಿಂದ ಪುನರಾವರ್ತಕ ಉಪಪ್ರೋಗ್ರಾಮ್ಗಳು ಬಹು-ಥ್ರೆಡ್ ಸಂದರ್ಭಗಳಲ್ಲಿ ಸಹ ಉಪಯುಕ್ತವಾಗಿವೆ. ಐಬಿಎಂ ಸಿಐಸಿಎಸ್ ವಹಿವಾಟು ಸಂಸ್ಕರಣಾ ವ್ಯವಸ್ಥೆಯಲ್ಲಿ, ಅರೆ-ಪುನರಾವರ್ತಕವು ಸ್ವಲ್ಪ ಕಡಿಮೆ ನಿರ್ಬಂಧಿತವಾಗಿತ್ತು, ಆದರೆ ಅನೇಕ ಥ್ರೆಡ್ಗಳಿಂದ ಹಂಚಿಕೊಳ್ಳಲಾದ ಅಪ್ಲಿಕೇಶನ್ ಪ್ರೋಗ್ರಾಂಗಳಿಗೆ ಇದೇ ರೀತಿಯ ಅಗತ್ಯವಿತ್ತು. ಬಲವಾಗಿ ಟೈಪ್ ಮಾಡಲಾದ ಭಾಷೆಗಳಲ್ಲಿ, ಒಂದೇ ಹೆಸರಿನೊಂದಿಗೆ ಹಲವಾರು ಕಾರ್ಯಗಳನ್ನು ಹೊಂದಿರುವುದು ಕೆಲವೊಮ್ಮೆ ಅಪೇಕ್ಷಣೀಯವಾಗಿದೆ, ಆದರೆ ವಿವಿಧ ರೀತಿಯ ಡೇಟಾದಲ್ಲಿ ಅಥವಾ ವಿಭಿನ್ನ ನಿಯತಾಂಕ ಪ್ರೊಫೈಲ್ಗಳೊಂದಿಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ಒಂದು ವರ್ಗಮೂಲ ಕಾರ್ಯವನ್ನು ವಾಸ್ತವಿಕ, ಸಂಕೀರ್ಣ ಮೌಲ್ಯಗಳು ಅಥವಾ ಮ್ಯಾಟ್ರಿಕ್ಸ್ಗಳ ಮೇಲೆ ಕಾರ್ಯನಿರ್ವಹಿಸಲು ವ್ಯಾಖ್ಯಾನಿಸಬಹುದು. ಪ್ರತಿ ಪ್ರಕರಣದಲ್ಲೂ ಬಳಸಬೇಕಾದ ಅಲ್ಗಾರಿದಮ್ ವಿಭಿನ್ನವಾಗಿದೆ, ಮತ್ತು ರಿಟರ್ನ್ ಫಲಿತಾಂಶವು ವಿಭಿನ್ನವಾಗಿರಬಹುದು. ಒಂದೇ ಹೆಸರಿನೊಂದಿಗೆ ಮೂರು ಪ್ರತ್ಯೇಕ ಕಾರ್ಯಗಳನ್ನು ಬರೆಯುವ ಮೂಲಕ, ಪ್ರೋಗ್ರಾಮರ್ಗೆ ಪ್ರತಿ ರೀತಿಯ ದತ್ತಾಂಶಕ್ಕೆ ವಿಭಿನ್ನ ಹೆಸರುಗಳನ್ನು ನೆನಪಿಟ್ಟುಕೊಳ್ಳಬೇಕಾಗಿಲ್ಲ. ಇದಲ್ಲದೆ, ಧನಾತ್ಮಕ ಮತ್ತು ಋಣಾತ್ಮಕ ವಾಸ್ತವಿಕಗಳನ್ನು ಪ್ರತ್ಯೇಕಿಸಲು, ವಾಸ್ತವಿಕಗಳಿಗೆ ಒಂದು ಉಪಪ್ರಕಾರವನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಬಹುದಾದರೆ, ವಾಸ್ತವಿಕಗಳಿಗೆ ಎರಡು ಕಾರ್ಯಗಳನ್ನು ಬರೆಯಬಹುದು, ಒಂದು ನಿಯತಾಂಕವು ಧನಾತ್ಮಕವಾಗಿದ್ದಾಗ ವಾಸ್ತವಿಕವನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ ಮತ್ತು ಇನ್ನೊಂದು ನಿಯತಾಂಕವು ಋಣಾತ್ಮಕವಾಗಿದ್ದಾಗ ಸಂಕೀರ್ಣ ಮೌಲ್ಯವನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ. ಆಬ್ಜೆಕ್ಟ್-ಓರಿಯೆಂಟೆಡ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ನಲ್ಲಿ, ಒಂದೇ ಹೆಸರಿನ ಕಾರ್ಯಗಳ ಸರಣಿಯು ವಿಭಿನ್ನ ನಿಯತಾಂಕ ಪ್ರೊಫೈಲ್ಗಳು ಅಥವಾ ವಿವಿಧ ರೀತಿಯ ನಿಯತಾಂಕಗಳನ್ನು ಸ್ವೀಕರಿಸಿದಾಗ, ಪ್ರತಿಯೊಂದು ಕಾರ್ಯಗಳನ್ನು ಓವರ್ಲೋಡ್ ಮಾಡಲಾಗಿದೆ ಎಂದು ಹೇಳಲಾಗುತ್ತದೆ. ಒಂದೇ ಹೆಸರಿನ (ಪ್ರದೇಶ) ಆದರೆ ವಿಭಿನ್ನ ನಿಯತಾಂಕಗಳೊಂದಿಗೆ ಎರಡು ಕಾರ್ಯಗಳ ಅನುಷ್ಠಾನವನ್ನು ಪ್ರದರ್ಶಿಸುವ ಸಿ + + ನಲ್ಲಿ ಫಂಕ್ಷನ್ ಓವರ್ಲೋಡಿಂಗ್ನ ಉದಾಹರಣೆ ಇಲ್ಲಿದೆಃ #include <ಐಯೋಸ್ಟ್ರೀಮ್> ಡಬಲ್ ಏರಿಯಾ (ಡಬಲ್ ಎಚ್, ಡಬಲ್ ಡಬ್ಲ್ಯೂ) {ರಿಟರ್ನ್ ಎಚ್ * ಡಬ್ಲ್ಯೂ;}/* ಮೊದಲ ಏರಿಯಾ ಕಾರ್ಯವು ಆಯತದ ವಿಸ್ತೀರ್ಣವನ್ನು ಕಂಡುಹಿಡಿಯುವುದಾಗಿದೆ, * ಆದ್ದರಿಂದ ಇದು ಎತ್ತರ ಮತ್ತು ಅಗಲಕ್ಕೆ ಎರಡು ಸಂಖ್ಯೆಗಳನ್ನು ನಿಯತಾಂಕಗಳಾಗಿ ಸ್ವೀಕರಿಸುತ್ತದೆ. */ಡಬಲ್ ಏರಿಯಾ (ಡಬಲ್ ಆರ್) {ರಿಟರ್ನ್ ಆರ್ * ಆರ್ * 3.14;}/* ಎರಡನೇ ಏರಿಯಾ ಕಾರ್ಯವು ವೃತ್ತದ ವಿಸ್ತೀರ್ಣವನ್ನು ಕಂಡುಹಿಡಿಯುವುದಾಗಿದೆ, ಆದ್ದರಿಂದ ಇದು ತ್ರಿಜ್ಯಕ್ಕೆ ಕೇವಲ ಒಂದು ಸಂಖ್ಯೆಯನ್ನು ನಿಯತಾಂಕವಾಗಿ ಸ್ವೀಕರಿಸುತ್ತದೆ. */int ಮೇನ್ () {ಡಬಲ್ ರೆಕ್ಟಾಂಗಲ್ _ ಏರಿಯಾ = ಏರಿಯಾ (3,4);// ಇದು ಮೊದಲ ಏರಿಯಾ ಫಂಕ್ಷನ್ ಅನ್ನು ಕರೆಯುತ್ತದೆ, ಏಕೆಂದರೆ ಎರಡು ನಿಯತಾಂಕಗಳನ್ನು ಒದಗಿಸಲಾಗಿದೆ. ಡಬಲ್ ಸರ್ಕಲ್ _ ಏರಿಯಾ = ಏರಿಯಾ (5);// ಇದು ಎರಡನೇ ಏರಿಯಾ ಫಂಕ್ಷನ್ ಅನ್ನು ಕರೆಯುತ್ತದೆ, ಏಕೆಂದರೆ ಕೇವಲ ಒಂದು ನಿಯತಾಂಕವನ್ನು ಮಾತ್ರ ಒದಗಿಸಲಾಗಿದೆ. std:: cout <<"ಒಂದು ಆಯತದ ವಿಸ್ತೀರ್ಣವು" <<ಆಯತ _ ಪ್ರದೇಶ <<std:: ಅಂತ್ಯ; std:: cout <<"ವೃತ್ತದ ವಿಸ್ತೀರ್ಣವು" <<ವೃತ್ತ _ ಪ್ರದೇಶ <<std:: ಅಂತ್ಯ;} ಮತ್ತೊಂದು ಉದಾಹರಣೆಯಾಗಿ, ಒಂದು ಕಾರ್ಯವು ನಿರ್ದೇಶನಗಳನ್ನು ಸ್ವೀಕರಿಸುವ ವಸ್ತುವನ್ನು ನಿರ್ಮಿಸಬಹುದು ಮತ್ತು ಪರದೆಯ ಮೇಲೆ ಈ ಬಿಂದುಗಳಿಗೆ ಅದರ ಮಾರ್ಗವನ್ನು ಪತ್ತೆಹಚ್ಚಬಹುದು. ಕನ್ಸ್ಟ್ರಕ್ಟರ್ಗೆ ರವಾನಿಸಬಹುದಾದ ಹಲವಾರು ನಿಯತಾಂಕಗಳಿವೆ (ಜಾಡಿನ ಬಣ್ಣ, ಆರಂಭಿಕ x ಮತ್ತು y ನಿರ್ದೇಶಾಂಕಗಳು, ಜಾಡಿನ ವೇಗ). ಪ್ರೋಗ್ರಾಮರ್ಗೆ ಕನ್ಸ್ಟ್ರಕ್ಟರ್ ಕೇವಲ ಬಣ್ಣದ ನಿಯತಾಂಕವನ್ನು ಮಾತ್ರ ಸ್ವೀಕರಿಸಲು ಸಾಧ್ಯವಾಗಬೇಕೆಂದು ಬಯಸಿದರೆ, ಅವರು ಕೇವಲ ಬಣ್ಣವನ್ನು ಸ್ವೀಕರಿಸುವ ಮತ್ತೊಂದು ಕನ್ಸ್ಟ್ರಕ್ಟರ್ಗೆ ಕರೆ ಮಾಡಬಹುದು, ಅದು ಎಲ್ಲಾ ಇತರ ನಿಯತಾಂಕಗಳಿಗೆ ಡೀಫಾಲ್ಟ್ ಮೌಲ್ಯಗಳ ಗುಂಪಿನಲ್ಲಿ ಹಾದುಹೋಗುವ ಎಲ್ಲಾ ನಿಯತಾಂಕಗಳೊಂದಿಗೆ ಕನ್ಸ್ಟ್ರಕ್ಟರ್ ಅನ್ನು ಕರೆಯುತ್ತದೆ (X ಮತ್ತು Y ಅನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ಪರದೆಯ ಮೇಲೆ ಕೇಂದ್ರೀಕರಿಸಲಾಗುತ್ತದೆ ಅಥವಾ ಮೂಲದಲ್ಲಿ ಇರಿಸಲಾಗುತ್ತದೆ, ಮತ್ತು ವೇಗವನ್ನು ಕೋಡರ್ ಆಯ್ಕೆ ಮಾಡಿದ ಮತ್ತೊಂದು ಮೌಲ್ಯಕ್ಕೆ ಹೊಂದಿಸಲಾಗುತ್ತದೆ). ವಿವಿಧ ರೀತಿಯ ವಾದಗಳೊಂದಿಗೆ ಕರೆಯಲ್ಪಡುವ ಪ್ರವೇಶ ಉಲ್ಲೇಖಗಳ ಗುಂಪಿಗೆ ಸಾಮಾನ್ಯ ಹೆಸರನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಲು ಪಿಎಲ್/ಐ ಜೆನೆರಿಕ್ ಗುಣಲಕ್ಷಣವನ್ನು ಹೊಂದಿದೆ. ಉದಾಹರಣೆಃ ಜೆನ್ _ ನೇಮ್ ಜೆನೆರಿಕ್ ಅನ್ನು ಘೋಷಿಸಿ (ಹೆಸರು ಯಾವಾಗ (ಸ್ಥಿರವಾದ ಬೈನರಿ), ಫ್ಲೇಮ್ ಯಾವಾಗ (ಫ್ಲೋಟ್), ಪಥನಾಮ ಇತರ); ಪ್ರತಿ ನಮೂದಿಗೆ ಬಹು ವಾದ ವ್ಯಾಖ್ಯಾನಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಬಹುದು. "ಜೆನ್ _ ನೇಮ್" ಗೆ ಕರೆ ಮಾಡಿದರೆ, ವಾದವನ್ನು ಬೈನರಿ ಆಗಿ ನಿಗದಿಪಡಿಸಿದಾಗ "ನೇಮ್", ಫ್ಲೋಟ್ ಮಾಡಿದಾಗ "ಫ್ಲೇಮ್" ಇತ್ಯಾದಿಗಳಿಗೆ ಕರೆ ಬರುತ್ತದೆ. ವಾದವು ಯಾವುದೇ ಆಯ್ಕೆಗಳಿಗೆ ಹೊಂದಿಕೆಯಾಗದಿದ್ದರೆ "ಪಥನಾಮ" ಎಂದು ಕರೆಯಲಾಗುವುದಿಲ್ಲ. ಮುಚ್ಚುವಿಕೆಯು ಅದನ್ನು ರಚಿಸಿದ ಪರಿಸರದಿಂದ ಸೆರೆಹಿಡಿಯಲಾದ ಅದರ ಕೆಲವು ಅಸ್ಥಿರಗಳ ಮೌಲ್ಯಗಳೊಂದಿಗೆ ಒಂದು ಉಪಪ್ರೋಗ್ರಾಮ್ ಆಗಿದೆ. ಮುಚ್ಚುವಿಕೆಯು ಜಾನ್ ಮೆಕಾರ್ಥಿ ಪರಿಚಯಿಸಿದ ಲಿಸ್ಪ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯ ಒಂದು ಗಮನಾರ್ಹ ಲಕ್ಷಣವಾಗಿದೆ. ಅನುಷ್ಠಾನವನ್ನು ಅವಲಂಬಿಸಿ, ಮುಚ್ಚುವಿಕೆಯು ಅಡ್ಡಪರಿಣಾಮಗಳಿಗೆ ಒಂದು ಕಾರ್ಯವಿಧಾನವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. ಸಂಪ್ರದಾಯಗಳು ಕಾರ್ಯಗಳ ಕೋಡಿಂಗ್ಗಾಗಿ ವ್ಯಾಪಕ ಸಂಖ್ಯೆಯ ಸಂಪ್ರದಾಯಗಳನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸಲಾಗಿದೆ. ತಮ್ಮ ಹೆಸರಿಗೆ ಸಂಬಂಧಿಸಿದಂತೆ, ಅನೇಕ ಅಭಿವರ್ಧಕರು ಒಂದು ಕಾರ್ಯದ ಹೆಸರು ಒಂದು ನಿರ್ದಿಷ್ಟ ಕಾರ್ಯವನ್ನು ಮಾಡುವಾಗ ಕ್ರಿಯಾಪದವಾಗಿರಬೇಕು, ಅದು ಸ್ವಲ್ಪ ವಿಚಾರಣೆ ಮಾಡಿದಾಗ ವಿಶೇಷಣವಾಗಿರಬೇಕು ಮತ್ತು ಅಸ್ಥಿರಗಳನ್ನು ಬದಲಿಸಲು ಬಳಸಿದಾಗ ನಾಮಪದವಾಗಿರಬೇಕು ಎಂಬ ವಿಧಾನವನ್ನು ಅಳವಡಿಸಿಕೊಂಡಿದ್ದಾರೆ. ಕೆಲವು ಪ್ರೋಗ್ರಾಮರ್ಗಳು ಒಂದು ಕಾರ್ಯವು ಕೇವಲ ಒಂದು ಕಾರ್ಯವನ್ನು ಮಾತ್ರ ನಿರ್ವಹಿಸಬೇಕು ಎಂದು ಸೂಚಿಸುತ್ತಾರೆ, ಮತ್ತು ಒಂದು ಕಾರ್ಯವು ಒಂದಕ್ಕಿಂತ ಹೆಚ್ಚು ಕಾರ್ಯಗಳನ್ನು ನಿರ್ವಹಿಸಿದರೆ, ಅದನ್ನು ಹೆಚ್ಚಿನ ಕಾರ್ಯಗಳಾಗಿ ವಿಂಗಡಿಸಬೇಕು. ಕೋಡ್ ನಿರ್ವಹಣೆಯಲ್ಲಿ ಕಾರ್ಯಗಳು ಪ್ರಮುಖ ಅಂಶಗಳಾಗಿವೆ ಮತ್ತು ಪ್ರೋಗ್ರಾಂನಲ್ಲಿ ಅವುಗಳ ಪಾತ್ರಗಳು ವಿಭಿನ್ನವಾಗಿರಬೇಕು ಎಂದು ಅವರು ವಾದಿಸುತ್ತಾರೆ. ಮಾಡ್ಯುಲರ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ (ಮಾಡ್ಯುಲರೈಸಿಂಗ್ ಕೋಡ್) ಪ್ರತಿಪಾದಕರು ಪ್ರತಿ ಕಾರ್ಯವು ಇತರ ಕೋಡ್ಗಳ ಮೇಲೆ ಕನಿಷ್ಠ ಅವಲಂಬನೆಯನ್ನು ಹೊಂದಿರಬೇಕು ಎಂದು ಪ್ರತಿಪಾದಿಸುತ್ತಾರೆ. ಉದಾಹರಣೆಗೆ, ಜಾಗತಿಕ ಅಸ್ಥಿರಗಳ ಬಳಕೆಯನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ಈ ದೃಷ್ಟಿಕೋನಕ್ಕಾಗಿ ಪ್ರತಿಪಾದಿಸುವವರು ಅವಿವೇಕವೆಂದು ಪರಿಗಣಿಸುತ್ತಾರೆ, ಏಕೆಂದರೆ ಇದು ಕಾರ್ಯ ಮತ್ತು ಈ ಜಾಗತಿಕ ಅಸ್ಥಿರಗಳ ನಡುವೆ ಬಿಗಿಯಾದ ಜೋಡಣೆಯನ್ನು ಸೇರಿಸುತ್ತದೆ. ಅಂತಹ ಜೋಡಣೆಯು ಅಗತ್ಯವಿಲ್ಲದಿದ್ದರೆ, ಅದರ ಬದಲಿಗೆ ಪಾಸ್ ಮಾಡಲಾದ ನಿಯತಾಂಕಗಳನ್ನು ಸ್ವೀಕರಿಸಲು ರೀಫ್ಯಾಕ್ಟರ್ ಕಾರ್ಯಗಳಿಗೆ ಅವರ ಸಲಹೆ. ಆದಾಗ್ಯೂ, ಕಾರ್ಯಗಳಿಗೆ ರವಾನಿಸಲಾದ ನಿಯತಾಂಕಗಳ ಸಂಖ್ಯೆಯನ್ನು ಹೆಚ್ಚಿಸುವುದರಿಂದ ಕೋಡ್ ಓದುವಿಕೆಯ ಮೇಲೆ ಪರಿಣಾಮ ಬೀರಬಹುದು. ರಿಟರ್ನ್ ಕೋಡ್ಗಳು ಅದರ ಮುಖ್ಯ ಅಥವಾ ಸಾಮಾನ್ಯ ಪರಿಣಾಮದ ಜೊತೆಗೆ, ಅದರ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯ ಸಮಯದಲ್ಲಿ ಸಂಭವಿಸಬಹುದಾದ ಅಸಾಧಾರಣ ಪರಿಸ್ಥಿತಿಗಳ ಬಗ್ಗೆ ಸಬ್ ರುಟೀನ್ ಕರೆ ಮಾಡುವ ಪ್ರೋಗ್ರಾಂಗೆ ತಿಳಿಸಬೇಕಾಗಬಹುದು. ಕೆಲವು ಭಾಷೆಗಳು ಮತ್ತು ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಮಾನದಂಡಗಳಲ್ಲಿ, ಇದನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ರಿಟರ್ನ್ ಕೋಡ್ ಮೂಲಕ ಮಾಡಲಾಗುತ್ತದೆ, ಇದು ಉಪಪ್ರೋಗ್ರಾಮ್ನಿಂದ ಕೆಲವು ಪ್ರಮಾಣಿತ ಸ್ಥಳದಲ್ಲಿ ಇರಿಸಲಾದ ಪೂರ್ಣಾಂಕ ಮೌಲ್ಯವಾಗಿದೆ, ಇದು ಸಾಮಾನ್ಯ ಮತ್ತು ಅಸಾಧಾರಣ ಪರಿಸ್ಥಿತಿಗಳನ್ನು ಸಂಕೇತಿಸುತ್ತದೆ. ಐಬಿಎಂ ಸಿಸ್ಟಮ್/360ರಲ್ಲಿ, ಸಬ್ ರುಟೀನ್ನಿಂದ ರಿಟರ್ನ್ ಕೋಡ್ ಅನ್ನು ನಿರೀಕ್ಷಿಸಲಾಗುತ್ತಿತ್ತು, ರಿಟರ್ನ್ ಮೌಲ್ಯವನ್ನು ಸಾಮಾನ್ಯವಾಗಿ 4ರ ಗುಣಾಕಾರವಾಗಿ ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗುತ್ತಿತ್ತು-ಇದರಿಂದಾಗಿ ಹೆಚ್ಚುವರಿ ಷರತ್ತುಬದ್ಧ ಪರೀಕ್ಷೆಗಳನ್ನು ತಪ್ಪಿಸಲು ಕರೆ ಸೂಚನೆಯ ನಂತರ ತಕ್ಷಣವೇ ಇರುವ ಬ್ರಾಂಚ್ ಟೇಬಲ್ಗೆ ನೇರ ಬ್ರಾಂಚ್ ಟೇಬಲ್ ಸೂಚ್ಯಂಕವಾಗಿ ಇದನ್ನು ಬಳಸಬಹುದಾಗಿತ್ತು, ಇದು ದಕ್ಷತೆಯನ್ನು ಮತ್ತಷ್ಟು ಸುಧಾರಿಸುತ್ತದೆ. ಸಿಸ್ಟಮ್/360 ಅಸೆಂಬ್ಲಿ ಭಾಷೆಯಲ್ಲಿ, ಒಬ್ಬರು ಬರೆಯಬಹುದು, ಉದಾಹರಣೆಗೆಃ ಬಿ. ಎ. ಎಲ್ 14, ಎಸ್. ಯು. ಬಿ. ಆರ್. ಟಿ. ಎನ್01 ಒಂದು ಉಪ ಕ್ರಮಕ್ಕೆ ಹೋಗಿ, ರಿಟರ್ನ್ ವಿಳಾಸವನ್ನು ಆರ್ 14 ಬಿ ಟೇಬಲ್ನಲ್ಲಿ ಸಂಗ್ರಹಿಸಿ (15) ಶಾಖೆಯ ಕೋಷ್ಟಕವನ್ನು ಸೂಚ್ಯಂಕ ಮಾಡಲು ರೆಗ್ 15 ರಲ್ಲಿ ಹಿಂತಿರುಗಿದ ಮೌಲ್ಯವನ್ನು ಬಳಸಿ, * ಸೂಕ್ತವಾದ ಶಾಖೆಯ ಇನ್ಸ್ಟ್ರಾರ್ಗೆ ಕವಲೊಡೆಯುತ್ತದೆ. ಟೇಬಲ್ ಬಿ ಓಕೆ ರಿಟರ್ನ್ ಕೋಡ್ = 00 ಗುಡ್} ಬಿ ಬ್ಯಾಡ್ ರಿಟರ್ನ್ ಕೋಡ್ = 04 ಅಮಾನ್ಯ ಇನ್ಪುಟ್} ಬ್ರಾಂಚ್ ಟೇಬಲ್ ಬಿ ಎರರ್ ರಿಟರ್ನ್ ಕೋಡ್ = 08 ಅನಿರೀಕ್ಷಿತ ಸ್ಥಿತಿ} ಫಂಕ್ಷನ್ ಕರೆಗಳ ಆಪ್ಟಿಮೈಸೇಶನ್ ಆರ್ಗ್ಯುಮೆಂಟ್ಗಳನ್ನು ರವಾನಿಸುವುದು, ಉಪಪ್ರೋಗ್ರಾಮ್ಗೆ ಕವಲೊಡೆಯುವುದು ಮತ್ತು ಕರೆ ಮಾಡುವವರಿಗೆ ಮರಳಿ ಕವಲೊಡೆಯುವುದು ಸೇರಿದಂತೆ ಫಂಕ್ಷನ್ ಕರೆ ಮಾಡುವಲ್ಲಿ ಗಮನಾರ್ಹ ರನ್ಟೈಮ್ ಓವರ್ಹೆಡ್ ಇದೆ. ಓವರ್ಹೆಡ್ ಸಾಮಾನ್ಯವಾಗಿ ಕೆಲವು ಪ್ರೊಸೆಸರ್ ರೆಜಿಸ್ಟರ್ಗಳನ್ನು ಉಳಿಸುವುದು ಮತ್ತು ಮರುಸ್ಥಾಪಿಸುವುದು, ಕಾಲ್ ಫ್ರೇಮ್ ಸಂಗ್ರಹಣೆಯನ್ನು ನಿಯೋಜಿಸುವುದು ಮತ್ತು ಮರುಪಡೆಯುವುದು ಇತ್ಯಾದಿಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ. ಕೆಲವು ಭಾಷೆಗಳಲ್ಲಿ, ಪ್ರತಿ ಫಂಕ್ಷನ್ ಕರೆಯು ಫಂಕ್ಷನ್ನ ರಿಟರ್ನ್ ಕೋಡ್ನ ಸ್ವಯಂಚಾಲಿತ ಪರೀಕ್ಷೆಯನ್ನು ಅಥವಾ ಅದು ಹೆಚ್ಚಿಸಬಹುದಾದ ವಿನಾಯಿತಿಗಳ ನಿರ್ವಹಣೆಯನ್ನು ಸಹ ಸೂಚಿಸುತ್ತದೆ. ಆಬ್ಜೆಕ್ಟ್-ಓರಿಯೆಂಟೆಡ್ ಭಾಷೆಗಳಲ್ಲಿ ಓವರ್ಹೆಡ್ನ ಗಮನಾರ್ಹ ಮೂಲವೆಂದರೆ ಮೆಥಡ್ ಕರೆಗಳಿಗೆ ತೀವ್ರವಾಗಿ ಬಳಸುವ ಡೈನಾಮಿಕ್ ರವಾನೆ. ಕಾರ್ಯವಿಧಾನಗಳು ಅಡ್ಡಪರಿಣಾಮಗಳನ್ನು ಹೊಂದಿದ್ದರೆ ಅನ್ವಯಿಸಲಾಗದ ಕಾರ್ಯವಿಧಾನದ ಕರೆಗಳ ಕೆಲವು ಸ್ಪಷ್ಟವಾದ ಆಪ್ಟಿಮೈಸೇಶನ್ಗಳಿವೆ. ಉದಾಹರಣೆಗೆ, ಅಭಿವ್ಯಕ್ತಿಯಲ್ಲಿ (f (x)-1)/(f (x) + 1), f ಕಾರ್ಯವನ್ನು ಎರಡು ಬಾರಿ ಕರೆಯಬೇಕು, ಏಕೆಂದರೆ ಎರಡು ಕರೆಗಳು ವಿಭಿನ್ನ ಫಲಿತಾಂಶಗಳನ್ನು ನೀಡಬಹುದು. ಇದಲ್ಲದೆ, ಡಿವಿಷನ್ ಆಪರೇಟರ್ನ ಆಪರೇಂಡ್ಗಳ ಮೌಲ್ಯಮಾಪನದ ಕ್ರಮವನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವ ಕೆಲವು ಭಾಷೆಗಳಲ್ಲಿ, x ನ ಮೌಲ್ಯವನ್ನು ಎರಡನೇ ಕರೆಯ ಮೊದಲು ಮತ್ತೆ ಪಡೆಯಬೇಕು, ಏಕೆಂದರೆ ಮೊದಲ ಕರೆ ಅದನ್ನು ಬದಲಾಯಿಸಿರಬಹುದು. ಉಪಪ್ರೋಗ್ರಾಮ್ ಅಡ್ಡಪರಿಣಾಮವನ್ನು ಹೊಂದಿರಬಹುದೇ ಎಂದು ನಿರ್ಧರಿಸುವುದು ತುಂಬಾ ಕಷ್ಟ (ವಾಸ್ತವವಾಗಿ, ರೈಸ್ನ ಪ್ರಮೇಯದ ಆಧಾರದ ಮೇಲೆ ನಿರ್ಧರಿಸಲಾಗದು). ಆದ್ದರಿಂದ, ಆ ಆಪ್ಟಿಮೈಸೇಶನ್ಗಳು ಸಂಪೂರ್ಣವಾಗಿ ಕ್ರಿಯಾತ್ಮಕ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗಳಲ್ಲಿ ಸುರಕ್ಷಿತವಾಗಿದ್ದರೂ, ವಿಶಿಷ್ಟವಾದ ಕಡ್ಡಾಯ ಪ್ರೋಗ್ರಾಮಿಂಗ್ಗಳ ಕಂಪೈಲರ್ಗಳು ಸಾಮಾನ್ಯವಾಗಿ ಕೆಟ್ಟದ್ದನ್ನು ಊಹಿಸಿಕೊಳ್ಳಬೇಕಾಗುತ್ತದೆ. ಈ ಓವರ್ಹೆಡ್ ಅನ್ನು ತೊಡೆದುಹಾಕಲು ಬಳಸುವ ವಿಧಾನವೆಂದರೆ ಪ್ರತಿ ಕರೆ ಸೈಟ್ನಲ್ಲಿ ಉಪಪ್ರೋಗ್ರಾಮ್ನ ದೇಹವನ್ನು ಇನ್ಲೈನ್ ವಿಸ್ತರಣೆ ಅಥವಾ ಇನ್ಲೈನಿಂಗ್ ಮಾಡುವುದು (ವಿರುದ್ಧವಾಗಿ ಕಾರ್ಯ ಮತ್ತು ಹಿಂಭಾಗಕ್ಕೆ ಕವಲೊಡೆಯುವುದು). ಇದು ಕರೆ ಓವರ್ಹೆಡ್ ಅನ್ನು ತಪ್ಪಿಸುವುದಲ್ಲದೆ, ಆ ಕರೆಯಲ್ಲಿನ ಸಂದರ್ಭ ಮತ್ತು ವಾದಗಳನ್ನು ಗಣನೆಗೆ ತೆಗೆದುಕೊಳ್ಳುವ ಮೂಲಕ ಕಾರ್ಯವಿಧಾನದ ದೇಹವನ್ನು ಹೆಚ್ಚು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಅತ್ಯುತ್ತಮವಾಗಿಸಲು ಕಂಪೈಲರ್ಗೆ ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ. ಸೇರಿಸಿದ ದೇಹವನ್ನು ಕಂಪೈಲರ್ ಮೂಲಕ ಅತ್ಯುತ್ತಮವಾಗಿಸಬಹುದು. ಆದಾಗ್ಯೂ, ಇನ್ಲೈನಿಂಗ್ ಸಾಮಾನ್ಯವಾಗಿ ಕೋಡ್ ಗಾತ್ರವನ್ನು ಹೆಚ್ಚಿಸುತ್ತದೆ, ಪ್ರೋಗ್ರಾಂ ಕಾರ್ಯಕ್ಕೆ ಕೇವಲ ಒಂದು ಕರೆಯನ್ನು ಹೊಂದಿಲ್ಲದಿದ್ದರೆ. ಅಸಿಂಕ್ರೋನಸ್ ಪ್ರೊಸೀಜರ್ ಕಾಲ್ ಅನ್ನು ಸಹ ನೋಡಿ, ಅದರ ನಿಯತಾಂಕಗಳನ್ನು ಇತರ ಚಟುವಟಿಕೆಗಳಿಂದ ಹೊಂದಿಸಿದ ನಂತರ ಕರೆಯಲಾಗುವ ಉಪಪ್ರೋಗ್ರಾಮ್ ಅಂತರ್ನಿರ್ಮಿತ ಕಮಾಂಡ್-ಕ್ವೆರಿ ಸೆಪರೇಷನ್ (ಸಿಕ್ಯೂಎಸ್) ಕಾಂಪೌಂಡ್ ಆಪರೇಷನ್ ಕೊರೌಟೈನ್ಸ್, ಎರಡೂ ಮುಖ್ಯ ಪ್ರೋಗ್ರಾಂಗಳಂತೆ ಪರಸ್ಪರ ಕರೆಯುವ ಉಪಪ್ರೋಗ್ರಾಮ್ಗಳು ಮೌಲ್ಯಮಾಪನ ತಂತ್ರ ಈವೆಂಟ್ ಹ್ಯಾಂಡ್ಲರ್, ಇನ್ಪುಟ್ ಈವೆಂಟ್ ಅಥವಾ ಇಂಟರಪ್ಟ್ ಫಂಕ್ಷನ್ಗೆ ಪ್ರತಿಕ್ರಿಯೆಯಾಗಿ ಕರೆಯಲಾಗುವ ಉಪಪ್ರೋಗ್ರಾಮ್ (ಗಣಿತ) ಕ್ರಿಯಾತ್ಮಕ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಫ್ಯೂಸ್ಡ್ ಆಪರೇಷನ್ ಲ್ಯಾಂಬ್ಡಾ ಫಂಕ್ಷನ್ (ಕಂಪ್ಯೂಟರ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್), ಗುರುತಿಸುವ ವಿಧಾನಕ್ಕೆ (ಕಂಪ್ಯೂಟರ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್) ಬದ್ಧವಾಗಿರದ ಕಾರ್ಯವು ಮಾಡ್ಯುಲರ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಆಪರೇಟರ್ ಓವರ್ಲೋಡಿಂಗ್ ಸಂರಕ್ಷಿತ ಕಾರ್ಯವಿಧಾನ ವರ್ಗಾವಣೆಯ ಉಲ್ಲೇಖಗಳು ಮೂಲ ಕೋಡ್ ಲೇಖನಗಳು ಉದಾಹರಣೆಗೆ ಸಿ ಕೋಡ್ ಹೋಲಿಸಂ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ರಚನೆಗಳೊಂದಿಗೆ ಲೇಖನಗಳು