Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations Mike Lewis on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Alternate key 2

Status
Not open for further replies.

vanasanju

Programmer
Nov 3, 2003
5
0
0
IN
Hi,

I would like to know if is it possible to assign additional alternate key to existing file which has a primary key and an alternate key. Is it necessary to compile all the programs which access this file.

Regards

Sanjay
 
We will need to know the compiler and the operating system to answer this question. Depending on these, the answer will either be "yes - you can" or "no - you can't"

Bill Klein
 
hi,

Iam using COBOL5.0 for dos/windows.

regards
Sanjay
 
You can make a small conversion utility that reads the old file and writes the new one.
 
Im guesing you are using a VSAM dataset, if so you wil have to deldef the cluster and generate teh new alternate index. If you want to use this new path in your program
you wil have to make the nessesary code and recompile.
regards
 
hi,

I have an indexed file which has both primary key and alternate keys defined. Iam using MSCOBOL5.0. I need to add another alternate key to the exisiting file so that i can use that alternate key for taking reports. I dont have proper source codes for some of the program which refer this file. Is it possible for me to add an alternate key. The field which i want to create as alternate key is already availble in the exisiting structure.

Regards
Sanjay
 
MS COBOL 5.0 is actually Micro Focus COBOL. The answer is that you cannot add an alternate key without recompiling all programs that access the file. If you can recompile the programs, you can add the alternate key using the REBUILD utility.

Adding an alternate key is an expensive way to support one report. Why not just extract and sort?
 
Hi
I wrote a program (befor there was alt.key...) to add external logical file to a file.

In this called progrm you have to add a call in the main program every new/mod/delete main key.

It no need to recompile other programes.

