SQL Programming Manual for TAL
Examples of Dynamic NonStop SQL Programs
HP NonStop SQL Programming Manual for TAL—527887-001
C-37
Detailed Dynamic SQL Program
1093. 000345 1 1 begin
1094. 000345 1 2 @sda^o := allocate^sqlda (out^numvars);
1095. 000351 1 2 if @sda^o = NULL^ADDR then
Page 28 [1] $VOL1.S04.TALDYN 1991-10-15 13:42:28
dyn^tal main procedure
1096. 000356 1 2 begin
1097. 000356 1 3 PUT^STR ("Output SQLDA ");
1098. 000376 1 3 call memory^error^handler(rollback^flag);
1099. 000401 1 3 end;
1100. 000401 1 2 end;
1101. 000401 1 1
1102. 000401 1 1 if in^nameslen > 0 then
1103. 000404 1 1 begin
1104. 000404 1 2 @cname^i := GETPOOL (pool^head, $DBL(in^nameslen));
1105. 000414 1 2 if <> then
1106. 000415 1 2 begin
1107. 000415 1 3 PUT^STR ("Input names buffer ");
1108. 000433 1 3 call memory^error^handler(rollback^flag);
1109. 000436 1 3 end;
1110. 000436 1 2 end;
1111. 000436 1 1
1112. 000436 1 1 if out^nameslen > 0 then
1113. 000441 1 1 begin
1114. 000441 1 2 @cname^o := GETPOOL (pool^head,
$DBL(out^nameslen));
1115. 000451 1 2 if <> then
1116. 000452 1 2 begin
1117. 000452 1 3 PUT^STR ("Output names buffer ");
1118. 000470 1 3 call memory^error^handler(rollback^flag);
1119. 000473 1 3 end;
1120. 000473 1 2 end;
1121. 000473 1 1
1122. 000473 1 1 !-----------------------------------------------
1123. 000473 1 1 ! Get information on input variables.
1124. 000473 1 1 !-----------------------------------------------
1125. 000473 1 1
1126. 000473 1 1 IF in^numvars > 0 THEN
1127. 000476 1 1 BEGIN
1128. 000476 1 2 EXEC SQL DESCRIBE INPUT s1 INTO :sda^i
1129. 000476 1 2 NAMES INTO :cname^i.val;
1130. 000557 1 2
1131. 000557 1 2 !-------------------------------------------------------!
1132. 000557 1 2 ! Initialize SQLDA var^ptr to point to input data
buffer. !
1133. 000557 1 2 ! Input parameter values from terminal. !
1134. 000557 1 2 !-------------------------------------------------------!
1135. 000557 1 2
1136. 000557 1 2 if setupvarbuffers(sda^i) then
1137. 000563 1 2 begin
1138. 000563 1 3 rollback^flag := 1;
1139. 000565 1 3 PUT^STR("Input parameter buffers ");
1140. 000603 1 3 call memory^error^handler(rollback^flag);
1141. 000606 1 3 goto enter^input;
1142. 000607 1 3 end;
1143. 000607 1 2
1144. 000607 1 2 if request^invars (sda^i, cname^i) then
1145. 000614 1 2 begin
1146. 000614 1 3 EXEC SQL ROLLBACK WORK;
1147. 000702 1 3 goto enter^input;
1148. 000703 1 3 end;
1149. 000703 1 2 END;