*************************************************************
FGCKFM CF E WORKSTN
F SFILE(SFLA:RRNA)
FGCKF UF A E DISK INFDS(INFDS)
FGCKFL1 IF E K DISK Rename(RGCKF:RGCKF1)
F INFDS(DB1) BLOCK(*NO)
FGCKFL2 IF E K DISK Rename(RGCKF:RGCKF2)
F INFDS(DB2) BLOCK(*NO)
FGCKFL3 IF E K DISK Rename(RGCKF:RGCKF3)
F INFDS(DB3) BLOCK(*NO)
* ..................................................
D Col# S 1 0
D CTL1Saved S Like(CTL1)
D CTL2Saved S Like(CTL2)
D ColSaved S Like(Col#)
* INFDS for database file. FileSize will contain the number
* of records in the file when the file is opened.
DINFDS DS
D FILESIZE 156 159B 0
* Get the record Number, to know which record to update/process:
D DB1 DS
D DB1RRN 397 400B 0
D DB2 DS
D DB2RRN 397 400B 0
D DB3 DS
D DB3RRN 397 400B 0
* ..................................................
DRecordDataDS E DS ExtName(GCKF)
D SavedData S Like(RecordDataDs)
D ChangedData S Like(SavedData)
D CheckData S Like(SavedData)
* ..................................................
DRecord4 DS
D GNNAME
D RecNbr
D Data 300
D AR4 S 400 Dim(3000)
* ..................................................
* If file is empty:
C FILESIZE IFLE *ZEROS
C Clear RecNbr
C EXSR AddFixSR
C Else
C Z-ADD 1 RRN 4 0
C Z-ADD 1 RRNA
C If Col#=ColSaved and
C CTL1=CTL1Saved and
C CTL2=CTL2Saved
C Write FMT01
C Else
C Eval ColSaved=Col#
C Eval CTL1Saved=CTL1
C Eval CTL2Saved=CTL2
* Clear subfile & screen, prepare to re-fill or fill:
C Eval *IN90=*OFF
C Clear SFLA
C Write FOOTR
C Write FMT01
* Show Partial note, or not:
C IF CTL1=1
C Eval *IN42=*ON
C Else
C Eval *IN42=*OFF
C End
C Select
C When Col#=1
C Exsr FillSFL1
C
C When Col#=2
C Exsr FillSFL2
C
C When Col#=3
C Exsr FillSFL3
C
C When Col#=4
C Exsr FillSFL4
C EndSL
C EndIf
C
**
C RRNA IFGT 17
C MOVE *ON *IN91
C END
C Z-ADD RRNA NBRREC
C MOVE *ON *IN90
C WRITE FOOTR
C EXFMT FMT01
C Read Footr
C Select
C When *INKC=*ON
C Eval *INLR=*ON
* Was a column heading clicked?
C When CURFLD = 'COL1 ' or
C CURFLD = 'COL2 ' or
C CURFLD = 'COL3 ' or
C CURFLD = 'COL4 '
C Eval *IN31=*OFF
C Eval *IN32=*OFF
C Eval *IN33=*OFF
C Eval *IN34=*OFF
c Select
C When CURFLD = 'COL1 '
C Eval Col# = 1
C Eval *IN31=*ON
C When CURFLD = 'COL2 '
C Eval Col# = 2
C Eval *IN32=*ON
C When CURFLD = 'COL3 '
C Eval Col# = 3
C Eval *IN33=*ON
C When CURFLD = 'COL4 '
C Eval Col# = 4
C Eval *IN34=*ON
C EndSL
* Footer Push button Choices:
* Settings
C When F1=2
C
* Issue key:
C When F1=3
C Exsr IssueSR
* Add Key :
C When F1=4
C Clear RecNbr
C Exsr ADDFIXSR
* Exit
C When F1=5
C Eval *INLR=*ON
C
* If a choice was made, then do the required action:
C When RRNA>*ZEROS
C RRNA CHAIN SFLA 54
C EXSR ADDFIXSR
* Do either the maintain window or the note window:(PushButton 2)
C When PB2=1
C EXSR ADDFIXSR
C When PB2=2
C EXSR ADDFIXSR
C When PB2=3
C EXSR IssueSR
C EndSL
C END
* ________________________________________________________
* Add or Fix a record:
C AddFixSR BegSR
C If RecNbr > *zeros
C RecNbr Chain (N) GCKF
C Movel RecordDataDS Saveddata
C Else
C Clear FMT05
C End
C EXFMT FMT05
* If accepted:
C If NOT *INKC and NOT *INKL
C If RecNbr > *zeros
C Movel RecordDataDS ChangedData
C RecNbr Chain GCKF
C Movel RecordDataDS CheckData
C If CheckData = SavedData
C Movel ChangedData RecordDataDS
C Update(E) RGCKF
C Else
* send a mesage: the record wa changed at another work station
C End
C Else
C Write (E) RGCKF
C End
C End
C ENDSr
* _____________________________________________________________
C IssueSR BegSR
* Get name to use:
C Clear FMT05
C Exsr AddFixSR
C EndSR
* _____________________________________________________
C AddKeySR BegSR
* Get name to use:
C Clear FMT05
C Exsr AddFixSR
C EndSR
* _____________________________________________________
C SettingSR BegSR
C EndSR
* _____________________________________________________
C *INZSR BegSR
C Eval Col# = 2
C Eval *IN32=*ON
C Eval CTL1=1
C Eval CTL2=1
C Eval PB2=2
C EndSR
* ____________________________________________________________
* Write the line(s) in the subfile:
C WriteLineSR BegSR
C Movel GCKNOTE PNNO
* Show Name as pink if "!", or not:
C Eval *IN41=*Off
C If CTL2=1
* If first character of Note is "!" then turn the name pink:
C Movel GCKNOTE Test1 1
C If Test1 = '!'
C Eval *IN41=*On
C End
C Movel GCKNOTE PNNO
* Show Name as pink if "!", or not:
C Eval *IN41=*Off
C If CTL2=1
* If first character of Note is "!" then turn the name pink:
C Movel GCKNOTE Test1 1
C If Test1 = '!'
C Eval *IN41=*On
C End
C End
* Get name(s), if key(s) issued:
C WRITE SFLA
C ADD 1 RRN
C Z-ADD RRN RRNA
C EndSR
* ____________________________________________________________
* Logical on Name:
C FillSFL1 BegSR
* This uses the array filled earlier. "I" is the number of elements.
C SORTA AR4
C 3000 Sub I J 4 0
C J DOUGT 3000
C If AR4(J)>*Blanks
C MOVEL AR4(J) Record4
C MoveL Data RecordDataDS
C EXSR WriteLinesr
C END
C Eval J=J+1
C END
C EndSR
* _________________________________________________________________
* Logical on Key #
C FillSFL2 BegSR
C *LoVal Setll RGCKF1
C READ RGCKF1 58
* prepare an array so that a request for an alph listing will work:
C Move *Blanks AR4
C Z-Add 0 I 4 0
C* Fill the subfile:
C *IN58 DOWEQ *OFF
C Z-Add DB1RRN RecNbr
C EXSR WriteLinesr
* fill array:
C If GNNAME>*Blanks
C Eval I=I+1
C MoveL RecordDataDS Data
C Movel Record4 AR4(I)
C END
C READ RGCKF1 58
C END
C EndSR
* _________________________________________________________________
* Logical on Hook #:
C FillSFL3 BegSR
C *LoVal Setll RGCKF2
C READ RGCKF2 58
C* Fill the subfile:
C *IN58 DOWEQ *OFF
C Z-Add DB2RRN RecNbr
C EXSR WriteLinesr
C READ RGCKF2 58
C END
C EndSR
* _________________________________________________________________
* Logical on Building & door:
C FillSFL4 BegSR
C *Loval Setll RGCKF3
C READ RGCKF3 58
C* Fill the subfile:
C *IN58 DOWEQ *OFF
C Z-Add DB3RRN RecNbr
C EXSR WriteLinesr
C READ RGCKF3 58
C END
C EndSR
* _________________________________________________________________
DDS for the Scroll Bar & Mouse (Display file source code)
A*
A*%%EC
A DSPSIZ(27 132 *DS4)
A REF(*LIBL/GCKFL1 RGCKF)
A CHGINPDFT(HI UL)
A ERRSFL
A CF03(03 'Exit')
A CF12(12 'Exit')
A MOUBTN(*ULD ENTER)
A R SFLA SFL
A GNNAME R O 6 3
A 41 COLOR(PNK)
A GCKKEY# R O 6 34
A GCKHOOK# R O 6 45
A GCKBLDG R O 6 56
A GCKDOOR# R O 6 77
A RECNBR 5S 0O 6 89
A** PNNO 40A O 6 89
A PNNO 30A O 6 99
A N42 DSPATR(ND)
A GCKNOTE R H
A** RECNBR 5S 0H
A R FMT01 SFLCTL(SFLA)
A SFLPAG(0015)
A RTNCSRLOC(&CURREC &CURFLD)
A SFLSIZ(&NBRREC)
A OVERLAY
A SFLCSRRRN(&RRNA)
A 90 SFLDSP
A 90 SFLDSPCTL
A N90 SFLCLR
A 91 SFLEND(*SCRBAR *MORE)
A 1 3DATE
A EDTCDE(Y)
A 2 3TIME
A 1 79' Selection Criteria for this scr-
A een: '
A DSPATR(UL)
A COLOR(BLU)
A 1 34' Key Cabinets'
A COLOR(WHT)
A PB1 2Y 0B 2 80MLTCHCFLD
A CHOICE(1 'Show partial >note')
A CHCCTL(1 &CTL1)
A CHOICE(2 'Show ! as >pink')
A CHCCTL(2 &CTL2)
A CTL1 1Y 0H
A CTL2 1Y 0H
A PB2 2Y 0B 2105SNGCHCFLD
A CHOICE(1 'Maintain Note ')
A CHOICE(2 'Maintain Record')
A CHOICE(3 'Issue Key ')
A COL1 30A B 5 3DFTVAL('Name -
A ')
A DSPATR(UL)
A DSPATR(PR)
A N31 COLOR(BLU)
A 31 COLOR(GRN)
A COL2 10A B 5 34DFTVAL('Key # ')
A DSPATR(UL)
A DSPATR(PR)
A N32 COLOR(BLU)
A 32 COLOR(GRN)
A COL3 10A B 5 45DFTVAL('Hook # ')
A DSPATR(UL)
A DSPATR(PR)
A N33 COLOR(BLU)
A 33 COLOR(GRN)
A COL4 31A B 5 56DFTVAL('Door # ')
A DSPATR(UL)
A DSPATR(PR)
A N34 COLOR(BLU)
A 34 COLOR(GRN)
A 5 88'Comment... (First characters only)-
A '
A COLOR(BLU)
A DSPATR(UL)
A N42 DSPATR(ND)
A RRNA 5S 0H
A NBRREC 5S 0P
A CURREC 10A H
A CURFLD 10A H
A R FOOTR
A 24 3' -
A -
A -
A '
A DSPATR(UL)
A COLOR(BLU)
A F1 2Y 0B 26 10PSHBTNFLD
A DSPATR(PC)
A PSHBTNCHC(1 '>Enter' ENTER)
A PSHBTNCHC(2 '>Settings' ENTER)
A PSHBTNCHC(3 '>Add Key' ENTER)
A PSHBTNCHC(4 'E>xit' CF03)
A R FMT02
A WINDOW(*DFT 12 45 *NOMSGLIN)
A TEXT('Key Cabinet')
A BLINK
A OVERLAY
A WDWTITLE((*TEXT ' Maintain Key Reco-
A rd '))
A GCKKEY# R B 1 1
A GCKHOOK# R B 2 1CHECK(LC)
A GCKBLDG R B 3 1CHECK(LC)
A GCKDOOR# R B 3 21CHECK(LC)
A GCKNOTE R B 5 1CHECK(LC)
A CNTFLD(043)
A F2 2Y 0B 12 3PSHBTNFLD
A PSHBTNCHC(1 'Cancel' CF12)
A PSHBTNCHC(2 'Accept')
A 1 13'Key Number'
A 2 13'Hook Number'
A** 3 13'Door Number'
A R FMT03
A WINDOW(*DFT 8 45 *NOMSGLIN)
A TEXT('Maintain Notes ')
A BLINK
A OVERLAY
A* WDWTITLE((*TEXT ' Sample ') *BOTTOM)
A* WDWTITLE((*TEXT ' Top ') *TOP)
A WDWTITLE((*TEXT ' Maintain Notes '))
A GCKNOTE R B 1 1CNTFLD(043)
A CHECK(LC)
A F3 2Y 0B 8 3PSHBTNFLD
A PSHBTNCHC(1 'Cancel' CF12)
A PSHBTNCHC(2 'Accept')
thank you Booth Martin.
ติดตามผลงานอยู่..หากมีเวลาเขียนมาเรื่อยๆๆน่ะ..ครับ..จาก เมืองไทย(กรุงเทพ)
ReplyDelete