[Home] [Help]
PACKAGE BODY: APPS.CSC_PROF_GROUP_CAT_PUB
Source
1 PACKAGE BODY CSC_PROF_GROUP_CAT_PUB as
2 /* $Header: cscppcab.pls 115.8 2002/11/29 07:27:52 bhroy ship $ */
3 -- Start of Comments
4 -- Package name : CSC_PROF_GROUP_CAT_PUB
5 -- Purpose :
6 -- History :
7 -- NOTE :
8 -- End of Comments
9
10
11 G_PKG_NAME CONSTANT VARCHAR2(30):= 'CSC_PROF_GROUP_CAT_PUB';
12 G_FILE_NAME CONSTANT VARCHAR2(12) := 'cscppgcb.pls';
13
14 -- Start of Comments
15
16 PROCEDURE Convert_pub_to_pvt_Rec (
17 P_PROF_GRP_CAT_Rec IN CSC_PROF_GROUP_CAT_PUB.PROF_GRP_CAT_Rec_Type,
18 x_pvt_PROF_GRP_CAT_rec OUT NOCOPY CSC_PROF_GROUP_CAT_PVT.PROF_GRP_CAT_Rec_Type
19 )
20 IS
21 l_any_errors BOOLEAN := FALSE;
22 BEGIN
23
24 x_pvt_PROF_GRP_CAT_rec.GROUP_CATEGORY_ID := P_PROF_GRP_CAT_Rec.GROUP_CATEGORY_ID;
25 x_pvt_PROF_GRP_CAT_rec.GROUP_ID := P_PROF_GRP_CAT_Rec.GROUP_ID;
26 x_pvt_PROF_GRP_CAT_rec.CATEGORY_CODE := P_PROF_GRP_CAT_Rec.CATEGORY_CODE;
27 x_pvt_PROF_GRP_CAT_rec.CATEGORY_SEQUENCE := P_PROF_GRP_CAT_Rec.CATEGORY_SEQUENCE;
28 x_pvt_PROF_GRP_CAT_rec.CREATED_BY := P_PROF_GRP_CAT_Rec.CREATED_BY;
29 x_pvt_PROF_GRP_CAT_rec.CREATION_DATE := P_PROF_GRP_CAT_Rec.CREATION_DATE;
30 x_pvt_PROF_GRP_CAT_rec.LAST_UPDATED_BY := P_PROF_GRP_CAT_Rec.LAST_UPDATED_BY;
31 x_pvt_PROF_GRP_CAT_rec.LAST_UPDATE_DATE := P_PROF_GRP_CAT_Rec.LAST_UPDATE_DATE;
32 x_pvt_PROF_GRP_CAT_rec.LAST_UPDATE_LOGIN := P_PROF_GRP_CAT_Rec.LAST_UPDATE_LOGIN;
33 x_pvt_PROF_GRP_CAT_rec.SEEDED_FLAG := P_PROF_GRP_CAT_Rec.SEEDED_FLAG;
34
35
36 -- If there is an error in conversion precessing, raise an error.
37 IF l_any_errors
38 THEN
39 raise FND_API.G_EXC_ERROR;
40 END IF;
41
42 END Convert_pub_to_pvt_Rec;
43
44
45 PROCEDURE Convert_Columns_to_Rec (
46 p_GROUP_CATEGORY_ID NUMBER DEFAULT NULL,
47 p_GROUP_ID NUMBER,
48 p_CATEGORY_CODE VARCHAR2,
49 p_CATEGORY_SEQUENCE NUMBER,
50 p_CREATED_BY NUMBER,
51 p_CREATION_DATE DATE,
52 p_LAST_UPDATED_BY NUMBER,
53 p_LAST_UPDATE_DATE DATE,
54 p_LAST_UPDATE_LOGIN NUMBER,
55 p_SEEDED_FLAG VARCHAR2,
56 x_PROF_GRP_CAT_rec OUT NOCOPY PROF_GRP_CAT_Rec_Type
57 )
58 IS
59 BEGIN
60
61 x_PROF_GRP_CAT_rec.GROUP_CATEGORY_ID := P_GROUP_CATEGORY_ID;
62 x_PROF_GRP_CAT_rec.GROUP_ID := P_GROUP_ID;
63 x_PROF_GRP_CAT_rec.CATEGORY_CODE := P_CATEGORY_CODE;
64 x_PROF_GRP_CAT_rec.CATEGORY_SEQUENCE := P_CATEGORY_SEQUENCE;
65 x_PROF_GRP_CAT_rec.CREATED_BY := P_CREATED_BY;
66 x_PROF_GRP_CAT_rec.CREATION_DATE := P_CREATION_DATE;
70 x_PROF_GRP_CAT_rec.SEEDED_FLAG := P_SEEDED_FLAG;
67 x_PROF_GRP_CAT_rec.LAST_UPDATED_BY := P_LAST_UPDATED_BY;
68 x_PROF_GRP_CAT_rec.LAST_UPDATE_DATE := P_LAST_UPDATE_DATE;
69 x_PROF_GRP_CAT_rec.LAST_UPDATE_LOGIN := P_LAST_UPDATE_LOGIN;
71
72 END Convert_Columns_to_Rec;
73
74
75 PROCEDURE Create_csc_prof_group_cat(
76 P_Api_Version_Number IN NUMBER,
77 P_Init_Msg_List IN VARCHAR2,
78 P_Commit IN VARCHAR2,
79 px_GROUP_CATEGORY_ID IN OUT NOCOPY NUMBER,
80 p_GROUP_ID NUMBER,
81 p_CATEGORY_CODE VARCHAR2,
82 p_CATEGORY_SEQUENCE NUMBER,
83 p_CREATED_BY NUMBER,
84 p_CREATION_DATE DATE,
85 p_LAST_UPDATED_BY NUMBER,
86 p_LAST_UPDATE_DATE DATE,
87 p_LAST_UPDATE_LOGIN NUMBER,
88 p_SEEDED_FLAG VARCHAR2,
89 X_Return_Status OUT NOCOPY VARCHAR2,
90 X_Msg_Count OUT NOCOPY NUMBER,
91 X_Msg_Data OUT NOCOPY VARCHAR2
92 )
93 IS
94 l_PROF_GRP_CAT_Rec PROF_GRP_CAT_Rec_Type;
95
96 BEGIN
97
98 Convert_Columns_to_Rec (
99 p_GROUP_ID => p_GROUP_ID ,
100 p_CATEGORY_CODE => p_CATEGORY_CODE,
101 p_CATEGORY_SEQUENCE => p_CATEGORY_SEQUENCE,
102 p_CREATED_BY => p_CREATED_BY,
103 p_CREATION_DATE => p_CREATION_DATE,
104 p_LAST_UPDATED_BY => p_LAST_UPDATED_BY,
105 p_LAST_UPDATE_DATE => p_LAST_UPDATE_DATE,
106 p_LAST_UPDATE_LOGIN => p_LAST_UPDATE_LOGIN,
107 p_SEEDED_FLAG => p_SEEDED_FLAG,
108 x_PROF_GRP_CAT_rec => l_PROF_GRP_CAT_Rec
109 );
110
111
112 Create_csc_prof_group_cat(
113 P_Api_Version_Number => P_Api_Version_Number,
114 P_Init_Msg_List => P_Init_Msg_List,
115 P_Commit => P_Commit ,
116 PX_GROUP_CATEGORY_ID => PX_GROUP_CATEGORY_ID,
117 P_PROF_GRP_CAT_Rec => l_PROF_GRP_CAT_Rec,
118 X_Return_Status => X_Return_Status,
119 X_Msg_Count => X_Msg_Count,
120 X_Msg_Data => X_Msg_Data
121 );
122
123 END Create_csc_prof_group_cat;
124
125
126 PROCEDURE Create_csc_prof_group_cat(
127 P_Api_Version_Number IN NUMBER,
128 P_Init_Msg_List IN VARCHAR2,
129 P_Commit IN VARCHAR2,
130 P_PROF_GRP_CAT_Rec IN PROF_GRP_CAT_Rec_Type,
131 PX_GROUP_CATEGORY_ID IN OUT NOCOPY NUMBER,
132 X_Return_Status OUT NOCOPY VARCHAR2,
133 X_Msg_Count OUT NOCOPY NUMBER,
134 X_Msg_Data OUT NOCOPY VARCHAR2
135 )
136
137 IS
138 l_api_name CONSTANT VARCHAR2(30) := 'Create_csc_prof_group_cat';
139 l_api_version_number CONSTANT NUMBER := 1.0;
140 l_pvt_PROF_GRP_CAT_rec CSC_PROF_GROUP_CAT_PVT.PROF_GRP_CAT_Rec_Type;
141 BEGIN
142 -- Standard Start of API savepoint
143 SAVEPOINT CREATE_CSC_PROF_GROUP_CAT_PUB;
144
145 -- Standard call to check for call compatibility.
146 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
147 p_api_version_number,
148 l_api_name,
149 G_PKG_NAME)
150 THEN
151 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
152 END IF;
153
154
155 -- Initialize message list if p_init_msg_list is set to TRUE.
156 IF FND_API.to_Boolean( p_init_msg_list )
157 THEN
158 FND_MSG_PUB.initialize;
159 END IF;
160
161
162 -- Initialize API return status to SUCCESS
163 x_return_status := FND_API.G_RET_STS_SUCCESS;
164
165 --
166 -- API body
167 --
168
169 -- Convert the values to ids
170 --
171 Convert_pub_to_pvt_Rec (
172 P_PROF_GRP_CAT_Rec => p_PROF_GRP_CAT_rec,
173 x_pvt_PROF_GRP_CAT_rec => l_pvt_PROF_GRP_CAT_rec
174 );
175
176
177 -- Calling Private package: Create_CSC_PROF_GROUP_CAT
178 -- Hint: Primary key needs to be returned
179 csc_prof_group_cat_PVT.Create_csc_prof_group_cat(
180 P_Api_Version_Number => 1.0,
181 P_Init_Msg_List => FND_API.G_FALSE,
182 P_Commit => FND_API.G_FALSE,
183 P_Validation_Level => FND_API.G_VALID_LEVEL_FULL,
184 P_PROF_GRP_CAT_Rec => l_pvt_PROF_GRP_CAT_Rec ,
185 PX_GROUP_CATEGORY_ID => Px_GROUP_CATEGORY_ID,
186 X_Return_Status => x_return_status,
187 X_Msg_Count => x_msg_count,
188 X_Msg_Data => x_msg_data);
189
190
191
192 -- Check return status from the above procedure call
193 IF x_return_status = FND_API.G_RET_STS_ERROR then
194 raise FND_API.G_EXC_ERROR;
195 elsif x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
196 raise FND_API.G_EXC_UNEXPECTED_ERROR;
197 END IF;
198
199 --
200 -- End of API body.
201 --
202
203 -- Standard check for p_commit
204 IF FND_API.to_Boolean( p_commit )
205 THEN
206 COMMIT WORK;
207 END IF;
208
209
210
211 -- Standard call to get message count and if count is 1, get message info.
212 FND_MSG_PUB.Count_And_Get
216
213 ( p_count => x_msg_count,
214 p_data => x_msg_data
215 );
217 EXCEPTION
218 WHEN FND_API.G_EXC_ERROR THEN
219 ROLLBACK TO CREATE_CSC_PROF_GROUP_CAT_PUB;
220 x_return_status := FND_API.G_RET_STS_ERROR ;
221 FND_MSG_PUB.Count_And_Get(p_count =>x_msg_count,
222 p_data => x_msg_data) ;
223
224 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
225 ROLLBACK TO CREATE_CSC_PROF_GROUP_CAT_PUB;
226 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
227 FND_MSG_PUB.Count_And_Get(p_count =>x_msg_count,
228 p_data => x_msg_data) ;
229
230 WHEN OTHERS THEN
231 ROLLBACK TO CREATE_CSC_PROF_GROUP_CAT_PUB;
232 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
233 IF FND_MSG_PUB.Check_Msg_Level
234 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
235 THEN
236 FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME,l_api_name);
237 END IF ;
238 FND_MSG_PUB.Count_And_Get(p_count =>x_msg_count,
239 p_data => x_msg_data) ;
240
241 End Create_csc_prof_group_cat;
242
243 PROCEDURE Update_csc_prof_group_cat(
244 P_Api_Version_Number IN NUMBER,
245 P_Init_Msg_List IN VARCHAR2,
246 P_Commit IN VARCHAR2,
247 p_GROUP_CATEGORY_ID IN NUMBER,
248 p_GROUP_ID NUMBER,
249 p_CATEGORY_CODE VARCHAR2,
250 p_CATEGORY_SEQUENCE NUMBER,
251 p_CREATED_BY NUMBER,
252 p_CREATION_DATE DATE,
253 p_LAST_UPDATED_BY NUMBER,
254 p_LAST_UPDATE_DATE DATE,
255 p_LAST_UPDATE_LOGIN NUMBER,
256 p_SEEDED_FLAG VARCHAR2,
257 X_Return_Status OUT NOCOPY VARCHAR2,
258 X_Msg_Count OUT NOCOPY NUMBER,
259 X_Msg_Data OUT NOCOPY VARCHAR2
260 )
261 IS
262 l_PROF_GRP_CAT_Rec PROF_GRP_CAT_Rec_Type;
263
264 BEGIN
265
266 Convert_Columns_to_Rec (
267 p_GROUP_CATEGORY_ID => p_GROUP_CATEGORY_ID,
268 p_GROUP_ID => p_GROUP_ID ,
269 p_CATEGORY_CODE => p_CATEGORY_CODE,
270 p_CATEGORY_SEQUENCE => p_CATEGORY_SEQUENCE,
271 p_CREATED_BY => p_CREATED_BY,
272 p_CREATION_DATE => p_CREATION_DATE,
273 p_LAST_UPDATED_BY => p_LAST_UPDATED_BY,
274 p_LAST_UPDATE_DATE => p_LAST_UPDATE_DATE,
275 p_LAST_UPDATE_LOGIN => p_LAST_UPDATE_LOGIN,
276 p_SEEDED_FLAG => p_SEEDED_FLAG,
277 x_PROF_GRP_CAT_rec => l_PROF_GRP_CAT_Rec
278 );
279
280
281 Update_csc_prof_group_cat(
282 P_Api_Version_Number => P_Api_Version_Number,
283 P_Init_Msg_List => P_Init_Msg_List,
284 P_Commit => P_Commit ,
285 P_PROF_GRP_CAT_Rec => l_PROF_GRP_CAT_Rec,
286 X_Return_Status => X_Return_Status,
287 X_Msg_Count => X_Msg_Count,
288 X_Msg_Data => X_Msg_Data
289 );
290
291 END Update_csc_prof_group_cat;
292
293
294 -- Hint: Add corresponding update detail table procedures if it's master-detail relationship.
295 PROCEDURE Update_csc_prof_group_cat(
296 P_Api_Version_Number IN NUMBER,
297 P_Init_Msg_List IN VARCHAR2,
298 P_Commit IN VARCHAR2,
299 P_PROF_GRP_CAT_Rec IN PROF_GRP_CAT_Rec_Type,
300 X_Return_Status OUT NOCOPY VARCHAR2,
301 X_Msg_Count OUT NOCOPY NUMBER,
302 X_Msg_Data OUT NOCOPY VARCHAR2
303 )
304
305 IS
306 l_api_name CONSTANT VARCHAR2(30) := 'Update_csc_prof_group_cat';
307 l_api_version_number CONSTANT NUMBER := 1.0;
308 l_pvt_PROF_GRP_CAT_rec CSC_PROF_GROUP_CAT_PVT.PROF_GRP_CAT_Rec_Type;
309 BEGIN
310 -- Standard Start of API savepoint
311 SAVEPOINT UPDATE_CSC_PROF_GROUP_CAT_PUB;
312
313 -- Standard call to check for call compatibility.
314 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
315 p_api_version_number,
316 l_api_name,
317 G_PKG_NAME)
318 THEN
319 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
320 END IF;
321
322
323 -- Initialize message list if p_init_msg_list is set to TRUE.
324 IF FND_API.to_Boolean( p_init_msg_list )
325 THEN
326 FND_MSG_PUB.initialize;
327 END IF;
328
329
330
331 -- Initialize API return status to SUCCESS
332 x_return_status := FND_API.G_RET_STS_SUCCESS;
333
334 --
335 -- API body
336 --
337
338 -- Convert the values to ids
339 --
340 Convert_pub_to_pvt_Rec (
341 P_PROF_GRP_CAT_Rec => p_PROF_GRP_CAT_rec,
342 x_pvt_PROF_GRP_CAT_rec => l_pvt_PROF_GRP_CAT_rec
343 );
344
345 csc_prof_group_cat_PVT.Update_csc_prof_group_cat(
346 P_Api_Version_Number => 1.0,
347 P_Init_Msg_List => FND_API.G_FALSE,
348 P_Commit => p_commit,
349 P_Validation_Level => FND_API.G_VALID_LEVEL_FULL,
350 P_PROF_GRP_CAT_Rec => l_pvt_PROF_GRP_CAT_Rec ,
351 X_Return_Status => x_return_status,
355
352 X_Msg_Count => x_msg_count,
353 X_Msg_Data => x_msg_data);
354
356
357 -- Check return status from the above procedure call
358 IF x_return_status = FND_API.G_RET_STS_ERROR then
359 raise FND_API.G_EXC_ERROR;
360 elsif x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
361 raise FND_API.G_EXC_UNEXPECTED_ERROR;
362 END IF;
363
364 --
365 -- End of API body
366 --
367
368 -- Standard check for p_commit
369 IF FND_API.to_Boolean( p_commit )
370 THEN
371 COMMIT WORK;
372 END IF;
373
374
375
376 -- Standard call to get message count and if count is 1, get message info.
377 FND_MSG_PUB.Count_And_Get
378 ( p_count => x_msg_count,
379 p_data => x_msg_data
380 );
381
382 EXCEPTION
383 WHEN FND_API.G_EXC_ERROR THEN
384 ROLLBACK TO UPDATE_CSC_PROF_GROUP_CAT_PUB;
385 x_return_status := FND_API.G_RET_STS_ERROR ;
386 FND_MSG_PUB.Count_And_Get(p_count =>x_msg_count,
387 p_data => x_msg_data) ;
388
389
390 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
391 ROLLBACK TO UPDATE_CSC_PROF_GROUP_CAT_PUB;
392 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
393 FND_MSG_PUB.Count_And_Get(p_count =>x_msg_count,
394 p_data => x_msg_data) ;
395
396 WHEN OTHERS THEN
397 ROLLBACK TO UPDATE_CSC_PROF_GROUP_CAT_PUB;
398 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
399 IF FND_MSG_PUB.Check_Msg_Level
400 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
401 THEN
402 FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME,l_api_name);
403 END IF ;
404 FND_MSG_PUB.Count_And_Get(p_count =>x_msg_count,
405 p_data => x_msg_data) ;
406
407 End Update_csc_prof_group_cat;
408
409
410 -- Hint: Add corresponding delete detail table procedures if it's master-detail relationship.
411 -- The Master delete procedure may not be needed depends on different business requirements.
412 PROCEDURE Delete_csc_prof_group_cat(
413 P_Api_Version_Number IN NUMBER,
414 P_Init_Msg_List IN VARCHAR2,
415 P_Commit IN VARCHAR2,
416 P_PROF_GRP_CAT_Rec IN PROF_GRP_CAT_Rec_Type,
417 X_Return_Status OUT NOCOPY VARCHAR2,
418 X_Msg_Count OUT NOCOPY NUMBER,
419 X_Msg_Data OUT NOCOPY VARCHAR2
420 )
421
422 IS
423 l_api_name CONSTANT VARCHAR2(30) := 'Delete_csc_prof_group_cat';
424 l_api_version_number CONSTANT NUMBER := 1.0;
425 l_pvt_PROF_GRP_CAT_rec CSC_PROF_GROUP_CAT_PVT.PROF_GRP_CAT_Rec_Type;
426 BEGIN
427 -- Standard Start of API savepoint
428 SAVEPOINT DELETE_CSC_PROF_GROUP_CAT_PUB;
429
430 -- Standard call to check for call compatibility.
431 IF NOT FND_API.Compatible_API_Call ( l_api_version_number,
432 p_api_version_number,
433 l_api_name,
434 G_PKG_NAME)
435 THEN
436 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
437 END IF;
438
439
440 -- Initialize message list if p_init_msg_list is set to TRUE.
441 IF FND_API.to_Boolean( p_init_msg_list )
442 THEN
443 FND_MSG_PUB.initialize;
444 END IF;
445
446
447
448 -- Initialize API return status to SUCCESS
449 x_return_status := FND_API.G_RET_STS_SUCCESS;
450
451 --
452 -- API body
453 --
454
455 --
456 Convert_pub_to_pvt_Rec (
457 P_PROF_GRP_CAT_Rec => p_PROF_GRP_CAT_rec,
458 x_pvt_PROF_GRP_CAT_rec => l_pvt_PROF_GRP_CAT_rec
459 );
460
461 csc_prof_group_cat_PVT.Delete_csc_prof_group_cat(
462 P_Api_Version_Number => 1.0,
463 P_Init_Msg_List => FND_API.G_FALSE,
464 P_Commit => p_commit,
465 P_Validation_Level => FND_API.G_VALID_LEVEL_FULL,
466 P_PROF_GRP_CAT_Rec => l_pvt_PROF_GRP_CAT_Rec,
467 X_Return_Status => x_return_status,
468 X_Msg_Count => x_msg_count,
469 X_Msg_Data => x_msg_data);
470
471
472
473 -- Check return status from the above procedure call
474 IF x_return_status = FND_API.G_RET_STS_ERROR then
475 raise FND_API.G_EXC_ERROR;
476 elsif x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
477 raise FND_API.G_EXC_UNEXPECTED_ERROR;
478 END IF;
479
480 --
481 -- End of API body
482 --
483
484 -- Standard check for p_commit
485 IF FND_API.to_Boolean( p_commit )
486 THEN
487 COMMIT WORK;
488 END IF;
489
490
491
492 -- Standard call to get message count and if count is 1, get message info.
493 FND_MSG_PUB.Count_And_Get
494 ( p_count => x_msg_count,
495 p_data => x_msg_data
496 );
497
498 EXCEPTION
499 WHEN FND_API.G_EXC_ERROR THEN
500 ROLLBACK TO DELETE_CSC_PROF_GROUP_CAT_PUB;
504
501 x_return_status := FND_API.G_RET_STS_ERROR ;
502 FND_MSG_PUB.Count_And_Get(p_count =>x_msg_count,
503 p_data => x_msg_data) ;
505 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
506 ROLLBACK TO DELETE_CSC_PROF_GROUP_CAT_PUB;
507 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
508 FND_MSG_PUB.Count_And_Get(p_count =>x_msg_count,
509 p_data => x_msg_data) ;
510
511 WHEN OTHERS THEN
512 ROLLBACK TO DELETE_CSC_PROF_GROUP_CAT_PUB;
513 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
514 IF FND_MSG_PUB.Check_Msg_Level
515 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
516 THEN
517 FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME,l_api_name);
518 END IF ;
519 FND_MSG_PUB.Count_And_Get(p_count =>x_msg_count,
520 p_data => x_msg_data) ;
521
522 End Delete_csc_prof_group_cat;
523
524 End CSC_PROF_GROUP_CAT_PUB;