2026-02-12 11:51:44 +08:00
|
|
|
&ACCESS R4
|
2026-02-06 19:32:09 +08:00
|
|
|
&COMMENT EXTERNAL package
|
|
|
|
|
DEF P00 (COMMAND :IN,PGNO_FUNCT :IN,P_ID[] :OUT,E_NO :IN )
|
|
|
|
|
DECL P00_COMMAND COMMAND
|
|
|
|
|
DECL FUNCT_TYPE PGNO_FUNCT
|
|
|
|
|
DECL CHAR P_ID[]
|
|
|
|
|
E6AXIS AK_AXIS
|
|
|
|
|
REAL AX_DIST
|
|
|
|
|
INT E_NO
|
|
|
|
|
SWITCH COMMAND
|
|
|
|
|
CASE #INIT_EXT
|
|
|
|
|
INIT_EXT ( )
|
|
|
|
|
CASE #EXT_PGNO
|
|
|
|
|
EXT_PGNO (PGNO_FUNCT )
|
|
|
|
|
CASE #CHK_HOME
|
|
|
|
|
CHK_HOME ( )
|
|
|
|
|
CASE #EXT_ERR
|
|
|
|
|
EXT_ERR (P_ID[],E_NO )
|
|
|
|
|
ENDSWITCH
|
|
|
|
|
END
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DEF INIT_EXT ( )
|
|
|
|
|
;********************************
|
|
|
|
|
; Function: initializing of the
|
|
|
|
|
; external interface
|
|
|
|
|
;********************************
|
|
|
|
|
BOOL ERROR
|
|
|
|
|
INT N
|
|
|
|
|
PGNO_ERROR=0
|
|
|
|
|
;********************************
|
|
|
|
|
;CHECK HOME
|
|
|
|
|
;********************************
|
|
|
|
|
|
|
|
|
|
;********************************
|
|
|
|
|
;INIT PGNO_REQ UND APPL_RUN
|
|
|
|
|
;********************************
|
|
|
|
|
IF (PGNO_REQ>0) THEN
|
|
|
|
|
$OUT[PGNO_REQ]=FALSE
|
|
|
|
|
ENDIF
|
|
|
|
|
IF (PGNO_REQ<0) THEN
|
|
|
|
|
$OUT[-PGNO_REQ]=TRUE
|
|
|
|
|
ENDIF
|
|
|
|
|
IF (APPL_RUN>0) THEN
|
|
|
|
|
$OUT[APPL_RUN]=FALSE
|
|
|
|
|
ENDIF
|
|
|
|
|
IF PLC_ENABLE AND (ERR_TO_PLC>0) THEN
|
|
|
|
|
$OUT[ERR_TO_PLC]=FALSE
|
|
|
|
|
ENDIF
|
|
|
|
|
IF REFLECT_PROG_NR==1 THEN
|
|
|
|
|
FOR N=0 TO PGNO_LENGTH-1
|
|
|
|
|
$OUT[PGNO_FBIT_REFL+N]=FALSE
|
|
|
|
|
ENDFOR
|
|
|
|
|
ENDIF
|
|
|
|
|
;*******************
|
|
|
|
|
REPEAT
|
|
|
|
|
;***********************************************************
|
|
|
|
|
ERROR=FALSE
|
|
|
|
|
REPEAT
|
|
|
|
|
IF ($I_O_ACTCONF==FALSE) THEN
|
|
|
|
|
ERROR=TRUE
|
|
|
|
|
MsgQuit("OperatorModeWrong", "P00")
|
|
|
|
|
ENDIF
|
|
|
|
|
UNTIL ($I_O_ACTCONF==TRUE)
|
|
|
|
|
SWITCH PGNO_TYPE
|
|
|
|
|
;*********************************************************
|
|
|
|
|
CASE 1,2 ;bci-coding,bcd-coding
|
|
|
|
|
;*********************************************************
|
|
|
|
|
;***** CHECK PGNO_LENGTH *****
|
|
|
|
|
IF (PGNO_LENGTH<1) THEN
|
|
|
|
|
ERROR=TRUE ;pgno_length
|
|
|
|
|
MsgQuit("PgNo_LengthRangeWrong", "P00")
|
|
|
|
|
ENDIF
|
|
|
|
|
IF (PGNO_TYPE==1) THEN ;bci-coding
|
|
|
|
|
IF (PGNO_LENGTH>16) THEN
|
|
|
|
|
ERROR=TRUE ;pgno_length
|
|
|
|
|
MsgQuit("PgNo_LengthRangeWrong", "P00")
|
|
|
|
|
ENDIF
|
|
|
|
|
ENDIF
|
|
|
|
|
IF (PGNO_TYPE==2) THEN ;bcd-coding
|
|
|
|
|
SWITCH PGNO_LENGTH
|
|
|
|
|
CASE 4,8,12,16
|
|
|
|
|
DEFAULT
|
|
|
|
|
ERROR=TRUE ;pgno_length
|
|
|
|
|
MsgQuit("PgNo_LengthWrong", "P00")
|
|
|
|
|
ENDSWITCH
|
|
|
|
|
ENDIF
|
|
|
|
|
;***** CHECK PGNO_FBIT *****
|
|
|
|
|
IF (PGNO_FBIT<1) THEN
|
|
|
|
|
ERROR=TRUE ;pgno_fbit
|
|
|
|
|
MsgQuit("PgNo_FBitWrong", "P00")
|
|
|
|
|
ENDIF
|
|
|
|
|
;***** CHECK PGNO_REQ *****
|
|
|
|
|
IF (PGNO_REQ==0) THEN
|
|
|
|
|
ERROR=TRUE ;pgno_req
|
|
|
|
|
MsgQuit("PgNo_ReqWrong", "P00")
|
|
|
|
|
ENDIF
|
|
|
|
|
IF (PGNO_REQ>0) THEN ;active high
|
|
|
|
|
$OUT[PGNO_REQ]=FALSE ;reset
|
|
|
|
|
WAIT SEC 0.2 ;delay for plc
|
|
|
|
|
ENDIF
|
|
|
|
|
IF (PGNO_REQ<0) THEN ;active low
|
|
|
|
|
$OUT[PGNO_REQ*(-1)]=TRUE ;reset
|
|
|
|
|
WAIT SEC 0.2 ;delay for plc
|
|
|
|
|
ENDIF
|
|
|
|
|
;*********************************************************
|
|
|
|
|
CASE 3 ;one out of n
|
|
|
|
|
;*********************************************************
|
|
|
|
|
;***** CHECK PGNO_LENGTH *****
|
|
|
|
|
IF (PGNO_LENGTH<1) THEN
|
|
|
|
|
ERROR=TRUE ;pgno_length
|
|
|
|
|
MsgQuit("PgNo_LengthRangeWrong", "P00")
|
|
|
|
|
ENDIF
|
|
|
|
|
IF (PGNO_LENGTH>16) THEN
|
|
|
|
|
ERROR=TRUE ;pgno_length
|
|
|
|
|
MsgQuit("PgNo_LengthRangeWrong", "P00")
|
|
|
|
|
ENDIF
|
|
|
|
|
;***** CHECK PGNO_FBIT *****
|
|
|
|
|
IF (PGNO_FBIT<1) THEN
|
|
|
|
|
ERROR=TRUE ;pgno_fbit
|
|
|
|
|
MsgQuit("PgNo_FBitWrong", "P00")
|
|
|
|
|
ENDIF
|
|
|
|
|
|
|
|
|
|
;*********************************************************
|
|
|
|
|
DEFAULT ;PGNO_TYPE wrong type
|
|
|
|
|
;*********************************************************
|
|
|
|
|
ERROR=TRUE ;pgno_type
|
|
|
|
|
MsgQuit ("PgNo_TypeWrong", "P00")
|
|
|
|
|
ENDSWITCH
|
|
|
|
|
;***********************************************************
|
|
|
|
|
UNTIL (ERROR==FALSE)
|
|
|
|
|
END
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DEF EXT_PGNO (FUNCT :OUT )
|
|
|
|
|
;********************************
|
|
|
|
|
; Function: communication program
|
|
|
|
|
; for external mode
|
|
|
|
|
;********************************
|
|
|
|
|
DECL FUNCT_TYPE FUNCT
|
|
|
|
|
INT I,J,K,L,M,N,nHandle
|
|
|
|
|
BOOL P_RECV,P_CALC,bRes
|
|
|
|
|
J=1
|
|
|
|
|
K=0
|
|
|
|
|
L=1
|
|
|
|
|
P_RECV=FALSE
|
|
|
|
|
P_CALC=FALSE
|
|
|
|
|
IF (APPL_RUN>0) THEN
|
|
|
|
|
$OUT[APPL_RUN]=FALSE
|
|
|
|
|
ENDIF
|
|
|
|
|
SWITCH FUNCT
|
|
|
|
|
;*******************
|
|
|
|
|
CASE #PGNO_ACKN
|
|
|
|
|
;*******************
|
|
|
|
|
IF (PGNO_REQ>0) THEN
|
|
|
|
|
$OUT[PGNO_REQ]=FALSE
|
|
|
|
|
ENDIF
|
|
|
|
|
IF (PGNO_REQ<0) THEN
|
|
|
|
|
$OUT[PGNO_REQ*(-1)]=TRUE
|
|
|
|
|
ENDIF
|
|
|
|
|
IF (APPL_RUN>0) THEN
|
|
|
|
|
$OUT[APPL_RUN]=TRUE
|
|
|
|
|
ENDIF
|
|
|
|
|
;*******************
|
|
|
|
|
CASE #PGNO_GET
|
|
|
|
|
;*******************
|
|
|
|
|
IF REFLECT_PROG_NR==1 THEN
|
|
|
|
|
FOR N=0 TO PGNO_LENGTH-1
|
|
|
|
|
$OUT[PGNO_FBIT_REFL+N]=FALSE
|
|
|
|
|
ENDFOR
|
|
|
|
|
ENDIF
|
|
|
|
|
SWITCH PGNO_TYPE
|
|
|
|
|
;*******************
|
|
|
|
|
CASE 1,2
|
|
|
|
|
;*******************
|
|
|
|
|
IF (PGNO_VALID>0) THEN
|
|
|
|
|
WAIT FOR $IN[PGNO_VALID]==FALSE
|
|
|
|
|
ENDIF
|
|
|
|
|
IF (PGNO_VALID==0) THEN
|
|
|
|
|
WAIT FOR $EXT_START==FALSE
|
|
|
|
|
ENDIF
|
|
|
|
|
IF (PGNO_VALID<0) THEN
|
|
|
|
|
WAIT FOR $IN[PGNO_VALID*(-1)]==TRUE
|
|
|
|
|
ENDIF
|
|
|
|
|
IF (PGNO_REQ>0) THEN
|
|
|
|
|
$OUT[PGNO_REQ]=TRUE
|
|
|
|
|
ENDIF
|
|
|
|
|
IF (PGNO_REQ<0) THEN
|
|
|
|
|
$OUT[PGNO_REQ*(-1)]=FALSE
|
|
|
|
|
ENDIF
|
|
|
|
|
IF (PGNO_VALID>0) THEN
|
|
|
|
|
MsgState(nHandle, "Wait for PGNO_VALID=True", "P00")
|
|
|
|
|
REPEAT
|
|
|
|
|
IF REFLECT_PROG_NR==1 THEN
|
|
|
|
|
FOR I=0 TO PGNO_LENGTH-1
|
|
|
|
|
IF $IN[PGNO_FBIT+I]==TRUE THEN
|
|
|
|
|
$OUT[PGNO_FBIT_REFL+I]=TRUE
|
|
|
|
|
ELSE
|
|
|
|
|
$OUT[PGNO_FBIT_REFL+I]=FALSE
|
|
|
|
|
ENDIF
|
|
|
|
|
ENDFOR
|
|
|
|
|
ENDIF
|
|
|
|
|
UNTIL $IN[PGNO_VALID]==TRUE
|
|
|
|
|
bRes=Clear_KrlMsg (nHandle)
|
|
|
|
|
ENDIF
|
|
|
|
|
IF (PGNO_VALID==0) THEN
|
|
|
|
|
MsgState(nHandle, "Wait for $EXT_START=True", "P00")
|
|
|
|
|
REPEAT
|
|
|
|
|
IF REFLECT_PROG_NR==1 THEN
|
|
|
|
|
FOR I=0 TO PGNO_LENGTH-1
|
|
|
|
|
IF $IN[PGNO_FBIT+I]==TRUE THEN
|
|
|
|
|
$OUT[PGNO_FBIT_REFL+I]=TRUE
|
|
|
|
|
ELSE
|
|
|
|
|
$OUT[PGNO_FBIT_REFL+I]=FALSE
|
|
|
|
|
ENDIF
|
|
|
|
|
ENDFOR
|
|
|
|
|
ENDIF
|
|
|
|
|
UNTIL $EXT_START==TRUE
|
|
|
|
|
bRes=Clear_KrlMsg (nHandle)
|
|
|
|
|
ENDIF
|
|
|
|
|
IF (PGNO_VALID<0) THEN
|
|
|
|
|
MsgState(nHandle, "Wait for PGNO_VALID=False", "P00")
|
|
|
|
|
REPEAT
|
|
|
|
|
IF REFLECT_PROG_NR==1 THEN
|
|
|
|
|
FOR I=0 TO PGNO_LENGTH-1
|
|
|
|
|
IF $IN[PGNO_FBIT+I]==TRUE THEN
|
|
|
|
|
$OUT[PGNO_FBIT_REFL+I]=TRUE
|
|
|
|
|
ELSE
|
|
|
|
|
$OUT[PGNO_FBIT_REFL+I]=FALSE
|
|
|
|
|
ENDIF
|
|
|
|
|
ENDFOR
|
|
|
|
|
ENDIF
|
|
|
|
|
UNTIL $IN[PGNO_VALID*(-1)]==FALSE
|
|
|
|
|
bRes=Clear_KrlMsg (nHandle)
|
|
|
|
|
ENDIF
|
|
|
|
|
PGNO=0
|
|
|
|
|
SWITCH PGNO_TYPE
|
|
|
|
|
;*******************
|
|
|
|
|
CASE 1
|
|
|
|
|
;*******************
|
|
|
|
|
FOR I=0 TO PGNO_LENGTH-1
|
|
|
|
|
IF $IN[PGNO_FBIT+I] THEN
|
|
|
|
|
IF REFLECT_PROG_NR==1 THEN
|
|
|
|
|
$OUT[PGNO_FBIT_REFL+I]=TRUE
|
|
|
|
|
ENDIF
|
|
|
|
|
PGNO=PGNO+J
|
|
|
|
|
ENDIF
|
|
|
|
|
J=J*2
|
|
|
|
|
ENDFOR
|
|
|
|
|
;*******************
|
|
|
|
|
CASE 2
|
|
|
|
|
;*******************
|
|
|
|
|
FOR I=0 TO PGNO_LENGTH-1 STEP 4
|
|
|
|
|
N=0
|
|
|
|
|
J=1
|
|
|
|
|
FOR M=I TO I+3
|
|
|
|
|
IF $IN[PGNO_FBIT+M] THEN
|
|
|
|
|
N=N+J
|
|
|
|
|
IF REFLECT_PROG_NR==1 THEN
|
|
|
|
|
$OUT[PGNO_FBIT_REFL+M]=TRUE
|
|
|
|
|
ENDIF
|
|
|
|
|
ENDIF
|
|
|
|
|
J=J*2
|
|
|
|
|
ENDFOR
|
|
|
|
|
IF (N>9) THEN
|
|
|
|
|
PGNO_ERROR=2
|
|
|
|
|
PGNO=0
|
|
|
|
|
EXIT
|
|
|
|
|
ELSE
|
|
|
|
|
PGNO=PGNO+N*L
|
|
|
|
|
L=L*10
|
|
|
|
|
ENDIF
|
|
|
|
|
ENDFOR
|
|
|
|
|
ENDSWITCH
|
|
|
|
|
IF (PGNO_ERROR<>2) THEN
|
|
|
|
|
IF (PGNO_PARITY>0) THEN
|
|
|
|
|
P_RECV=$IN[PGNO_PARITY]
|
|
|
|
|
FOR I=0 TO PGNO_LENGTH-1
|
|
|
|
|
P_CALC=P_CALC EXOR $IN[PGNO_FBIT+I]
|
|
|
|
|
ENDFOR
|
|
|
|
|
IF (P_RECV<>P_CALC) THEN
|
|
|
|
|
PGNO=0
|
|
|
|
|
PGNO_ERROR=1
|
|
|
|
|
ELSE
|
|
|
|
|
PGNO_ERROR=0
|
|
|
|
|
ENDIF
|
|
|
|
|
ENDIF
|
|
|
|
|
IF (PGNO_PARITY<0) THEN
|
|
|
|
|
P_RECV=$IN[PGNO_PARITY*(-1)]
|
|
|
|
|
FOR I=0 TO PGNO_LENGTH-1
|
|
|
|
|
P_CALC=P_CALC EXOR $IN[PGNO_FBIT+I]
|
|
|
|
|
ENDFOR
|
|
|
|
|
IF (P_RECV<> NOT (P_CALC)) THEN
|
|
|
|
|
PGNO=0
|
|
|
|
|
PGNO_ERROR=1
|
|
|
|
|
ELSE
|
|
|
|
|
PGNO_ERROR=0
|
|
|
|
|
ENDIF
|
|
|
|
|
ENDIF
|
|
|
|
|
ENDIF
|
|
|
|
|
;*******************
|
|
|
|
|
CASE 3
|
|
|
|
|
;*******************
|
|
|
|
|
IF PGNO>0 THEN
|
|
|
|
|
WAIT FOR $IN[PGNO_FBIT+PGNO-1]==FALSE
|
|
|
|
|
ENDIF
|
|
|
|
|
K=0
|
|
|
|
|
REPEAT
|
|
|
|
|
FOR I=0 TO PGNO_LENGTH-1
|
|
|
|
|
IF $IN[PGNO_FBIT+I] THEN
|
|
|
|
|
IF K==0 THEN
|
|
|
|
|
K=I+1
|
|
|
|
|
ELSE
|
|
|
|
|
PGNO_ERROR=0
|
|
|
|
|
K=0
|
|
|
|
|
ENDIF
|
|
|
|
|
ENDIF
|
|
|
|
|
ENDFOR
|
|
|
|
|
UNTIL ((K<>0) OR (PGNO_ERROR==0))
|
|
|
|
|
PGNO=K
|
|
|
|
|
ENDSWITCH
|
|
|
|
|
;***********************************************************
|
|
|
|
|
CASE #PGNO_FAULT
|
|
|
|
|
;***********************************************************
|
|
|
|
|
IF PGNO_ERROR==1 THEN
|
|
|
|
|
MsgQuit("ParityFault", "P00", PGNO)
|
|
|
|
|
ENDIF
|
|
|
|
|
IF PGNO_ERROR==2 THEN
|
|
|
|
|
MsgQuit("BCDCodeError", "P00", PGNO)
|
|
|
|
|
ENDIF
|
|
|
|
|
IF PGNO_ERROR==0 THEN
|
|
|
|
|
IF (PGNO_TYPE==3) THEN
|
|
|
|
|
MsgQuit("ProgNumberWrong", "P00")
|
|
|
|
|
ELSE
|
|
|
|
|
MsgQuit("ProgramNotAvailable", "P00", PGNO)
|
|
|
|
|
ENDIF
|
|
|
|
|
ENDIF
|
|
|
|
|
PGNO_ERROR=0
|
|
|
|
|
IF (PGNO_REQ>0) THEN
|
|
|
|
|
$OUT[PGNO_REQ]=FALSE
|
|
|
|
|
ENDIF
|
|
|
|
|
IF (PGNO_REQ<0) THEN
|
|
|
|
|
$OUT[PGNO_REQ*(-1)]=TRUE
|
|
|
|
|
ENDIF
|
|
|
|
|
WAIT SEC 0.5
|
|
|
|
|
ENDSWITCH
|
|
|
|
|
END
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DEF CHK_HOME ( )
|
|
|
|
|
BOOL H
|
|
|
|
|
|
|
|
|
|
IF ($I_O_ACTCONF==TRUE) THEN
|
|
|
|
|
REPEAT
|
|
|
|
|
H=TRUE
|
|
|
|
|
IF ($IN_HOME==FALSE) THEN
|
|
|
|
|
H=FALSE
|
|
|
|
|
REPEAT
|
|
|
|
|
MsgQuit("MoveHomeInT1", "P00")
|
|
|
|
|
IF (($MODE_OP==#T1) OR ($MODE_OP==#T2)) THEN
|
|
|
|
|
RETURN
|
|
|
|
|
ENDIF
|
|
|
|
|
HALT
|
|
|
|
|
UNTIL $IN_HOME==TRUE
|
|
|
|
|
ELSE
|
|
|
|
|
H=TRUE
|
|
|
|
|
ENDIF
|
|
|
|
|
UNTIL ((H==TRUE) OR ($I_O_ACTCONF==FALSE))
|
|
|
|
|
ENDIF
|
|
|
|
|
END
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DEF EXT_ERR (P_ID :OUT, E_NO :IN )
|
|
|
|
|
;******************************
|
|
|
|
|
;Function : ext. error messages
|
|
|
|
|
; for package P00
|
|
|
|
|
;******************************
|
|
|
|
|
CHAR P_ID[]
|
|
|
|
|
INT E_NO,M
|
|
|
|
|
;********* MODUL-/FEHLER-NUMMER AUSWERTEN ********
|
|
|
|
|
I=1
|
|
|
|
|
FOUND=FALSE
|
|
|
|
|
IF (E_NO==0) THEN
|
|
|
|
|
IF PLC_ENABLE THEN
|
|
|
|
|
ERR=0
|
|
|
|
|
WAIT SEC 0.2
|
|
|
|
|
IF (ERR_TO_PLC >0) THEN
|
|
|
|
|
$OUT[ERR_TO_PLC]=FALSE
|
|
|
|
|
WAIT SEC 0.2
|
|
|
|
|
ENDIF
|
|
|
|
|
ENDIF
|
|
|
|
|
ELSE
|
|
|
|
|
IF PLC_ENABLE THEN
|
|
|
|
|
FOUND=FALSE
|
|
|
|
|
;******************************
|
|
|
|
|
; APPLIKATIONS-FEHLER AUSWERTEN
|
|
|
|
|
;******************************
|
|
|
|
|
I=1
|
|
|
|
|
REPEAT
|
|
|
|
|
IF (E_NO==P[I].ERR) THEN
|
|
|
|
|
IF (P_ID[1]==P[I].PKG[1]) THEN
|
|
|
|
|
IF (P_ID[2]==P[I].PKG[2]) THEN
|
|
|
|
|
IF (P_ID[3]==P[I].PKG[3]) THEN
|
|
|
|
|
FOUND=TRUE
|
|
|
|
|
ERR=P[I].OUT
|
|
|
|
|
F_WRITE ( )
|
|
|
|
|
ENDIF
|
|
|
|
|
ENDIF
|
|
|
|
|
ENDIF
|
|
|
|
|
ENDIF
|
|
|
|
|
I=I+1
|
|
|
|
|
UNTIL (I>MAXERR_A) OR FOUND
|
|
|
|
|
;***************************
|
|
|
|
|
; $STOPMESS-FEHLER AUSWERTEN
|
|
|
|
|
;***************************
|
|
|
|
|
I=128
|
|
|
|
|
IF (P_ID[1]=="C") THEN
|
|
|
|
|
IF (P_ID[2]=="T") THEN
|
|
|
|
|
IF (P_ID[3]=="L") THEN
|
|
|
|
|
M=MBX_REC(1,MLD)
|
|
|
|
|
IF M==0 THEN
|
|
|
|
|
REPEAT
|
|
|
|
|
IF (MLD.MESSNO==P[I].ERR) THEN
|
|
|
|
|
FOUND=TRUE
|
|
|
|
|
ERR=P[I].OUT
|
|
|
|
|
F_WRITE ( )
|
|
|
|
|
ENDIF
|
|
|
|
|
I=I+1
|
|
|
|
|
UNTIL (I>MAXERR_C+128-1) OR FOUND
|
|
|
|
|
ENDIF
|
|
|
|
|
ENDIF
|
|
|
|
|
ENDIF
|
|
|
|
|
ENDIF
|
|
|
|
|
IF (ERR_TO_PLC >0) THEN
|
|
|
|
|
$OUT[ERR_TO_PLC]=TRUE
|
|
|
|
|
ENDIF
|
|
|
|
|
ENDIF
|
|
|
|
|
ENDIF
|
|
|
|
|
END
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DEF F_WRITE ( )
|
|
|
|
|
IF (F_NO>64) THEN
|
|
|
|
|
F_NO=1
|
|
|
|
|
ENDIF
|
|
|
|
|
ERR_FILE[F_NO].P[1]=P[I].PKG[1]
|
|
|
|
|
ERR_FILE[F_NO].P[2]=P[I].PKG[2]
|
|
|
|
|
ERR_FILE[F_NO].P[3]=P[I].PKG[3]
|
|
|
|
|
ERR_FILE[F_NO].E=P[I].ERR
|
|
|
|
|
F_NO=F_NO+1
|
|
|
|
|
END
|
|
|
|
|
|