00831 ISAM'ERR:
00832 IF E=33 THEN RETURN
00833
00834 IF E=0 THEN &
E=(1):&
ENTRY="Error# 0 ID NOT UNIQUE--Already on file":&
GOTO ISAM'ERROR'COMPLETE
00835 IF E=(-3)THEN &
E=(1):&
ENTRY="Error#(-3) KEY NOT FOUND":&
GOTO ISAM'ERROR'COMPLETE
00836 IF E=203 THEN &
ENTRY="Error#203 Warning, free index blocks < minimum - CALL FOR HELP":&
GOTO ISAM'ERROR'COMPLETE
00837 IF E=204 THEN &
ENTRY="Error#204 Data file is full - CALL FOR HELP":&
GOTO ISAM'ERROR'COMPLETE
00838 IF E=205 THEN &
ENTRY="Error#205 Index file is full - CALL FOR HELP":&
GOTO ISAM'ERROR'COMPLETE
00839 IF E=206 THEN &
ENTRY="Error#206 Can not change key":&
GOTO ISAM'ERROR'COMPLETE
00840 IF E=207 THEN &
ENTRY="Error#207 Index structure is smashed - CALL FOR HELP":&
GOTO ISAM'ERROR'COMPLETE
00841 IF E=208 THEN &
ENTRY="Error#208 Duplicate key":&
GOTO ISAM'ERROR'COMPLETE
00842 IF E=209 THEN &
ENTRY="Error#209 Can't add, not enough free index blocks - CALL FOR HELP":&
GOTO ISAM'ERROR'COMPLETE
00843 IF E=210 THEN &
ENTRY="Error#210 Invalid number":&
GOTO ISAM'ERROR'COMPLETE
00844 IF E=227 THEN &
ENTRY="Error#227 Can not delete primary key":&
GOTO ISAM'ERROR'COMPLETE
00845 IF E=229 THEN &
ENTRY="Error#229 Data file smashed - CALL FOR HELP":&
GOTO ISAM'ERROR'COMPLETE
00846 ENTRY="Error#"+(E USING "#ZZ")
00847
00848 ISAM'ERROR'COMPLETE:
00849 ENTRY=ENTRY+" Ch#"+(E'CHNO USING "####")
00850 ENTRY[1,65]=ENTRY+SPACE(65)
00851 XCALL MESAG,ENTRY,2
00852 ENTRY=""
00854 RETURN
00855
00875 MAP1 PTHTOT'LAST'KEYS(10),S,50
00876 FIND'LAST'PTHTOT:
00877 CALL VALIDATE'PTHTOT'KEY
00878 IF PTHTOT'KEY'NO>1 THEN PTHTOT[PTHTOT'KEY'ST(1),PTHTOT'KEY'END(1)]=SPACE(50)
00879 CALL LOAD'PTHTOT'SEARCH'KEY
00880 XCALL STRIP, ISAM'SEARCH'KEY
00881 ISAM'SEARCH'KEY=ISAM'SEARCH'KEY+ISAM'TILDES
00882 FIND #PTHTOT'CHNO, ISAM'KEY(ISAM'KEY'NO) < ISAM'SEARCH'KEY, ISAM'TEST'KEY
00883 GOTO FIND'PTHTOT'CONTINUE
00884
00885 FIND'PREVIOUS'PTHTOT:
00886 CALL VALIDATE'PTHTOT'KEY
00887 IF PTHTOT'LAST'KEY'USED=ISAM'KEY'NO THEN GOTO GET'PREVIOUS'PTHTOT
00888 ISAM'SEARCH'KEY=PTHTOT'LAST'KEYS(PTHTOT'KEY'NO)
00889 IF ISAM'SEARCH'KEY="" THEN ISAM'SEARCH'KEY=SPACE(50)
00890 FIND #PTHTOT'CHNO, ISAM'KEY(ISAM'KEY'NO) < ISAM'SEARCH'KEY, ISAM'TEST'KEY
00891 GOTO FIND'PTHTOT'CONTINUE
00892
00893 FIND'FIRST'PTHTOT:
00894 CALL VALIDATE'PTHTOT'KEY
00895 CALL LOAD'PTHTOT'SEARCH'KEY
00896 FIND #PTHTOT'CHNO, ISAM'KEY(ISAM'KEY'NO) >= ISAM'SEARCH'KEY, ISAM'TEST'KEY
00897 GOTO FIND'PTHTOT'CONTINUE
00898
00899 FIND'NEXT'PTHTOT:
00900 CALL VALIDATE'PTHTOT'KEY
00901 IF PTHTOT'LAST'KEY'USED=ISAM'KEY'NO THEN GOTO GET'NEXT'PTHTOT
00902 ISAM'SEARCH'KEY=PTHTOT'LAST'KEYS(PTHTOT'KEY'NO)
00903 IF ISAM'SEARCH'KEY="" THEN ISAM'SEARCH'KEY=SPACE(50)
00904 FIND #PTHTOT'CHNO, ISAM'KEY(ISAM'KEY'NO) > ISAM'SEARCH'KEY, ISAM'TEST'KEY
00905
00906 FIND'PTHTOT'CONTINUE:
00907 E=PTHTOT'STS: IF ABS(E)<=1 THEN E=0
00908 IF E#0 THEN &
IF E=(-3) THEN E=38: GOTO FIND'DONE'PTHTOT &
ELSE GOTO ISAM'ERR
00909 GET'NEXT'PTHTOT:
00910 GET'NEXT #PTHTOT'CHNO, PTHTOT
00911 GOTO GET'PTHTOT'CONTINUE
00912 GET'PREVIOUS'PTHTOT:
00913 GET'PREV #PTHTOT'CHNO, PTHTOT
00914 GET'PTHTOT'CONTINUE:
00915 PTHTOT'LAST'KEYS(PTHTOT'KEY'NO)=PTHTOT[PTHTOT'KEY'ST(PTHTOT'KEY'NO),PTHTOT'KEY'END(PTHTOT'KEY'NO)]
00916 IF PTHTOT'KEY'NO>1 THEN &
PTHTOT'LAST'KEYS(PTHTOT'KEY'NO)=PTHTOT'LAST'KEYS(PTHTOT'KEY'NO)+PTHTOT[PTHTOT'KEY'ST(1),PTHTOT'KEY'END(1)]
00917 E=PTHTOT'STS: IF ABS(E)<=1 THEN E=0
00918 IF E#0 THEN &
IF E=(-3) THEN E=38: GOTO FIND'DONE'PTHTOT &
ELSE GOTO ISAM'ERR
00919 FIND'DONE'PTHTOT:
00920 PTHTOT'LAST'KEY'USED=ISAM'KEY'NO
00921 RETURN
00922
00923 VALIDATE'PTHTOT'KEY:
00924 IF (PTHTOT'KEY'NO<1 OR PTHTOT'KEY'NO>PTHTOT'KEY'CNT) THEN PTHTOT'KEY'NO=1
00925 E'CHNO=PTHTOT'CHNO: ISAM'KEY'NO=PTHTOT'KEY'NO-1
00926 RETURN
00927
00928 LOAD'PTHTOT'SEARCH'KEY:
00929 ISAM'SEARCH'KEY=PTHTOT[PTHTOT'KEY'ST(PTHTOT'KEY'NO),PTHTOT'KEY'END(PTHTOT'KEY'NO)]
00930 IF PTHTOT'KEY'NO>1 THEN &
ISAM'SEARCH'KEY=ISAM'SEARCH'KEY+PTHTOT[PTHTOT'KEY'ST(1),PTHTOT'KEY'END(1)]
00931 IF ISAM'SEARCH'KEY="" THEN ISAM'SEARCH'KEY=SPACE(50)
00932 RETURN
00933 !!! FINISH file: ISMSBR.FN1
00934 GETL'PTHTOT:
00935 IF PROGRAM'NAME[4,6]="PST" THEN GOTO GETLQ'PTHTOT
00936 PTHTOT'LAST'KEY'USED=99: E'CHNO=PTHTOT'CHNO
00937 GET #PTHTOT'CHNO, ISAM'KEY(0) = PTHTOT[PTHTOT'KEY'ST(1),PTHTOT'KEY'END(1)], PTHTOT
00938 E=PTHTOT'STS: IF E#0 THEN GOTO ISAM'ERR
00939 GETLNR'PTHTOT:
00940 PTHTOT'ORIGINAL=PTHTOT
00941 RETURN
00942
00943 UPDATE'PTHTOT:
00944 IF PROGRAM'NAME[4,6]="PST" THEN GOTO UPDATEQ'PTHTOT
00945 IF PTHTOT=PTHTOT'ORIGINAL THEN E=0:RETURN
00946 PTHTOT'LAST'KEY'USED=99: E'CHNO=PTHTOT'CHNO
00947 GET'LOCKED #PTHTOT'CHNO, ISAM'KEY(0) = PTHTOT'ORIGINAL[PTHTOT'KEY'ST(1),PTHTOT'KEY'END(1)], PTHTOT'TEMP
00948 E=PTHTOT'STS: IF E#0 THEN IF E=(-3) THEN GOTO ADD'PTHTOT ELSE GOTO ISAM'ERR
00949
00950 IF PTHTOT'ORIGINAL#PTHTOT'TEMP THEN &
CALL TRY'FIX'PTHTOT'LOOP: IF E#0 THEN RELEASE'RECORD #PTHTOT'CHNO:&
XCALL MESAG,"Record has changed, no update performed. Try again",2: RETURN
00951
00952 UPDATE'RECORD #PTHTOT'CHNO, PTHTOT: RELEASE'RECORD #PTHTOT'CHNO
00953 E=PTHTOT'STS: IF E#0 THEN GOTO ISAM'ERR
00954 PTHTOT'ORIGINAL=PTHTOT
00955 RETURN
00956
00957 TRY'FIX'PTHTOT'LOOP:
00958 E=E+1: IF E>(PTHTOT'RECSIZ) THEN E=0: RETURN
00959 IF PTHTOT'BIN(E)=PTHTOT'TEMP'BIN(E) THEN GOTO TRY'FIX'PTHTOT'LOOP !Disk = Ours, OK
00960 IF PTHTOT'ORIGINAL'BIN(E)=PTHTOT'BIN(E) THEN &
PTHTOT'BIN(E)=PTHTOT'TEMP'BIN(E): GOTO TRY'FIX'PTHTOT'LOOP &
ELSE &
IF PTHTOT'ORIGINAL'BIN(E)#PTHTOT'TEMP'BIN(E) THEN E=(-99): RETURN !Orig # Disk # Ours, bad
00961 GOTO TRY'FIX'PTHTOT'LOOP
00962
00963 DELETE'PTHTOT:
00964 IF PROGRAM'NAME[4,6]="PST" THEN GOTO DELETEQ'PTHTOT
00965 PTHTOT'LAST'KEY'USED=99: E'CHNO=PTHTOT'CHNO
00966 GET'LOCKED #PTHTOT'CHNO, ISAM'KEY(0) = PTHTOT'ORIGINAL[PTHTOT'KEY'ST(1),PTHTOT'KEY'END(1)], PTHTOT'TEMP
00967 E=PTHTOT'STS: IF E#0 THEN &
IF E=(-3) THEN E=0: RETURN ELSE GOTO ISAM'ERR
00968
00969 DELETE'RECORD #PTHTOT'CHNO: RELEASE'RECORD #PTHTOT'CHNO
00970 E=PTHTOT'STS: IF E#0 THEN GOTO ISAM'ERR
00971 RETURN
00972
00973 ADD'PTHTOT: !Test - is primary already on file?
00974 PTHTOT'LAST'KEY'USED=99: E'CHNO=PTHTOT'CHNO
00975 GET'LOCKED #PTHTOT'CHNO, ISAM'KEY(0) = PTHTOT[PTHTOT'KEY'ST(1),PTHTOT'KEY'END(1)], PTHTOT'TEMP
00976
00977 ? TAB(22,1);PTHTOT[PTHTOT'KEY'ST(1),PTHTOT'KEY'END(1)];" E=";PTHTOT'STS
00978 XCALL SLEEP,.5
00979 E=PTHTOT'STS: IF E=0 THEN IF PROGRAM'NAME[4,6]#"PST" THEN &
PTHTOT'ORIGINAL=PTHTOT: RELEASE'RECORD #PTHTOT'CHNO: GOTO ISAM'ERR ELSE GOTO ISAM'ERR
00980
00981 PTHTOT'UPDATE=0
00982 CREATE'RECORD #PTHTOT'CHNO, PTHTOT
00983 PTHTOT'ORIGINAL=PTHTOT: E=PTHTOT'STS: IF E#0 THEN GOTO ISAM'ERR
00984 IF (PROGRAM'NAME[4,6]#"PST" OR BATCH'MODE#0) THEN RETURN
00985 GET'LOCKED #PTHTOT'CHNO, ISAM'KEY(0) = PTHTOT[PTHTOT'KEY'ST(1),PTHTOT'KEY'END(1)], PTHTOT
00986 E=PTHTOT'STS: IF E#0 THEN GOTO ISAM'ERR
00987 RETURN
00988
00989 DELETEQ'PTHTOT:
00990 DELETE'RECORD #PTHTOT'CHNO: RELEASE'RECORD #PTHTOT'CHNO
00991 GOTO PTHTOT'Q'DONE
00992 GETLQ'PTHTOT:
00993 GET'LOCKED #PTHTOT'CHNO, ISAM'KEY(0) = PTHTOT[PTHTOT'KEY'ST(1),PTHTOT'KEY'END(1)], PTHTOT
00994 GOTO PTHTOT'Q'DONE
00995 UPDATEQ'PTHTOT:
00996 PTHTOT'UPDATE=0
00997 UPDATE'RECORD #PTHTOT'CHNO, PTHTOT: RELEASE'RECORD #PTHTOT'CHNO
00998 PTHTOT'Q'DONE:
00999 PTHTOT'LAST'KEY'USED=99: E'CHNO=PTHTOT'CHNO: E=PTHTOT'STS
01000 IF E#0 THEN GOTO ISAM'ERR
01001 RETURN