SQL Programming Manual for Pascal
Examples of Static NonStop SQL Programs
HP NonStop SQL Programming Manual for Pascal—528614-001
B-11
Date-Time Program
75 0 EXEC SQL
76 0 DECLARE NEW_DATES_CURSOR CURSOR FOR
77 0 SELECT PROJECT_NAME,
78 0 START_DATE + WAIT_TIME,
79 0 END_DATE + WAIT_TIME,
80 0 WAIT_TIME
81 0 FROM =PROJECTS;
82 0
83 0 PROCEDURE NOT_FOUND;
84 1
85 1 { Temporary variable to save the value of SQLCODE for later }
86 1 { checking. ROLLBACK WORK sets SQLCODE to 0. }
87 1 VAR TEMP_SQLCODE : INT16;
88 1
89 1 BEGIN
90 2 TEMP_SQLCODE := SQLCODE;
91 2
92 2 WRITELN('RECORD NOT FOUND.');
93 2 EXEC SQL ROLLBACK WORK;
94 2 WRITELN;
95 2 WRITELN('TRANSACTION ABORTED.');
96 2
97 2 SQLCODE := TEMP_SQLCODE;
98 2 END;
99 0
100 0 PROCEDURE SQLERROR;
101 1
102 1 { Temporary variable to save the value of SQLCODE for later }
103 1 { checking. ROLLBACK WORK sets SQLCODE to 0. }
104 1 VAR TEMP_SQLCODE : INT16;
105 1
106 1 BEGIN
107 2 TEMP_SQLCODE := SQLCODE;
108 2
109 2 { Turn off WHENEVER checking to avoid infinite loop: }
110 2 EXEC SQL WHENEVER SQLERROR CONTINUE;
111 2
112 2 SQLCADISPLAY( XADDR(SQLCA) );
113 2 EXEC SQL ROLLBACK WORK;
114 2 WRITELN;
115 2 WRITELN('TRANSACTION ABORTED');
116 2
117 2 { re-enable WHENEVER checking: }
118 2 EXEC SQL WHENEVER SQLERROR CALL :SQLERROR;
119 2
120 2 SQLCODE := TEMP_SQLCODE;
121 2 END;
122 0
123 0 PROCEDURE INSERT_PROJECT;
124 1 BEGIN
125 2
126 2 EXEC SQL BEGIN WORK;
127 2
128 2 WRITELN ('Enter a project name of up to 10 characters:');
129 2 READLN (USER_PROJECTS_REC.PROJECT_NAME);
130 2 WRITELN ('Enter a start date-time in the format YYYY-MM
-DD:HH:MM');
131 2 READLN (USER_PROJECTS_REC.START_DATE);
132 2 WRITELN ('Enter an end date-time in the format YYYY-MM
-DD:HH:MM');
133 2 READLN (USER_PROJECTS_REC.END_DATE);
134 2 WRITELN ('Wait time for the new project is set at 0.');
135 2 USER_PROJECTS_REC.WAIT_TIME := '00';
136 2