/*TMCI18N BEGIN HEADER*/ #if !defined( tmBundle_EXISTS ) /* No Initialisation Required */ #include "tmcilib.h" static struct TMBundle tmBundle = {"sfpwait.pc",NULL,NULL,NULL,NULL}; #define tmBundle_EXISTS #endif /*TMCI18N END HEADER*/ /* AUDIT_TRAIL_MSGKEY_UPDATE -- PROJECT : MSGKEY -- MODULE : SFPWAIT -- SOURCE : enUS -- TARGET : I18N -- DATE : Tue Jul 27 15:27:13 2010 -- MSGSIGN : #978d0cdfee6573f4 END AUDIT_TRAIL_MSGKEY_UPDATE */ /* AUDIT_TRAIL_TM63 -- TranMan 6.3 -- PROJECT : HEGDE_I18N -- MODULE : SFPWAIT -- SOURCE : enUS -- TARGET : I18N -- DATE : Sun Oct 28 10:29:17 2007 END AUDIT_TRAIL_TM63 */ /******************************************************************************/ /* SFPWAIT.PC - translated from SFPWAIT.RPT on 07-Mar-1993 22:58:03 */ /* Translation by SCTCCONV, Version 1.0.1 */ /* */ /* SCTCCONV Copyright (c) SCT Corporation 1992. All rights reserved. */ /* SFPWAIT.PC Copyright (c) SCT Corporation 1993. All rights reserved. */ /* COPYRIGHT..: Copyright (c) SunGard 1993 - 2008. All rights reserved. */ /******************************************************************************/ /***************************************************/ /* */ /* CONFIDENTIAL BUSINESS INFORMATION */ /* */ /* ********************************** */ /* */ /* THIS PROGRAM IS PROPRIETARY INFORMATION OF */ /* SYSTEMS AND COMPUTER TECHNOLOGY CORPORATION */ /* AND IS NOT TO BE COPIED, REPRODUCED, LENT OR */ /* DISPOSED OF, NOR USED FOR ANY PURPOSE OTHER */ /* THAN THAT FOR WHICH IT IS SPECIFICALLY PROVIDED */ /* WITHOUT THE WRITTEN PERMISSION OF SAID COMPANY */ /* */ /***************************************************/ #include "guarpfe.h" EXEC SQL INCLUDE guaorac.c; /* SFPWAIT.rpt */ /* */ /* AUDIT TRAIL: 1.8 */ /* */ /* 1. New Release. Purge process designed to delete Waitlist (SFRSTCR) */ /* for all courses meeting the user selected criteria. SSBSECT counts */ /* will be updated appropriately. TD 12/05/90 */ /* */ /* AUDIT TRAIL: 1.9 */ /* 1. Modified for new job submission standards */ /* */ /* AUDIT TRAIL: 1.11 */ /* 1. Corrected parameter asks to allow for multiple part */ /* of terms. BR 12/01/92 */ /* */ /* AUDIT TRAIL: 2.0 */ /* 1. Replaced all references to USERENV('SESSIONID') with JPR 02/18/94 */ /* variable :sessionid. */ /* */ /* AUDIT TRAIL: 2.1 */ /* 1. Removed table owners. RL 10/06/94 */ /* */ /* AUDIT TRAIL: 2.X Supplemental JWM 12/12/94 */ /* 1. Program modified by cfix.c to remedy mostly Pro*C related problems: */ /* split SQL concatenations joined, colons added to FETCH targets, */ /* file extensions added to SQL INCLUDEs, 'static' modifier removed from */ /* indicator variables, new logic to hadle CLOSE_CURSOR was added to SQL */ /* function wrappers, and object owner references were removed as part of */ /* BANNER2.1. (Not all changes necessarily apply.) */ /* */ /* AUDIT TRAIL: 2.1.5 */ /* 1. Modify Report Control Information header to include BW 01/19/95 */ /* Release Number BW 01/19/95 */ /* 2. Modify SYSDATE or sysdate to include century in the BW 01/19/95 */ /* heading of the report BW 01/19/95 */ /* */ /* AUDIT TRAIL: 2.1.11 */ /* 1. Defect #4261. Change host processing to handle parts of CE 03/29/96 */ /* term correctly. In 'opt_pterm', change code to goto ask_rsts */ /* if term_ind = 'Y', instead of goto allptrm. */ /* */ /* AUDIT TRAIL: 3.2 */ /* 1. Y2K corrections. CE 06/02/98 */ /* */ /* AUDIT TRAIL: 4.0 */ /* 1. Modify Release Number in Report Control Information header. AT 01/21/99 */ /* 1. Expand stcr_camp_code, all_ptrm_code, and stcr_ptrm_code */ /* to 4 characters. AT 01/21/99 */ /* */ /* AUDIT TRAIL: 5.3 */ /* 1. Added column names to all INSERT statements. JC 07/23/01 */ /* AUDIT TRAIL: 7.0 */ /* 1. APIs DRA 22JUN2004 */ /* Replace UPDATE SSBSECT with call to sb_section.p_update(). */ /* 2. APIs DRA 22JUN2004 */ /* Replace commits with call to gb_common.p_commit(). */ /* 3. APIs DRA 22JUN2004 */ /* Replace LOCK SSBSECT with call to sb_section.p_lock(). */ /* */ /* AUDIT TRAIL: 8.0 */ /* 1. Concurrent Curricula ES 06/08/2007 */ /* Changes for reserved seat processing to include the additional */ /* curricula columns added to the reserved seats rules. */ /* */ /* AUDIT TRAIL: 8.0 */ /* 1. Modified the process to include the new Seats Available VU 17/08/07 */ /* Collector table(SFRCOLW)and Waitlist Notification Control table(SFRWLNT)*/ /* 2. Defect:CMS-DFCT100321 */ /* Problem:When SFPWAIT is run, the process does remove the Waitlist Actual */ /* amount from SSASECT, and does re-calculate the Remaining to '0' in the */ /* Enrollment Data window. However, in the Reserved Seats window, */ /* Waitlist Actual remains unpurged, and still display the actual number of */ /* students who were originally on the Waitlist. The Overall Waitlist */ /* Total, however, does display '0.' */ /* Fix: Modify updtresv function to build correctly the resereved key */ /* AUDIT TRAIL : 8.0 (I18N) */ /* 1. Internationalization Unicode Conversion */ /* /* AUDIT TRAIL: 8.4.0.4 */ /* 1. Defect 1-7WAH47 PL 07/20/2010 */ /* Problem: In some cases, students who were once on the Waitlist are */ /* being refunded a wrong amount. */ /* Fix: Added a new parameter to allow all expired notifications for a */ /* term and part of term to be deleted from SFRWLNT. Code added to process */ /* the parameter, and logic to check the parameter and delete the records */ /* AUDIT TRAIL END */ /* */ /* Parameters: RPTNAME - directory & filename of SQL*Report program */ /* TERM - Term of course to be deleted. Report term. */ /* PART_TERM - Course must match user entered part of */ /* term to qualify for delete. */ /* RSTS_CODE - Status of course must match user entered */ /* status to qualify for delete. */ /* RUN MODE - User must enter a 'A' (for Audit Mode) or */ /* 'U' (for Update Mode). */ /* correct. If not, user may abort job */ /* and begin again. */ /* PURGE EXPIRED NOTIFICATIONS - User must enter 'Y' or 'N' */ /* to delete sfrwlnt and corresponding sfrcolw */ /* rows by term and part of term. Process must */ /* be run in update mode to delete records. */ /* */ /* Tables: SFRSTCR */ /* SPRIDEN */ /* SSBSECT */ /* VU 17/08/07 */ /* SFRCOLW */ /* SFRWLNT */ /* */ /* Views: NONE */ /* */ /* Parameter variables */ EXEC SQL BEGIN DECLARE SECTION; static TMCHAR rptname[11]={0}/*TMCI18N CHANGED FROM ""*/; static TMCHAR run_mode[2]={0}/*TMCI18N CHANGED FROM ""*/; static TMCHAR ask_run_mode[2]={0}/*TMCI18N CHANGED FROM ""*/; static TMCHAR ask_ok[2]={0}/*TMCI18N CHANGED FROM ""*/; static TMCHAR term[7]={0}/*TMCI18N CHANGED FROM ""*/; static TMCHAR ask_term[7]={0}/*TMCI18N CHANGED FROM ""*/; static TMCHAR part_term_var[7]={0}/*TMCI18N CHANGED FROM ""*/; static TMCHAR all_ptrm_code[4]={0}/*TMCI18N CHANGED FROM ""*/; static TMCHAR ask_part_term[7]={0}/*TMCI18N CHANGED FROM ""*/; static TMCHAR rsts_code[3]={0}/*TMCI18N CHANGED FROM ""*/; static TMCHAR ask_rsts_code[3]={0}/*TMCI18N CHANGED FROM ""*/; static TMCHAR term_ind[2]={0}/*TMCI18N CHANGED FROM ""*/; static TMCHAR rsts_ind[2]={0}/*TMCI18N CHANGED FROM ""*/; static TMCHAR ask_delete[2]={0}; static TMCHAR delete_flag[2]={0}; /* *** Job submission alteration */ static BANNUMSTR(ask_line_count_var)={0}/*TMCI18N CHANGED FROM ""*/; static BANNUMSTR(ask_one_up_no)={0}/*TMCI18N CHANGED FROM ""*/; static BANNUMSTR(rpt_one_up_no)={0}/*TMCI18N CHANGED FROM ""*/; /* *** */ /* Standard variables */ static BANNUMSTR(count)={0}/*TMCI18N CHANGED FROM ""*/; static TMCHAR date[12]={0}/*TMCI18N CHANGED FROM ""*/; static TMCHAR institution[31]={0}/*TMCI18N CHANGED FROM ""*/; static BANNUMSTR(linelimit)={0}/*TMCI18N CHANGED FROM ""*/; static BANNUMSTR(lineno)={0}/*TMCI18N CHANGED FROM ""*/; static BANNUMSTR(one)={0}/*TMCI18N CHANGED FROM ""*/; static BANNUMSTR(pageno)={0}/*TMCI18N CHANGED FROM ""*/; static TMCHAR time_var[12]={0}/*TMCI18N CHANGED FROM ""*/; static TMCHAR title_var[31]={0}/*TMCI18N CHANGED FROM ""*/; /* *** Job submission alteration */ static BANNUMSTR(parm_no)={0}/*TMCI18N CHANGED FROM ""*/; static TMCHAR valid_ind[2]={0}/*TMCI18N CHANGED FROM ""*/; static TMCHAR rpt_optional_ind[2]={0}/*TMCI18N CHANGED FROM ""*/; /* *** */ /* Application variables (alpha order) */ static TMCHAR id[10]={0}/*TMCI18N CHANGED FROM ""*/; static BANNUMSTR(delete_count)={0}; static TMCHAR hold_id[10]={0}/*TMCI18N CHANGED FROM ""*/; static TMCHAR name[42]={0}/*TMCI18N CHANGED FROM ""*/; static BANNUMSTR(name_cnt)={0}/*TMCI18N CHANGED FROM ""*/; static TMCHAR pidm[9]={0}/*TMCI18N CHANGED FROM ""*/; static TMCHAR stcr_term_code[7]={0}/*TMCI18N CHANGED FROM ""*/; static TMCHAR stcr_crn[6]={0}/*TMCI18N CHANGED FROM ""*/; static BANNUMSTR(stcr_reg_seq)={0}/*TMCI18N CHANGED FROM ""*/; static TMCHAR stcr_ptrm_code[4]={0}/*TMCI18N CHANGED FROM ""*/; static TMCHAR stcr_rsts_code[3]={0}/*TMCI18N CHANGED FROM ""*/; static TMCHAR stcr_levl_code[3]={0}/*TMCI18N CHANGED FROM ""*/; static TMCHAR stcr_camp_code[4]={0}/*TMCI18N CHANGED FROM ""*/; static TMCHAR stcr_reserved_key[84]={0}/*TMCI18N CHANGED FROM ""*/; static TMCHAR sessionid[31]={0}/*TMCI18N CHANGED FROM ""*/; /* Shared indicator variables for SELECTs */ short Ind_01; short Ind_02; short Ind_03; short Ind_04; short Ind_05; short Ind_06; short Ind_07; short Ind_08; short Ind_09; short Ind_10; short Ind_11; short Ind_20; EXEC SQL END DECLARE SECTION; /* Local prototypes */ static int selmacro(int mode); static int selmacro_delete(int mode); static void updtresv(void); static void updtsect(void); static void delstcr(void); static int validate_one_up_no(int mode); static int sel_optional_ind(int mode); static int read_line_count(int mode); static void del_parms(void); static int readterm(int mode); static int readp_term(int mode); static int readp_rsts(int mode); static int readdelete(int mode); static int readmode(int mode); static int seldate(int mode); static int selinst(int mode); static int seltitle(int mode); static void lockresv(void); static void locksect(void); static void lockstcr(void); static void lockcolr(void); static void delcolr(void); static void inscolrterm(void); static void inscolrrsts(void); static int readpterm(int mode); static int readrsts(int mode); static void retrieve_parms(void); static void head(void); static void header(void); static void subhead(void); static void body(void); static void delete_body(void); static void foot(void); static void tbody(void); static void fbody(void); static void insertterm(void); static void insertrsts(void); static void getsession(void); /* VU 17/08/07 */ static void lockcolw(void); static void delcolw(void); static void lockwlnt(void); static void delwlnt(void); int main(int argc,TMCHAR *argv[]) { /* switch to turn on the sql_trace option */ extern short sqltrace_flag; rptopen(user_pass,argc,argv); login(); if ( sqltrace_flag ) EXEC SQL ALTER SESSION SET SQL_TRACE TRUE; /* Initialize variables */ tmstrcpy(rptname,_TMC("SFPWAIT")); tmstrcpy(count,_TMC("0")); tmstrcpy(delete_count,_TMC("0")); tmstrcpy(name_cnt,_TMC("0")); tmstrcpy(one,_TMC("1")); tmstrcpy(linelimit,_TMC("55")); tmstrcpy(pageno,_TMC("0")); sysdate(time_var,ORA_NLS_TIME_FORMAT); sysdate(date,ORA_NLS_DATE_FORMAT); /* Table definitions */ /* */ /* Table 1 Page Definition */ /* Table 2 1- 24 Date and Time */ /* 51- 81 Institution/Title */ /* 123-132 Page/SQL*Report program name */ /* */ /* Table 3 1- 41 Student Name */ /* 43- 51 Student Id */ /* Table 5 10-128 Used in printing address types in Foot Routine */ table(T_DEFINE,1,1,132,NULL); table(T_DEFINE,2,1,24,51,81,123,132,NULL); table(T_DEFINE,3,1,19,21,29,32,72,74,78,83,94,99,104,105,132,NULL); table(T_DEFINE,5,10,128,NULL); table(T_BEGIN,1); getsession(); lockcolr(); delcolr(); /*****API Replaced EXEC SQL COMMIT; POSTORA; *****/ EXEC SQL EXECUTE BEGIN gb_common.p_commit(NULL); END; END-EXEC; POSTORA; seldate(FIRST_ROW); tmstrcpy(all_ptrm_code,_TMC("N")); /* *** Job submission alteration */ /* */ /* Add Standard Ask */ input(ask_one_up_no,TM_NLS_Get("0000","RUN SEQUENCE NUMBER: "),26,NUM); if ( !*ask_one_up_no ) goto ask_parms; tmstrcpy(rpt_one_up_no,ask_one_up_no); tmstrcpy(valid_ind,_TMC("N")); validate_one_up_no(FIRST_ROW); if ( compare(valid_ind,_TMC("Y"),EQS) ) goto retrieve_parms_lbl; goto no_parms; retrieve_parms_lbl: retrieve_parms(); /*****API Replaced EXEC SQL COMMIT; POSTORA; *****/ EXEC SQL EXECUTE BEGIN gb_common.p_commit(NULL); END; END-EXEC; POSTORA; goto end_parms; ask_parms: /* *** */ /* Ask for parameters */ /* Rename appropriate parameter fields. */ tmprintf(&tmBundle, TM_NLS_Get("0001","THIS JOBSTREAM WILL PURGE A STUDENT'S REGISTRATION\n")); tmprintf(&tmBundle, TM_NLS_Get("0002","INFORMATION FOR WAITLISTED COURSES\n")); tmprintf(&tmBundle, _TMC(" \n")); /* Ask for purge term */ tmprintf(&tmBundle, _TMC(" \n")); input(ask_term,TM_NLS_Get("0003","PURGE TERM: "),6,ALPHA); if ( !*ask_term ) goto opt_term; tmstrcpy(term,ask_term); goto ask_pterm; opt_term: tmstrcpy(parm_no,_TMC("01")); sel_optional_ind(FIRST_ROW); if ( compare(rpt_optional_ind,_TMC("O"),EQS) ) goto ask_pterm; goto missing_parms; /* Ask for part of term */ ask_pterm: tmstrcpy(term_ind,_TMC("N")); part_term: input(ask_part_term,TM_NLS_Get("0004","PART OF TERM (%=ALL): "),6,ALPHA); if ( !*ask_part_term ) goto opt_pterm; tmstrcpy(term_ind,_TMC("Y")); tmstrcpy(part_term_var,ask_part_term); lockcolr(); inscolrterm(); if ( compare(part_term_var,_TMC("%"),EQS) ) goto allptrm; goto part_term; opt_pterm: if ( compare(term_ind,_TMC("Y"),EQS) ) goto ask_rsts; tmstrcpy(parm_no,_TMC("02")); sel_optional_ind(FIRST_ROW); if ( compare(rpt_optional_ind,_TMC("O"),EQS) ) goto ask_rsts; goto missing_parms; allptrm: tmstrcpy(all_ptrm_code,_TMC("%")); goto ask_rsts; /* ask for status(s) */ ask_rsts: tmstrcpy(rsts_ind,_TMC("N")); req_rsts: input(ask_rsts_code,TM_NLS_Get("0005","STATUS: "),2,ALPHA); if ( !*ask_rsts_code ) goto opt_rsts; tmstrcpy(rsts_ind,_TMC("Y")); tmstrcpy(rsts_code,ask_rsts_code); lockcolr(); inscolrrsts(); goto req_rsts; opt_rsts: if ( compare(rsts_ind,_TMC("Y"),EQS) ) goto ask_next; tmstrcpy(parm_no,_TMC("03")); sel_optional_ind(FIRST_ROW); if ( compare(rpt_optional_ind,_TMC("O"),EQS) ) goto ask_rsts; goto missing_parms; ask_next: /* Ask for audit option */ input(ask_run_mode,TM_NLS_Get("0006","AUDIT (A) OR UPDATE (U): "),1,ALPHA); if ( !*ask_run_mode ) goto opt_audit; tmstrcpy(run_mode,ask_run_mode); goto ask_delete; opt_audit: tmstrcpy(parm_no,_TMC("04")); sel_optional_ind(FIRST_ROW); if ( compare(rpt_optional_ind,_TMC("O"),EQS) ) goto ask_delete; goto missing_parms; ask_delete: /* Ask for delete option */ /* tmprintf(&tmBundle, _TMC(" \n")); */ input(ask_delete,TM_NLS_Get("0007","DELETE ALL EXPIRED NOTIFICATIONS?(Y/[N]): "),1,ALPHA); if ( !*ask_delete ) goto opt_delete; tmstrcpy(delete_flag,ask_delete); goto chkcriteria; opt_delete: tmstrcpy(parm_no,_TMC("05")); sel_optional_ind(FIRST_ROW); if ( compare(rpt_optional_ind,_TMC("O"),EQS) ) goto chkcriteria; goto missing_parms; chkcriteria: /*****API Replaced EXEC SQL COMMIT; POSTORA; *****/ EXEC SQL EXECUTE BEGIN gb_common.p_commit(NULL); END; END-EXEC; POSTORA; tmprintf(&tmBundle, TM_NLS_Get("0008","IF PURGE CRITERIA CORRECT, PRESS ENTER. IF YOU WISH TO ABORT JOB AND\n")); tmprintf(&tmBundle, TM_NLS_Get("0009","TRY AGAIN KEY ANY CHARACTER AND JOB WILL END\n")); input(ask_ok,TM_NLS_Get("0010","TO CONTINUE PROCESSING, HIT RETURN; OTHERWISE ENTER ANY CHARACTER: "),1,ALPHA); if ( !*ask_ok ) goto ask_line_count; goto endrun; /* *** Job submission alteration */ /* */ /* Line Count/Error Ask */ ask_line_count: input(ask_line_count_var,TM_NLS_Get("0011","NUMBER OF LINES PRINTED PER PAGE [55]: "),26,NUM); if ( !*ask_line_count_var ) goto init_line_count; tmstrcpy(linelimit,ask_line_count_var); goto end_parms; init_line_count: tmstrcpy(linelimit,_TMC("55")); goto end_parms; /* *** Error Messages */ missing_parms: tmprintf(&tmBundle, TM_NLS_Get("0012","Required parameter is missing, aborting job\n")); goto end_of_job; no_parms: tmprintf(&tmBundle, TM_NLS_Get("0013","Parameter sequence number is invalid, aborting job\n")); goto end_of_job; end_parms: /* Macros which need to be executed one time per program execution */ selinst(FIRST_ROW); seltitle(FIRST_ROW); report(selmacro,body,head,NULL); report(selmacro_delete, delete_body, NULL, NULL); end_of_job: foot(); table(T_END); endrun: /*****API Replaced EXEC SQL COMMIT; POSTORA; *****/ EXEC SQL EXECUTE BEGIN gb_common.p_commit(NULL); END; END-EXEC; POSTORA; exit2os(EXIT_SUCCESS); return EXIT_SUCCESS; } /* SELECT macros */ /* */ /* Select which is used in report statement to drive report */ /* if date option selected. If date used, deletes all */ /* address up to date specified excluding those address */ /* specified by user input. */ static int selmacro(int mode) { EXEC SQL DECLARE cursor_001 CURSOR FOR SELECT SPRIDEN_PIDM, SPRIDEN_LAST_NAME||', '|| SPRIDEN_FIRST_NAME||' '|| SPRIDEN_MI, SPRIDEN_ID, SFRSTCR_TERM_CODE, SFRSTCR_CRN, SFRSTCR_REG_SEQ, SFRSTCR_PTRM_CODE, SFRSTCR_RSTS_CODE, SFRSTCR_LEVL_CODE, SFRSTCR_CAMP_CODE, SFRSTCR_RESERVED_KEY FROM SPRIDEN, STVRSTS, SFRSTCR WHERE SPRIDEN_CHANGE_IND IS NULL AND SPRIDEN_PIDM = SFRSTCR_PIDM AND (SFRSTCR_PTRM_CODE IN (SELECT NVL(SUBSTR(SPRCOLR_VALUE_ATYP,1,3),'#') FROM SPRCOLR WHERE SPRCOLR_SESSIONID = :sessionid AND SPRCOLR_TYPE = 'T') OR :all_ptrm_code = '%') AND SFRSTCR_RSTS_CODE IN (SELECT NVL(SUBSTR(SPRCOLR_VALUE_ATYP,1,2),'#') FROM SPRCOLR WHERE SPRCOLR_SESSIONID = :sessionid AND SPRCOLR_TYPE = 'S') AND STVRSTS_INCL_ASSESS = 'N' AND STVRSTS_INCL_SECT_ENRL = 'N' AND STVRSTS_WAIT_IND = 'Y' AND SFRSTCR_RSTS_CODE = STVRSTS_CODE AND SFRSTCR_TERM_CODE = :term ORDER BY SPRIDEN_LAST_NAME, SPRIDEN_FIRST_NAME, SPRIDEN_MI; if ( mode==CLOSE_CURSOR ) { EXEC SQL CLOSE cursor_001; POSTORA; return TRUE; } if ( mode==FIRST_ROW ) { EXEC SQL OPEN cursor_001; POSTORA; } EXEC SQL FETCH cursor_001 INTO :pidm:Ind_01, :name:Ind_02, :id:Ind_03, :stcr_term_code:Ind_04, :stcr_crn:Ind_05, :stcr_reg_seq:Ind_06, :stcr_ptrm_code:Ind_07, :stcr_rsts_code:Ind_08, :stcr_levl_code:Ind_09, :stcr_camp_code:Ind_10, :stcr_reserved_key:Ind_11; POSTORA; if ( NO_ROWS_FOUND ) { *pidm='\0'; *name='\0'; *id='\0'; *stcr_term_code='\0'; *stcr_crn='\0'; *stcr_reg_seq='\0'; *stcr_ptrm_code='\0'; *stcr_rsts_code='\0'; *stcr_levl_code='\0'; *stcr_camp_code='\0'; *stcr_reserved_key='\0'; return FALSE; } return TRUE; } /* SELECT macros for deleting expired notifications */ /* */ /* Select which is used in report statement to drive */ /* deletion of expired notifications */ static int selmacro_delete(int mode) { EXEC SQL DECLARE cursor_100 CURSOR FOR SELECT SFRWLNT_TERM_CODE, SFRWLNT_CRN, SFRWLNT_PIDM FROM SSBSECT, SFRWLNT WHERE SFRWLNT_TERM_CODE = :term AND SFRWLNT_REG_CONF_STAT = 'Z' AND SSBSECT_TERM_CODE = SFRWLNT_TERM_CODE AND SSBSECT_CRN = SFRWLNT_CRN AND (SSBSECT_PTRM_CODE IN (SELECT NVL(SUBSTR(SPRCOLR_VALUE_ATYP,1,3),'#') FROM SPRCOLR WHERE SPRCOLR_SESSIONID = :sessionid AND SPRCOLR_TYPE = 'T') OR :all_ptrm_code = '%'); if ( mode==CLOSE_CURSOR ) { EXEC SQL CLOSE cursor_100; POSTORA; return TRUE; } if ( mode==FIRST_ROW ) { EXEC SQL OPEN cursor_100; POSTORA; } EXEC SQL FETCH cursor_100 INTO :stcr_term_code:Ind_04, :stcr_crn:Ind_05, :pidm:Ind_01; POSTORA; if ( NO_ROWS_FOUND ) { *stcr_term_code='\0'; *stcr_crn='\0'; *pidm='\0'; return FALSE; } return TRUE; } static void updtresv(void) { EXEC SQL UPDATE SSRRESV SET SSRRESV_WAIT_COUNT = (NVL(SSRRESV_WAIT_COUNT-1,0)), SSRRESV_WAIT_AVAIL = (NVL(SSRRESV_WAIT_AVAIL+1,0)) WHERE SSRRESV_TERM_CODE = :term AND SSRRESV_CRN = :stcr_crn AND NVL(SSRRESV_LEVL_CODE, '##') || NVL(SSRRESV_CAMP_CODE, '###') || NVL(SSRRESV_COLL_CODE, '##') || NVL(SSRRESV_DEGC_CODE, '######') || NVL(SSRRESV_PROGRAM, '############') || NVL(SSRRESV_LFST_CODE, '###############') || NVL(SSRRESV_MAJR_CODE, '####') || NVL(SSRRESV_DEPT_CODE, '####') || NVL(SSRRESV_CLAS_CODE, '##') || NVL(SSRRESV_ATTS_CODE, '####') || NVL(SSRRESV_CHRT_CODE, '##########') || NVL(SSRRESV_TERM_CODE_ADMIT, '######') || NVL(SSRRESV_TERM_CODE_MATRIC, '######') || NVL(SSRRESV_TERM_CODE_GRAD, '######') = :stcr_reserved_key; POSTORA; } static void updtsect(void) { /*****API Replace EXEC SQL UPDATE SSBSECT SET SSBSECT_WAIT_COUNT = (NVL(SSBSECT_WAIT_COUNT-1,0)), SSBSECT_WAIT_AVAIL = (NVL(SSBSECT_WAIT_AVAIL+1,0)) WHERE SSBSECT_TERM_CODE = :term AND SSBSECT_CRN = :stcr_crn AND SSBSECT_PTRM_CODE = :stcr_ptrm_code; POSTORA; *****/ EXEC SQL EXECUTE DECLARE lv_rec sb_section.section_rec; lv_cursor sb_section.section_ref; BEGIN lv_cursor := sb_section.f_query_one(:term, :stcr_crn); FETCH lv_cursor INTO lv_rec; IF lv_cursor%FOUND THEN sb_section.p_update( p_term_code => lv_rec.r_TERM_CODE, p_crn => lv_rec.r_CRN, p_ptrm_code => lv_rec.r_PTRM_CODE, p_wait_count => (NVL(lv_rec.r_WAIT_COUNT - 1, 0)), p_wait_avail => (NVL(lv_rec.r_WAIT_AVAIL + 1, 0)), p_data_origin => gb_common.DATA_ORIGIN, p_user_id => gb_common.F_SCT_USER); END IF; CLOSE lv_cursor; END; END-EXEC; POSTORA; /* if(POSTORA_API) TO BE IMPLEMENTED IF NEEDED. { printf ("The API generated error string is: %s\n", api_error_long); for(j = 0; j < api_error_count; j++) printf("Message = %d %s\n", j, api_error_list[j]); }*/ } static void delstcr(void) { EXEC SQL DELETE FROM SFRSTCR WHERE SFRSTCR_PIDM = :pidm AND SFRSTCR_TERM_CODE = :term AND SFRSTCR_CRN = :stcr_crn AND SFRSTCR_REG_SEQ = TO_NUMBER(:stcr_reg_seq) AND SFRSTCR_PTRM_CODE = :stcr_ptrm_code AND SFRSTCR_RSTS_CODE = :stcr_rsts_code AND SFRSTCR_LEVL_CODE = :stcr_levl_code AND SFRSTCR_CAMP_CODE = :stcr_camp_code; POSTORA; } /* VU 17/08/07*/ static void lockcolw (void) { EXEC SQL EXECUTE DECLARE row_id VARCHAR2(18); BEGIN sb_wl_collector.p_lock(p_term_code => :term, p_crn => :stcr_crn, p_rowid_inout => row_id); END; END-EXEC; POSTORA; } static void delcolw(void) { EXEC SQL EXECUTE DECLARE row_id VARCHAR2(18); BEGIN IF sb_wl_collector.f_exists(p_term_code => :term, p_crn => :stcr_crn) = 'Y' THEN sb_wl_collector.p_delete(p_term_code => :term, p_crn => :stcr_crn, p_rowid => row_id); END IF; END; END-EXEC; POSTORA; } static void lockwlnt (void) { EXEC SQL EXECUTE DECLARE row_id VARCHAR2(18); BEGIN sb_wl_notification.p_lock(p_term_code => :term, p_crn => :stcr_crn, p_pidm => :pidm, p_rowid_inout => row_id); END; END-EXEC; POSTORA; } static void delwlnt(void) { EXEC SQL EXECUTE DECLARE row_id VARCHAR2(18); BEGIN IF sb_wl_notification.f_exists(p_term_code => :term, p_crn => :stcr_crn, p_pidm=>:pidm) = 'Y' THEN sb_wl_notification.p_delete(p_term_code => :term, p_crn => :stcr_crn, p_pidm => :pidm, p_rowid => row_id); END IF; END; END-EXEC; POSTORA; } /* Parameter value reads */ /* */ /* *** Job submission alteration */ static int validate_one_up_no(int mode) { EXEC SQL DECLARE cursor_002 CURSOR FOR SELECT 'Y' FROM GJBPRUN WHERE GJBPRUN_JOB = :rptname AND GJBPRUN_ONE_UP_NO = TO_NUMBER(:rpt_one_up_no); if ( mode==CLOSE_CURSOR ) { EXEC SQL CLOSE cursor_002; POSTORA; return TRUE; } if ( mode==FIRST_ROW ) { EXEC SQL OPEN cursor_002; POSTORA; } EXEC SQL FETCH cursor_002 INTO :valid_ind:Ind_01; POSTORA; if ( NO_ROWS_FOUND ) { EXEC SQL CLOSE cursor_002; POSTORA; *valid_ind='\0'; return FALSE; } EXEC SQL CLOSE cursor_002; POSTORA; return TRUE; } /* Retrive mandatory/optional indicator for Parm */ static int sel_optional_ind(int mode) { EXEC SQL DECLARE cursor_003 CURSOR FOR SELECT GJBPDEF_OPTIONAL_IND FROM GJBPDEF WHERE GJBPDEF_JOB = :rptname AND GJBPDEF_NUMBER = TO_NUMBER(:parm_no); if ( mode==CLOSE_CURSOR ) { EXEC SQL CLOSE cursor_003; POSTORA; return TRUE; } if ( mode==FIRST_ROW ) { EXEC SQL OPEN cursor_003; POSTORA; } EXEC SQL FETCH cursor_003 INTO :rpt_optional_ind:Ind_01; POSTORA; if ( NO_ROWS_FOUND ) { EXEC SQL CLOSE cursor_003; POSTORA; *rpt_optional_ind='\0'; return FALSE; } EXEC SQL CLOSE cursor_003; POSTORA; return TRUE; } /* Retrive line count Parm */ static int read_line_count(int mode) { EXEC SQL DECLARE cursor_004 CURSOR FOR SELECT GJBPRUN_VALUE FROM GJBPRUN WHERE GJBPRUN_JOB = :rptname AND GJBPRUN_NUMBER = '99' AND GJBPRUN_ONE_UP_NO = TO_NUMBER(:rpt_one_up_no); if ( mode==CLOSE_CURSOR ) { EXEC SQL CLOSE cursor_004; POSTORA; return TRUE; } if ( mode==FIRST_ROW ) { EXEC SQL OPEN cursor_004; POSTORA; } EXEC SQL FETCH cursor_004 INTO :linelimit:Ind_01; POSTORA; if ( NO_ROWS_FOUND ) { EXEC SQL CLOSE cursor_004; POSTORA; *linelimit='\0'; return FALSE; } EXEC SQL CLOSE cursor_004; POSTORA; return TRUE; } /* Delete parameter table records */ static void del_parms(void) { EXEC SQL DELETE GJBPRUN WHERE GJBPRUN_JOB = :rptname AND GJBPRUN_ONE_UP_NO = TO_NUMBER(:rpt_one_up_no); POSTORA; } /* *** */ static int readterm(int mode) { EXEC SQL DECLARE cursor_005 CURSOR FOR SELECT GJBPRUN_VALUE FROM GJBPRUN WHERE GJBPRUN_NUMBER = '01' AND GJBPRUN_JOB = UPPER(:rptname) AND GJBPRUN_ONE_UP_NO = TO_NUMBER(:rpt_one_up_no); if ( mode==CLOSE_CURSOR ) { EXEC SQL CLOSE cursor_005; POSTORA; return TRUE; } if ( mode==FIRST_ROW ) { EXEC SQL OPEN cursor_005; POSTORA; } EXEC SQL FETCH cursor_005 INTO :term:Ind_01; POSTORA; if ( NO_ROWS_FOUND ) { EXEC SQL CLOSE cursor_005; POSTORA; *term='\0'; return FALSE; } EXEC SQL CLOSE cursor_005; POSTORA; return TRUE; } static int readp_term(int mode) { EXEC SQL DECLARE cursor_006 CURSOR FOR SELECT GJBPRUN_VALUE FROM GJBPRUN WHERE GJBPRUN_NUMBER = '02' AND GJBPRUN_JOB = UPPER(:rptname) AND GJBPRUN_ONE_UP_NO = TO_NUMBER(:rpt_one_up_no); if ( mode==CLOSE_CURSOR ) { EXEC SQL CLOSE cursor_006; POSTORA; return TRUE; } if ( mode==FIRST_ROW ) { EXEC SQL OPEN cursor_006; POSTORA; } EXEC SQL FETCH cursor_006 INTO :part_term_var:Ind_01; POSTORA; if ( NO_ROWS_FOUND ) { *part_term_var='\0'; return FALSE; } return TRUE; } static int readp_rsts(int mode) { EXEC SQL DECLARE cursor_007 CURSOR FOR SELECT GJBPRUN_VALUE FROM GJBPRUN WHERE GJBPRUN_NUMBER = '03' AND GJBPRUN_JOB = UPPER(:rptname) AND GJBPRUN_ONE_UP_NO = TO_NUMBER(:rpt_one_up_no); if ( mode==CLOSE_CURSOR ) { EXEC SQL CLOSE cursor_007; POSTORA; return TRUE; } if ( mode==FIRST_ROW ) { EXEC SQL OPEN cursor_007; POSTORA; } EXEC SQL FETCH cursor_007 INTO :rsts_code:Ind_01; POSTORA; if ( NO_ROWS_FOUND ) { *rsts_code='\0'; return FALSE; } return TRUE; } static int readmode(int mode) { EXEC SQL DECLARE cursor_008 CURSOR FOR SELECT GJBPRUN_VALUE FROM GJBPRUN WHERE GJBPRUN_NUMBER = '04' AND GJBPRUN_JOB = UPPER(:rptname) AND GJBPRUN_ONE_UP_NO = TO_NUMBER(:rpt_one_up_no); if ( mode==CLOSE_CURSOR ) { EXEC SQL CLOSE cursor_008; POSTORA; return TRUE; } if ( mode==FIRST_ROW ) { EXEC SQL OPEN cursor_008; POSTORA; } EXEC SQL FETCH cursor_008 INTO :run_mode:Ind_01; POSTORA; if ( NO_ROWS_FOUND ) { EXEC SQL CLOSE cursor_008; POSTORA; *run_mode='\0'; return FALSE; } EXEC SQL CLOSE cursor_008; POSTORA; return TRUE; } static int readdelete(int mode) { EXEC SQL DECLARE cursor_101 CURSOR FOR SELECT GJBPRUN_VALUE FROM GJBPRUN WHERE GJBPRUN_NUMBER = '05' AND GJBPRUN_JOB = UPPER(:rptname) AND GJBPRUN_ONE_UP_NO = TO_NUMBER(:rpt_one_up_no); if ( mode==CLOSE_CURSOR ) { EXEC SQL CLOSE cursor_101; POSTORA; return TRUE; } if ( mode==FIRST_ROW ) { EXEC SQL OPEN cursor_101; POSTORA; } EXEC SQL FETCH cursor_101 INTO :delete_flag:Ind_20; POSTORA; if ( NO_ROWS_FOUND ) { EXEC SQL CLOSE cursor_101; POSTORA; *delete_flag='\0'; return FALSE; } EXEC SQL CLOSE cursor_101; POSTORA; return TRUE; } /* Standard select macros */ /* */ /* Get current date */ static int seldate(int mode) { EXEC SQL DECLARE cursor_009 CURSOR FOR SELECT TO_CHAR(SYSDATE,G$_DATE.GET_NLS_DATE_FORMAT) FROM DUAL; if ( mode==CLOSE_CURSOR ) { EXEC SQL CLOSE cursor_009; POSTORA; return TRUE; } if ( mode==FIRST_ROW ) { EXEC SQL OPEN cursor_009; POSTORA; } EXEC SQL FETCH cursor_009 INTO :date:Ind_01; POSTORA; if ( NO_ROWS_FOUND ) { EXEC SQL CLOSE cursor_009; POSTORA; *date='\0'; return FALSE; } EXEC SQL CLOSE cursor_009; POSTORA; return TRUE; } /* Get institution name from institution table */ static int selinst(int mode) { EXEC SQL DECLARE cursor_010 CURSOR FOR SELECT GUBINST_NAME FROM GUBINST; if ( mode==CLOSE_CURSOR ) { EXEC SQL CLOSE cursor_010; POSTORA; return TRUE; } if ( mode==FIRST_ROW ) { EXEC SQL OPEN cursor_010; POSTORA; } EXEC SQL FETCH cursor_010 INTO :institution:Ind_01; POSTORA; if ( NO_ROWS_FOUND ) { EXEC SQL CLOSE cursor_010; POSTORA; *institution='\0'; return FALSE; } EXEC SQL CLOSE cursor_010; POSTORA; return TRUE; } /* Get title of report from report table */ /* Change to use name of report program */ static int seltitle(int mode) { EXEC SQL DECLARE cursor_011 CURSOR FOR SELECT GJBJOBS_TITLE FROM GJBJOBS WHERE GJBJOBS_NAME = UPPER(:rptname); if ( mode==CLOSE_CURSOR ) { EXEC SQL CLOSE cursor_011; POSTORA; return TRUE; } if ( mode==FIRST_ROW ) { EXEC SQL OPEN cursor_011; POSTORA; } EXEC SQL FETCH cursor_011 INTO :title_var:Ind_01; POSTORA; if ( NO_ROWS_FOUND ) { EXEC SQL CLOSE cursor_011; POSTORA; *title_var='\0'; return FALSE; } EXEC SQL CLOSE cursor_011; POSTORA; return TRUE; } /* Soften lock on reserved seat file */ static void lockresv(void) { EXEC SQL LOCK TABLE SSRRESV IN SHARE UPDATE MODE; POSTORA; } /* Soften lock on section file */ static void locksect(void) { EXEC SQL LOCK TABLE SSBSECT IN SHARE UPDATE MODE; POSTORA; /*API Deactivated the LOCK on the SSBSECT TABLE, by request of Jan */ /*Craven and advice of Ed Delaney. If required the code can be */ /*reactivated at a later date, or completely removed. */ /************************************************************************ EXEC SQL EXECUTE DECLARE row_id VARCHAR2(18); BEGIN sb_section.p_lock(p_term_code => :term, p_crn => :stcr_crn, p_rowid_inout => row_id); END; END-EXEC; POSTORA; *************************************************************************/ } /* Soften lock on course file */ static void lockstcr(void) { EXEC SQL LOCK TABLE SFRSTCR IN SHARE UPDATE MODE; POSTORA; } /* Soften lock on collector file */ static void lockcolr(void) { EXEC SQL LOCK TABLE SPRCOLR IN SHARE UPDATE MODE; POSTORA; } static void getsession(void) { EXEC SQL SELECT USERENV('SESSIONID') INTO :sessionid FROM DUAL; POSTORA; } /* Delete collector records */ static void delcolr(void) { EXEC SQL DELETE FROM SPRCOLR WHERE SPRCOLR_SESSIONID = :sessionid; POSTORA; } /* Insert part of term collector record */ static void inscolrterm(void) { EXEC SQL INSERT INTO SPRCOLR (SPRCOLR_SESSIONID, SPRCOLR_TYPE, SPRCOLR_VALUE_DATE, SPRCOLR_VALUE_ATYP, SPRCOLR_ACTIVITY_DATE, SPRCOLR_JOB, SPRCOLR_PARM_NUMBER) VALUES (:sessionid,'T',SYSDATE,:part_term_var,SYSDATE,'',''); POSTORA; } /* Insert status collector record */ static void inscolrrsts(void) { EXEC SQL INSERT INTO SPRCOLR (SPRCOLR_SESSIONID, SPRCOLR_TYPE, SPRCOLR_VALUE_DATE, SPRCOLR_VALUE_ATYP, SPRCOLR_ACTIVITY_DATE, SPRCOLR_JOB, SPRCOLR_PARM_NUMBER) VALUES (:sessionid,'S',SYSDATE,:rsts_code,SYSDATE,'',''); POSTORA; } /* Get the selected status(s) for the control report */ static int readpterm(int mode) { EXEC SQL DECLARE cursor_012 CURSOR FOR SELECT SPRCOLR_VALUE_ATYP FROM SPRCOLR WHERE SPRCOLR_SESSIONID = :sessionid AND SPRCOLR_TYPE = 'T' ORDER BY SUBSTR(SPRCOLR_VALUE_ATYP,1,1); if ( mode==CLOSE_CURSOR ) { EXEC SQL CLOSE cursor_012; POSTORA; return TRUE; } if ( mode==FIRST_ROW ) { EXEC SQL OPEN cursor_012; POSTORA; } EXEC SQL FETCH cursor_012 INTO :part_term_var:Ind_01; POSTORA; if ( NO_ROWS_FOUND ) { *part_term_var='\0'; return FALSE; } return TRUE; } /* Get the selected status(s) for the control report */ static int readrsts(int mode) { EXEC SQL DECLARE cursor_013 CURSOR FOR SELECT SPRCOLR_VALUE_ATYP FROM SPRCOLR WHERE SPRCOLR_SESSIONID = :sessionid AND SPRCOLR_TYPE = 'S' ORDER BY SUBSTR(SPRCOLR_VALUE_ATYP,1,2); if ( mode==CLOSE_CURSOR ) { EXEC SQL CLOSE cursor_013; POSTORA; return TRUE; } if ( mode==FIRST_ROW ) { EXEC SQL OPEN cursor_013; POSTORA; } EXEC SQL FETCH cursor_013 INTO :rsts_code:Ind_01; POSTORA; if ( NO_ROWS_FOUND ) { *rsts_code='\0'; return FALSE; } return TRUE; } /* Procedural macros */ /* *** Job submission alteration */ /* */ /* Add Retrieve Parms Macro */ static void retrieve_parms(void) { readterm(FIRST_ROW); report(readp_term,insertterm,NULL,NULL); report(readp_rsts,insertrsts,NULL,NULL); readmode(FIRST_ROW); read_line_count(FIRST_ROW); readdelete(FIRST_ROW); if ( *linelimit ) goto del_parms_lbl; tmstrcpy(linelimit,_TMC("55")); del_parms_lbl: del_parms(); } /* *** */ /* */ /* Head macro executes after the first row is read. The heading information */ /* is printed and then the first row is processed. */ static void head(void) { header(); tmstrcpy(hold_id,id); add(name_cnt,name_cnt,one); subhead(); body(); } /* Heading information */ static void header(void) { table(T_BEGIN,2); prtstr(date); prtstr(time_var); newcol(); setmode(M_CENTER); prtstr(institution); newcol(); prtstr(TM_NLS_Get("0014","PAGE")); add(pageno,pageno,one); prtnum(pageno,_TMC("99999")); newcol(); prtstr(term); newcol(); setmode(M_CENTER); prtstr(title_var); newcol(); prtstr(rptname); if ( compare(run_mode,_TMC("U"),EQS) ) goto endhdr; newcol(); newcol(); setmode(M_CENTER); prtstr(TM_NLS_Get("0015","Audit Report Only")); endhdr: skipline(1); table(T_END); } static void subhead(void) { table(T_BEGIN,3); newcol(); setmode(M_CENTER); prtstr(TM_NLS_Get("0016","ID")); newcol(); setmode(M_CENTER); prtstr(TM_NLS_Get("0017","NAME")); newcol(); setmode(M_CENTER); prtstr(TM_NLS_Get("0018","CRN")); newcol(); prtstr(TM_NLS_Get("0019","PART OF TERM")); newcol(); prtstr(TM_NLS_Get("0020","STATUS")); table(T_END); /* Set line number equal to number of lines in heading */ tmstrcpy(lineno,_TMC("3")); } /* Print body of report */ static void body(void) { add(count,count,one); if ( compare(lineno,linelimit,LT) ) goto samepage; newpage(); header(); subhead(); samepage: if ( compare(id,hold_id,EQS) ) goto dobody; tmstrcpy(hold_id,id); add(name_cnt,name_cnt,one); dobody: table(T_BEGIN,3); newcol(); prtstr(id); newcol(); prtstr(name); newcol(); prtstr(stcr_crn); newcol(); setmode(M_CENTER); prtstr(stcr_ptrm_code); newcol(); setmode(M_CENTER); prtstr(stcr_rsts_code); add(lineno,lineno,_TMC("1")); table(T_END); if ( compare(run_mode,_TMC("U"),EQS) ) goto dodel; return; dodel: locksect(); updtsect(); lockresv(); updtresv(); lockstcr(); delstcr(); /* VU 17/08/07*/ lockcolw(); delcolw(); lockwlnt(); delwlnt(); /*****API Replaced EXEC SQL COMMIT; POSTORA; *****/ EXEC SQL EXECUTE BEGIN gb_common.p_commit(NULL); END; END-EXEC; POSTORA; } /* delete body */ static void delete_body(void) { add(delete_count,delete_count,one); if ( compare(delete_flag,_TMC("Y"),EQS) ) goto checkmode; return; checkmode: if ( compare(run_mode,_TMC("U"),EQS) ) goto dodel; return; dodel: lockcolw(); delcolw(); lockwlnt(); delwlnt(); } /* Foot should contain at least all user defined parameters */ /* and a count of processed records. */ static void foot(void) { newpage(); header(); setmode(M_CENTER); prtstr(TM_NLS_Get("0021","* * * REPORT CONTROL INFORMATION -")); prtstr(rptname); prtstr(TM_NLS_Get("0022","- Release 8.4.0.4 * * *")); setmode(M_NORMAL); skipline(1); prtstr(TM_NLS_Get("0023","PURGE TERM:")); prtstr(term); newline(); prtstr(TM_NLS_Get("0024","SELECTED PART(S) OF TERM:")); report(readpterm,tbody,NULL,NULL); newline(); prtstr(TM_NLS_Get("0025","SELECTED STATUS(S):")); report(readrsts,fbody,NULL,NULL); skipline(1); prtstr(TM_NLS_Get("0026","DELETE ALL EXPIRED NOTIFICATIONS:")); prtstr(delete_flag); newline(); skipline(1); prtstr(TM_NLS_Get("0027","STUDENTS SELECTED:")); prtnum(name_cnt,_TMC("99990")); newline(); if ( compare(run_mode,_TMC("A"),EQS) ) goto pnodel; prtstr(TM_NLS_Get("0028","NUMBER OF STUDENT ENROLLMENTS DELETED:")); goto pcnt; pnodel: prtstr(TM_NLS_Get("0029","NUMBER OF POTENTIAL STUDENT ENROLLMENT DELETES:")); pcnt: prtnum(count,_TMC("9999990")); newline(); if ( compare(delete_flag,_TMC("N"),EQS) ) goto pnode2; if ( compare(run_mode,_TMC("A"),EQS) ) goto pnode2; prtstr(TM_NLS_Get("0030","NUMBER OF EXPIRATIONS DELETED:")); goto pcnt2; pnode2: prtstr(TM_NLS_Get("0031","NUMBER OF POTENTIAL EXPIRATION DELETES:")); pcnt2: prtnum(delete_count,_TMC("9999990")); } static void tbody(void) { table(T_BEGIN,5); prtstr(part_term_var); table(T_END); } static void fbody(void) { table(T_BEGIN,5); prtstr(rsts_code); table(T_END); } static void insertterm(void) { lockcolr(); inscolrterm(); if ( compare(part_term_var,_TMC("%"),EQS) ) goto aptrm; return; aptrm: tmstrcpy(all_ptrm_code,_TMC("%")); } static void insertrsts(void) { lockcolr(); inscolrrsts(); }