/*===================================================================*/ /* Program....... RTVQRYF */ /* Description... Retrieve list of files used by query */ /* --------------------------------------------------------------- */ /* Parameter description Type Length */ /* */ /* Query name (required) Character 10 */ /* Library containing query (Name required) Character 10 */ /* Input file list structure Character 1280 */ /* */ /* The 1280 byte file list structure is used */ /* to return the list of files used as input to */ /* the query. The strucure is a 32 element */ /* array of 40 bytes. The format is a 10 byte */ /* file name, 10 byte library name, 10 byte */ /* member name and 10 byte record format name. */ /* The member name could be returned as special */ /* value *FIRST, in which case you must */ /* retrieve specific member name information */ /* if needed. */ /* */ /* Output file structure Character 30 */ /* */ /* The 30 byte output file structure is used */ /* to return the output file of the query. */ /* The format is a 10 byte file name, 10 byte */ /* library name and 10 byte member name. The */ /* member name could be returned as special */ /* value *FIRST or *FILE, in which case you */ /* must retrieve the specific member name */ /* information if needed. If the query does */ /* not produce an output file, special value */ /* *NONE will be returned at the beginning */ /* of the structure. */ /* */ /* Return code (0=Normal, 1=Abend) Character 1 */ /*===================================================================*/ ENTRY *(ENTRY_PLIST) EXT ; /*===================================================================*/ /* Entry parameters */ /*===================================================================*/ DCL SPCPTR Query@ PARM ; DCL DD Query CHAR(10) BAS(Query@) ; DCL SPCPTR Query_Library@ PARM ; DCL DD Query_Library CHAR(10) BAS(Query_Library@) ; DCL SPCPTR Query_Input_Files@ PARM ; DCL DD Query_Input_Files CHAR(1280) BAS(Query_Input_Files@) ; DCL SPCPTR Query_Output_File@ PARM ; DCL DD Query_Output_File CHAR(30) BAS(Query_Output_File@) ; DCL SPCPTR Return_Code@ PARM ; DCL DD Return_Code CHAR(1) BAS(Return_Code@) ; DCL OL ENTRY_PLIST(Query@, Query_Library@, Query_Input_Files@, Query_Output_File@, Return_Code@) PARM EXT MIN(5) ; /*===================================================================*/ /* System pointers for library and query definition */ /*===================================================================*/ DCL SYSPTR Library# ; DCL SYSPTR Query# ; /*===================================================================*/ /* Query definition data */ /*===================================================================*/ DCL SPCPTR Query_Data@ ; DCL SPCPTR Query_Number_Input_Files@ ; DCL DD Query_Number_Input_Files BIN(2) BAS(Query_Number_Input_Files@) ; /*===================================================================*/ /* Template for system pointer resolution */ /*===================================================================*/ DCL DD Object CHAR(34) ; DCL DD Object_Type CHAR(2) DEF(Object) POS(1) ; DCL DD Object_Name CHAR(30) DEF(Object) POS(3) ; DCL DD Object_Authority CHAR(2) DEF(Object) POS(33) INIT(X'0000') ; /*===================================================================*/ /* Template for query definition input file */ /*===================================================================*/ DCL SPCPTR Query_Input_Files_Template@ ; DCL DD Query_Input_Files_Template CHAR(80) BAS(Query_Input_Files_Template@) ; DCL DD Query_Input_Files_Template_File_Name CHAR(10) DEF(Query_Input_Files_Template) POS(3) ; DCL DD Query_Input_Files_Template_Library_Name CHAR(10) DEF(Query_Input_Files_Template) POS(15) ; DCL DD Query_Input_Files_Template_Member_Name CHAR(10) DEF(Query_Input_Files_Template) POS(27) ; DCL DD Query_Input_Files_Template_Format_Name CHAR(10) DEF(Query_Input_Files_Template) POS(39) ; /*===================================================================*/ /* Template for query definition output file */ /*===================================================================*/ DCL SPCPTR Query_Output_File_Template@ ; DCL DD Query_Output_File_Template CHAR(112) BAS(Query_Output_File_Template@) ; DCL DD Query_Output_File_Template_File_Name CHAR(10) DEF(Query_Output_File_Template) POS(5) ; DCL DD Query_Output_File_Template_Library_Name CHAR(10) DEF(Query_Output_File_Template) POS(17) ; DCL DD Query_Output_File_Template_Member_Name CHAR(10) DEF(Query_Output_File_Template) POS(29) ; /*===================================================================*/ /* Work variables */ /*===================================================================*/ DCL DD Next_File_Offset BIN(2) AUTO ; DCL DD Query_Number_Input_Files_Work BIN(2) ; DCL SPCPTR Query_Data_Offset@ ; DCL DD Query_Data_Offset BIN(4) BAS(Query_Data_Offset@) ; DCL SPCPTR Query_Output_Type@ ; DCL DD Query_Output_Type CHAR(1) BAS(Query_Output_Type@) ; /*===================================================================*/ /* Exception monitor */ /*===================================================================*/ DCL EXCM * EXCID(H'0000') BP(.Exit) ; /*===================================================================*/ /* Default to error condition */ /*===================================================================*/ CPYBLA Return_Code,'1' ; /*===================================================================*/ /* Initialize input files structure to blanks */ /*===================================================================*/ CPYBREP Query_Input_Files,' ' ; /*===================================================================*/ /* Initialize output file name to blanks */ /*===================================================================*/ CPYBREP Query_Output_File,' ' ; /*===================================================================*/ /* Resolve pointer to library */ /*===================================================================*/ CPYBLA Object_Type,X'0401' ; CPYBLAP Object_Name,Query_Library,' ' ; RSLVSP Library#,Object,*,* ; /*===================================================================*/ /* Resolve pointer to query definition */ /*===================================================================*/ CPYBLA Object_Type,X'1911' ; CPYBLAP Object_Name,Query,' ' ; RSLVSP Query#,Object,Library#,* ; /*===================================================================*/ /* Point to beginning of associated space for query definition */ /*===================================================================*/ SETSPPFP Query_Data@,Query# ; /*===================================================================*/ /* Check for output file */ /*===================================================================*/ SETSPPO Query_Data@,260 ; CPYBWP Query_Output_Type@,Query_Data@ ; CMPBLA(B) Query_Output_Type,'3'/NEQ(.No_Output_File) ; /*===================================================================*/ /* Retrieve offset to output file */ /*===================================================================*/ SETSPPO Query_Data@,380 ; /*===================================================================*/ /* Point to beginning of output file template area */ /*===================================================================*/ CPYBWP Query_Data_Offset@,Query_Data@ ; SETSPPO Query_Data@,Query_Data_Offset ; CPYBWP Query_Output_File_Template@,Query_Data@ ; CPYBLA Query_Output_File(1:10), Query_Output_File_Template_File_Name ; CPYBLA Query_Output_File(11:10), Query_Output_File_Template_Library_Name ; CPYBLA Query_Output_File(21:10), Query_Output_File_Template_Member_Name ; B .Get_Input_Files ; /*===================================================================*/ /* Query does not have an outfile */ /*===================================================================*/ .No_Output_File: ; CPYBLA Query_Output_File,'*NONE' ; /*===================================================================*/ /* Retrieve offset to number of files used as input to query */ /*===================================================================*/ .Get_Input_Files: ; SETSPPO Query_Data@,558 ; /*===================================================================*/ /* Retrieve number of files used as input to query */ /*===================================================================*/ CPYBWP Query_Number_Input_Files@,Query_Data@ ; CPYNV Query_Number_Input_Files_Work, Query_Number_Input_Files ; /*===================================================================*/ /* Point to beginning of input file list */ /*===================================================================*/ SETSPPO Query_Data@,560 ; /*===================================================================*/ /* Loop through list of input files */ /*===================================================================*/ CPYNV Next_File_Offset,1 ; .Loop01: ; CMPNV(B) Query_Number_Input_Files_Work,0/EQ(.End01) ; CPYBWP Query_Input_Files_Template@,Query_Data@ ; CPYBLA Query_Input_Files(Next_File_Offset:10), Query_Input_Files_Template_File_Name ; ADDN(S) Next_File_Offset,10 ; CPYBLA Query_Input_Files(Next_File_Offset:10), Query_Input_Files_Template_Library_Name ; ADDN(S) Next_File_Offset,10 ; CPYBLA Query_Input_Files(Next_File_Offset:10), Query_Input_Files_Template_Member_Name ; ADDN(S) Next_File_Offset,10 ; CPYBLA Query_Input_Files(Next_File_Offset:10), Query_Input_Files_Template_Format_Name ; ADDN(S) Next_File_Offset,10 ; SUBN(S) Query_Number_Input_Files_Work,1 ; ADDSPP Query_Data@,Query_Data@,80 ; B .Loop01 ; .End01: ; /*===================================================================*/ /* Set normal return code */ /*===================================================================*/ CPYBLA Return_Code,'0' ; .Exit: ; DEACTPG * ; RTX * ;