It is possible to select building recors (for exmp. null value, range vales etc.)
=======================================================
000001* U P D A T E / R E T R I E V A L L O G I C A L F I L E
000002* =======================================================
000003*
000004* SW-FUNCTION "U" <---UPDATE .1
000005*
000006* A. NEW_KEY: LINK-BEFOR=LOW-VALUES
000007* LINK-AFTER = NEW KEY
000008*
000009* B. CHANGE: LINK-BEFOR = OLD KEY
000010* LINK-AFTER = NEW KEY
000011*
000012* C. DELETE LINK-BEFOR = OLD KEY
000013* LINK-AFTER=LOW-VALUES
000014*
000015* SW-FUNCTION "R" OR SW-FUNCTION "S"(+ START) <---RETRIEVAL .2
000016* A. INPUT: RANGE OF RETRIEVAL: LINK-BEFOR THRU LINK-AFTER
000017* B. OUTPUT: LINK-BEFOR = THE READ RECORD
000018* C. AT END: LINK-BEFOR,LINK-AFTER = HIGH-VALUES
000019* IF RECORD LENGTH <> 8 YOU HAVE TO CHANGE LINES:33,36,44,59,60 RESPE.
000020* IF THERE IS MORE LOGICAL FILE WITH SAME LENG. CHANGE LINK/LINK1 ETC.
000021 IDENTIFICATION DIVISION.
000022 PROGRAM-ID. LINK.
000023 ENVIRONMENT DIVISION.
000024 INPUT-OUTPUT SECTION.
000025 FILE-CONTROL.
000026 SELECT LINKFL ASSIGN TO DISK "LINKFL"
000027 ORGANIZATION IS INDEXED
000028 RECORD KEY IS KEY-FILE-LINK
000029 ACCESS IS DYNAMIC.
000030 DATA DIVISION.
000031 FILE SECTION.
000032 FD LINKFL
000033 RECORD 8.
000034 01 LINKFL-REC.
000035 02 KEY-FILE-LINK.
000036 03 LINK-KEY PIC X(8).
000037***************************************************************
000038 WORKING-STORAGE SECTION.
000039 01 MONE-NIKTEVO PIC 9(6) VALUE 0.
000040 01 SW-LINKFL PIC 9.
000041 88 LINKFL-EOF VALUE 1.
000042 01 SW-BEGIN PIC 9 VALUE 0.
000043 01 SW-ERROR PIC X.
000044 01 LEN-KEY PIC 99 VALUE 8.
000045 01 I PIC 99 COMP-6 VALUE 0.
000046 01 J PIC 99 COMP-6 VALUE 0.
000047 01 X.
000048 02 X-1 PIC X VALUE LOW-VALUES.
000049 02 X-2 PIC X.
000050 01 X-9 REDEFINES X PIC 9999 COMP-4.
000051 01 MANA PIC 9999 COMP-4.
000052 01 SHARIT PIC 9999 COMP-4.
000053 01 VECTOR-SHG-IN.
000054 02 VEC-SHG-IN PIC X OCCURS 20.
000055 01 VECTOR-SHG-OUT.
000056 02 VEC-SHG-OUT PIC X OCCURS 40.
000057 LINKAGE SECTION.
000058 01 LINK-FUNCTION PIC X.
000059 01 LINK-BEFOR PIC X(8).
000060 01 LINK-AFTER PIC X(8).
000061***************************************************************
000062 PROCEDURE DIVISION
000063 USING LINK-FUNCTION LINK-BEFOR LINK-AFTER.
000064 MAIN SECTION.
000065 1. IF LINK-FUNCTION = "U" PERFORM IDKUN
000066 ELSE IF LINK-FUNCTION = "R" OR "S" PERFORM READ-SEQ.
000067 SOF-MAIN-SECTION.
000068 EXIT PROGRAM.
000069***************************************************************
000070 IDKUN SECTION.
000071 1. PERFORM START-PROC THRU EX-START-PROC.
000072 PERFORM MAIN-PROC THRU EX-MAIN-PROC.
000073 GO TO EX-IDKUN-SECTION.
000074 START-PROC.
000075 IF SW-BEGIN = 0 MOVE 1 TO SW-BEGIN
000076 OPEN I-O LINKFL.
000077 EX-START-PROC.
000078 MAIN-PROC.
000079 IF LINK-BEFOR NOT = LINK-AFTER
000080 AND LINK-BEFOR NOT = LOW-VALUES
000081 MOVE LINK-BEFOR TO LINK-KEY
000082 PERFORM READ-LINKFL THRU EX-READ-LINKFL
000083 IF SW-LINKFL = 0 PERFORM DELETE-LINKFL.
000084 IF LINK-AFTER NOT = LOW-VALUES
000085 MOVE LINK-AFTER TO LINK-KEY
000086 PERFORM READ-LINKFL THRU EX-READ-LINKFL
000087 IF SW-LINKFL = 1 PERFORM WRITE-LINKFL.
000088 PERFORM START-LINKFL THRU EX-START-LINKFL.
000089 EX-MAIN-PROC.
000090 READ-LINKFL.
000091 MOVE 0 TO SW-LINKFL.
000092 READ LINKFL INVALID KEY MOVE 1 TO SW-LINKFL.
000093 EX-READ-LINKFL.
000094 DELETE-LINKFL.
000095 DELETE LINKFL
000096 INVALID KEY DISPLAY "WRONG DELETE LINKFL"
000097 PERFORM DISPLAY-CANCEL.
000098 EX-DELETE-LINKFL.
000099 WRITE-LINKFL.
000100 WRITE LINKFL-REC
000101 INVALID KEY DISPLAY "WRONG WRITE LINKFL"
000102 PERFORM DISPLAY-CANCEL.
000103 EX-WRITE-LINKFL.
000104 REWRITE-LINKFL.
000105 REWRITE LINKFL-REC
000106 INVALID KEY DISPLAY "REWRONG REWRITE LINKFL"
000107 PERFORM DISPLAY-CANCEL.
000108 EX-REWRITE-LINKFL.
000109 START-LINKFL.
000110 MOVE HIGH-VALUES TO LINK-KEY.
000111 START LINKFL KEY IS NOT LESS KEY-FILE-LINK
000112 INVALID KEY CONTINUE.
000113 EX-START-LINKFL.
000114 EX-IDKUN-SECTION. EXIT.
000115***************************************************************
000116 READ-SEQ SECTION.
000117 1. PERFORM START-PROC THRU EX-START-PROC.
000118 IF NOT LINKFL-EOF
000119 PERFORM READ-LINKFL THRU EX-READ-LINKFL.
000120 PERFORM END-PROC THRU EX-END-PROC.
000121 GO TO EX-READ-SEQ-SECTION.
000122 START-PROC.
000123 IF SW-BEGIN = 0 MOVE 1 TO SW-BEGIN
000124 OPEN INPUT LINKFL
000125 PERFORM START-LINKFL THRU EX-START-LINKFL
000126 ELSE IF LINK-FUNCTION = "S"
000127 PERFORM START-LINKFL THRU EX-START-LINKFL.
000128 EX-START-PROC.
000129 START-LINKFL.
000130 MOVE LINK-BEFOR TO LINK-KEY.
000131 MOVE ZEROES TO SW-LINKFL.
000132 START LINKFL KEY IS NOT LESS KEY-FILE-LINK
000133 INVALID KEY MOVE 1 TO SW-LINKFL.
000134 EX-START-LINKFL.
000135 READ-LINKFL.
000136 READ LINKFL NEXT AT END MOVE 1 TO SW-LINKFL
000137 GO TO EX-READ-LINKFL.
000138 IF LINK-KEY > LINK-AFTER MOVE 1 TO SW-LINKFL
000139 GO TO EX-READ-LINKFL.
000140 MOVE LINKFL-REC TO LINK-BEFOR.
000141 EX-READ-LINKFL.
000142 END-PROC.
000143 IF LINKFL-EOF MOVE HIGH-VALUES TO LINK-BEFOR LINK-AFTER.
000144 MOVE 0 TO SW-LINKFL.
000145 EX-END-PROC.
000146 DISPLAY-CANCEL.
000147 MOVE LINK-KEY TO VECTOR-SHG-IN.
000148 PERFORM IF-EXA VARYING I FROM 1 BY 1 UNTIL I > LEN-KEY.
000149 IF I > 33
000150 PERFORM IN-EXA VARYING I FROM 1 BY 1 UNTIL I > LEN-KEY
000151 DISPLAY VECTOR-SHG-OUT
000152 ELSE DISPLAY LINK-KEY.
000153 CALL "cancel".
000154 EX-DISPLAY-CANCEL.
000155 IF-EXA.
000156 MOVE VEC-SHG-IN(I) TO X-2.
000157 IF X-9 < 32 MOVE 88 TO I.
000158 EX-IF-EXA.
000159 IN-EXA.
000160 MOVE VEC-SHG-IN(I) TO X-2.
000161 DIVIDE 16 INTO X-9 GIVING MANA REMAINDER SHARIT.
000162 IF MANA > 9 ADD 65 TO MANA
000163 ELSE ADD 48 TO MANA.
000164 ADD 1 TO J.
000165 MOVE MANA TO X-9
000166 MOVE X-2 TO VEC-SHG-OUT(J).
000167 IF SHARIT > 9 ADD 65 TO SHARIT
000168 ELSE ADD 48 TO SHARIT.
000169 ADD 1 TO J.
000170 MOVE SHARIT TO X-9.
000171 MOVE X-2 TO VEC-SHG-OUT(J).
000172 EX-IN-EXA.
000173 EX-READ-SEQ-SECTION. EXIT.
000174***************************************************************
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top