akshaj Beginner
Joined: 30 Dec 2002 Posts: 12 Topics: 8
|
Posted: Tue Dec 31, 2002 9:37 am Post subject: cobol find routine |
|
|
Code: |
/*
/* EDIT MACRO DESIGNED TO PERFORM COBOL SENSITIVE CURSOR DRIVEN SUB-EDIT FIND
/*
/***********************************************************************
/*
ISREDIT MACRO (PARM) NOPROCESS
IF &PARM = ? THEN +
DO
GOTO HELP
END
/*
/**********************************************************
/*OBTAIN CURSOR LOCATION AND GO NO FURTHER IF CURSOR NOT ON
/*DATA (I.E. ON COMMAND LINE OR OTHER NON-DATA AREA). CC
/*IS SET TO 0 IF THIS IS THE CASE.
/**********************************************************
ISREDIT (CL,CC) = CURSOR
IF &CC = 0 THEN +
DO
/* SET ZERRMSG = CF001
/* SET ZMSG000S = XXXXXXXXXXXXXX!
/* SET ZERRMSG = ISPZ000
EXIT CODE(0)
END
/**********************************************************
/*SET UP DATANAME DELIMITERS
/*OBTAIN ENTIRE LINE CURSOR RESTS ON AND LENGTH OF LINE
/**********************************************************
SET DELIM = &STR(., )
ISREDIT (LINE) = LINE .ZCSR
ISREDIT (END) = LRECL
SET START = 1
/**********************************************************
/* SCAN BACK FROM CURSOR POSITION TO OBTAIN START POSITION
/**********************************************************
DO I = &CC TO &START BY -1
IF &SYSINDEX(&SUBSTR(&I,&STR(&LINE)),&STR(&DELIM),1) > 0 +
THEN SET START = &I + 1
END
/**********************************************************
/* SCAN FORWARD FROM CURSOR POSITION TO OBTAIN END POSITION
/**********************************************************
DO I = &CC TO &END
IF &SYSINDEX(&SUBSTR(&I,&STR(&LINE)),&STR(&DELIM),1) > 0 +
THEN SET END = &I - 1
END
/**********************************************************
/* EXIT IF CURSOR WAS PLACED ON DELIMETER
/* EXTRACT DATASET NAME FOR FIND
/**********************************************************
IF &START > &END THEN EXIT CODE(0)
SET WORD = &SUBSTR(&START:&END,&STR(&LINE))
/**********************************************************
/* CHECK TO SEE IF PARAMETER 'PREV' USED
/* IF YES, SET UP *TOP OF DATA REACHED* MSG JUST IN CASE.
/**********************************************************
IF &SYSINDEX(PREV,&PARM) = 1 THEN +
DO
SET ZERRMSG = ISRE166
END
/**********************************************************
/* CHECK TO SEE IF PARAMETER 'PREV' NOT USED
/* IF NOT USED, SET UP *BOTTOM OF DATA REACHED* MSG
/* IN CASE INITIAL FIND FAILS.
/**********************************************************
IF &SYSINDEX(PREV,&PARM) = 0 THEN +
DO
SET ZERRMSG = ISRE165
/**** FOLLOWING STATEMENT NECESSARY TO PREVENT
/**** *BOTTOM OF DATA* MESSAGE FROM APPEARING
/**** TWICE!!!
ISREDIT CURSOR = &CL &EVAL(&START-1)
END
/* SET ZINSTR1 = '&WORD'
ISREDIT FIND '&WORD' &PARM
SET &LCC = &LASTCC
IF &LCC = 0 THEN +
DO
/* SET ZMSG000S = &ZINSTR FOUND
SET ZMSG000S = CHARS FOUND
SET ZERRMSG = ISPZ000
END
ISPEXEC SETMSG MSG(&ZERRMSG)
EXIT CODE(&LCC)
HELP: +
WRITE
WRITE ISPF/PDF EDIT MACRO TO PERFORM COBOL SENSITIVE FIND.
WRITE
WRITE TO RUN:
WRITE
WRITE ENTER CF ON THE COMMAND LINE AND USE MANOEVER THE CURSOR TO
WRITE REST ANYWHERE ON THE DATANAME OF INTEREST. HIT <ENTER>.
WRITE
WRITE A PARAMETER OF FIRST CAN BE USED SINCE THIS IS A FRONT END
WRITE TO THE FIND COMMAND.
WRITE
WRITE
EXIT CODE(0)
|
|
|