	/*** (C) Copyright 1984, 1985  S.R.I. International ***/
#ifndef	GTJFN_OUTPUT_FILE

/*
 *
 *	CONSTANT, STRUCTURE and MACRO definitions for the GTJFN JSYS
 *
 */
struct gtjfn_block {
	int flags;				/* Flag bits		    */
#define	GTJFN_OUTPUT_FILE	(1<<0)			/* Next higher vers */
#define	GTJFN_NEW_FILE		(1<<1)			/* Must not exist   */
#define	GTJFN_OLD_FILE		(1<<2)			/* Must exist	    */
#define	GTJFN_PRINT_MESSAGE	(1<<3)			/* Message on <ESC> */
#define	GTJFN_CONFIRM		(1<<4)			/* Get confirmation */
#define	GTJFN_TEMPORARY		(1<<5)			/* Temporary file   */
#define	GTJFN_NS		(1<<6)			/* ??		    */
#define	GTJFN_GLOBAL_ACCESS	(1<<7)			/* For whole JOB    */
#define	GTJFN_DELETED		(1<<8)			/* Include deleted  */
#define	GTJFN_INPUT_FILE_GROUP	(1<<9)			/* Allow wildcards  */
#define	GTJFN_OUTPUT_FILE_GROUP	(1<<10)			/* Allow wildcards  */
#define	GTJFN_PHYSICAL		(1<<11)			/* No Logical Names */
#define	GTJFN_STRING		(1<<12)			/* Name in string   */
#define	GTJFN_EXTENDED_BLOCK	(1<<13)			/* Using LONG block */
/*
 *	JFN assignment options (bits 14 & 15)
 */
#define	GTJFN_ASSIGN_JFN_SHIFT	14			/* Assign specif JFN*/
#define	GTJFN_ASSIGN_JFN_BITS	(n) ((n >> GTJFN_ASSIGN_JFN_SHIFT) & 3)
#define	GTJFN_ASSIGN_JFN_IGNORE_CODE	0		/* Ignore spec. JFN */
#define	GTJFN_ASSIGN_JFN_ERROR_CODE	2		/* Return Error	    */
#define	GTJFN_ASSIGN_JFN_ALTERNATE_CODE	3		/* Try alternate    */
#define	GTJFN_ASSIGN_JFN_IGNORE \
		(GTJFN_ASSIGN_JFN_IGNORE_CODE<<GTJFN_ASSIGN_JFN_SHIFT)
#define	GTJFN_ASSIGN_JFN_ERROR \
		(GTJFN_ASSIGN_JFN_ERROR_CODE<<GTJFN_ASSIGN_JFN_SHIFT)
#define	GTJFN_ASSIGN_JFN_ALTERNATE \
		(GTJFN_ASSIGN_JFN_ALTERNATE_CODE<<GTJFN_ASSIGN_JFN_SHIFT)

	int	generation;		/* Generation Number	    */
#define	GTJFN_DEFAULT				0	/* Use default	    */
#define	GTJFN_NEXT_HIGHEST_GENERATION		(-1)	/* Next highest     */
#define	GTJFN_LOWEST_GENERATION			(-2)	/* Lowest existing  */
#define	GTJFN_ALL_GENERATIONS			(-3)	/* All generations  */
	int	source;			/* Source JFN or string	    */
	int	destination;		/* Destination JFN	    */
	char   *default_device;			/* Default device string    */
	char   *default_directory;		/* Default directory string */
	char   *default_filename;		/* Default filename string  */
	char   *default_extension;		/* Default extension string */
	char   *default_protection;		/* Default protection string*/
	char   *default_account;		/* Default account string   */
	int	jfn;				/* JFN to associate	    */
#ifndef	CTTRM_JFN
#define	CTTRM_JFN	(-1)				/* Controlling TTY  */
#define	PRIIN_JFN	0100				/* Primary Input    */
#define	PRIOU_JFN	0101				/* Primary Output   */
#define	LOWEST_JFN	CTTRM_JFN			/* Lowest Jfn #     */
#define	HIGHEST_JFN	PRIOU_JFN			/* Highest Jfn #    */
#endif
/*
 *	Extended block (if GTJFN_EXTENDED_BLOCK flag is on)
 */
	int	flags2;				/* More flags		    */
/* User Flags */
#define	GTJFN_RETURN_IF_BUFFER_EMPTY	(1<<0)		/* For COMND JSYS   */
#define	GTJFN_SHORT_FILENAMES		(1<<1)		/* 6/3 char names   */
#define	GTJFN_RETURN_CONFIRMATION	(1<<2)		/* Put in buffer    */
#define	GTJFN_IGNORE_INVISIBLE_STATUS	(1<<3)		/* invisible OK	    */
#define	GTJFN_USER_FLAGS2	(GTJFN_RETURN_IF_BUFFER_EMPTY |\
				 GTJFN_SHORT_FILENAMES |\
				 GTJFN_RETURN_CONFIRMATION |\
				 GTJFN_IGNORE_INVISIBLE_STATUS)
/* Flags for COMND JSYS */
#define	GTJFN_DO_ESCAPE			(1<<4)		/* Complete it	    */
#define	GTJFN_DO_CTRL_F			(1<<5)		/* Complete field   */
#define	GTJFN_DO_QUESTION		(1<<6)		/* Give alternatives*/
#define	GTJFN_COMND_FLAGS2	(GTJFN_DO_ESCAPE |\
				 GTJFN_DO_CTRL_F |\
				 GTJFN_DO_QUESTION)
	char   *output_buffer;			/* Output buffer for name   */
	int	output_buffer_size;		/* Size of output buffer    */
	char   *prompt;				/* Prompt string	    */
	char   *ctrl_r_string;			/* String to print for ^R   */
	};

/*
 *	Return codes
 */
#define	GTJFN_ERROR(Code)	(Code < 0)	/* An error code	*/
#define	GTJFN_ERROR_NOT_UNIQUE		(-2)	/* Name not unique	*/
#define	GTJFN_ERROR_FIELD_UNIQUE	(-3)	/* Not Unique (field is)*/
#define	GTJFN_ERROR_BUFFER_EMPTY	(-4)	/* Backed up too far	*/
#define	GTJFN_ERROR_ILLEGAL_WILDCARDS	(-5)	/* Not allowed		*/
#define	GTJFN_ERROR_BAD_FILENAME	(-6)	/* Bad filename		*/
#define	GTJFN_ERROR_FILE_NOT_FOUND	(-7)	/* File not found	*/

/*
 *	GNJFN return flags
 */
#define	GNJFN_VERSION_CHANGED	(1<<0)		/* Version # changed	*/
#define	GNJFN_EXTENSION_CHANGED	(1<<1)		/* Extension changed	*/
#define	GNJFN_FILENAME_CHANGED	(1<<2)		/* Filename changed	*/
#define	GNJFN_DIRECTORY_CHANGED	(1<<3)		/* Directory changed	*/
#define	GNJFN_DEVICE_CHANGED	(1<<4)		/* Device changed	*/


/*
 *	Define the GTJFN/GNJFN macros
 */
#define	GTJFN(flags,gen,src,ret,blk) gtjfn_jsys(flags,gen,src,ret,blk)
#define	GNJFN(jfn,flags) gtjfn_jsys(jfn,flags)


/*
 *	Define COMND as well
 */
#ifndef	COMND_RAISE
#include "comnd.h"
#endif	COMND_RAISE

#endif	GTJFN_OUTPUT_FILE
