Вы находитесь на странице: 1из 33

* ------------------------------------------------------------------*

* *
* COPYRIGHT 2009 INNOVATIVE COMPUTING CORPORATION *
* THIS SOFTWARE IS PROPRIETARY INFORMATION OF INNOVATIVE *
* COMPUTING CORPORATION AND MAY ONLY BE USED CONSISTENT *
* WITH THE LICENSE GRANTED. *
* *
* ------------------------------------------------------------------*
* *
*---Date--Pgmr--Project-Number----------- Description --------------*
* *
**====================================================================
* NAME : TEMPLATE:- WORKS WITH PROJECT WITH POSITIONING
* AND FILTER.
* AUTHOR : (UserName)
* DATE : 09/07/2009
* PRJ-ACT-TSK : TEST PROJECT
* FUNCTION : TO ADD,UPDATE,COPY,DELETE AND DISPLAY RECORD WITH
* VALIDATIONS AND SORT/FILTER DYNAMICALLY
*================================================================
*
* PARAMETERS PASSED :
** -----------------
** PARM LENGTH/TYPE DESCRIPTION
** -----------------------------------------
** LEN 15S 5 IT CONTAINS THE LENGTH OF THE
** COMPANY NAME FOR 'FMTTXT'
** FMT 1S USED TO CENTER PROGRAM NAME
** STR1 256 IT CONTAINS COMPANY NAME OF CALL
** PROGRAM
** STR2 256 IT CONTAINS BLANK VALUE
** JUL_D 7 0 DATE IN JULIAN FORMAT PASSED TO
** 'DATCON'
** ISO_D 6A DATE IN MMDDYY FORMAT PASSED TO
** 'DATCON'.
** ACTION 2A INPUT FOR 'CITCON', CONTAINS BLANK
** VALUE.
** RESULT 1A OUTPUT OF 'CITCON' CONTAINS 0-FOR
** NO ERROR, 1-FOR INVALID CITY.
** WKCITY1 6A INPUT TO 'CITCON' CONTAINS CITY
** AND STATE CODE.
** MSCITY INPUT AND OUTPUT FOR 'CITCON'
** EXTERNALLY DEFINED DATASTRUCTURE
** CONTAINING CITY INFORMATION.
** HTPGM 10 INPUT PARAM FOR 'WHDRVM'
** HTFRMT 10 INPUT PARAM FOR 'WHDRVM'
** HTROW# 3 0 INPUT PARAM FOR 'WHDRVM'
** HTCOL# 3 0 INPUT PARAM FOR 'WHDRVM'
** @ID 7 dim(20) ARRAY STORES MESSAGE ID USED AS PARM
** FOR 'MSGSFLCL'
** @MSG ARRAY STORES MESSAGES USED AS PARM
** FOR 'MSGSFLCL'
** M 2S 0 FOR MESSAGE
** PGMNAM 10A INPUT FIELD FOR 'MSGSFLCL',IT CONTAINS
** PROGRAM NAME
**=====================================================================
** INDICTORS SUMMARY :
** -----------------
** 03 - EXIT
** 04 - DELETE
** 05 - UPDATE
** 06 - PRINT
** 09 - ADD
** 10 - RESTART
** 11 - ERASE
** 12 - PREVIOUS/ CANCEL
** 13 - POSITION PROJECT ID
** 14 - POSITION DEVELOPER ID
** 15 - POSITION START DATE
** 16 - POSITION END DATE
** 17 - POSITION STATUS
** 18 - POSITION TYPE
** 19 - POSITION IES/CUS
** 20 - POSITION CITY
** 21 - POSITION MANAGEMENT NOTES
** 22 - POSITION QA NOTES
** 40 - PROTECT PROJECT ID
** 41 - PROTECT OTHER FIELDS
** 59 - SUBFILE NEXT CHANGE
** 60 - SFLDSP
** 61 - SFLDSPCTL
** 62 - SFLCLR
** 63 - SFLEND
** 81 - PROTECT IES/CUS FIELD
** 91 - OPTION INDICATOR
** 99 - SFLEND INDICATOR
**=====================================================================
**
** MESSAGES USED: MESSAGE FILE IS ITSMSGF
** -------------
** MESSAGE-ID DESCRIPTION
* GEN0000 User Defined Message.
* DF00024 Record already exist
* IOP0001 Invalid Option.
* CU00010 Invalid City Code in Customer Master
* DTE0001 Invalid Date.
* DTE0003 Date is required.
* DTE0112 Begin/Start Date must be less than or equal to End Date
* IV00005 Invalid Entry
* EDI0015 Record has been added.
**
**=====================================================================
**
** CALLED PROGRAMS :
** ---------------
** DATCON CONVERTS A 6-DIGIT DATE IN MMDDYY FORMAT TO A 7-DIG
** IT JULIAN DATE AND VICE-VERSA
** FMTTXT USED TO CENTER THE COMPANY HEADING ON THE SCREEN
** CITCON VALIDATES AND RETURNS CITY INFORMATION.
** CITY INFORMATION PROVIDES CITY LOOK-UP.
** WHDRVM HELP TEXT SUBROUTINE
** MSGSFLCL SUBFILE ERROR MESSAGE SUBROUTINE.
**
**=====================================================================
*
H DFTACTGRP(*NO)
H DEBUG OPTION(*NODEBUGIO)
FTPW010D cf e workstn InDDs(DispInd)
F InFDs(CusLoc)
F Sfile(Sub001:RecNum)
FTPICCP Uf A e k DISK
FTPW001P O E PRINTER oflind(*in70)
F usropn
*----------------------------------------------------------------------
* STAND ALONE FILEDS
*----------------------------------------------------------------------
D GetVar s 10A Varying
D VarLen S 2 0
D chkspace5 S 2 0
D chkspl3 S 2 0
D Err99 S 1A inz('N')
D Pidblk S 1A inz('N')
D Didblk S 1A inz('N')
D Typblk S 1A inz('N')
D Stsblk S 1A inz('N')
D Iesblk S 1A inz('N')
D WSMGTN S 40A
D wkpos1 S 1 0
D wkpos2 S 1 0
D WkPos3 S 1 0
D wkies S 1A
D wkpart1 s 3a
D wkpart2 s 7a
D Pidlen s 2 0
D Valid1 s 2 0
D P11 s 2 0
D DidLen S 2 0
D WkDidOk S 1A
D WkDidPart1 S 4A
D WkDidPart21 S 1A
D WkDidPart22 S 1A
D ChkNumber21 S 1 0
D ChkNumber22 S 1 0
D ChkString21 S 1 0
D ChkString22 S 1 0
D ChkSpace2 S 1 0
D ChkSpace3 S 1 0
D wkchkd1 s 1 inz('n')
D UpdateFlg s 1 inz('Y')
D ChkOthOpt s 1 inz('Y')
D KeepIt s 1
D CNT S 4P 0
D FlgOff S 1 0 inz(1)
D flgrrn s 4 0
D wkdel s 1 inz('N')
D RCDNO1 S 4 0 Inz(1)
D curPos1 S 4 0 Inz(1)
D LastPID1 S 10A
D WholeID s 1 inz('N')
D SplErr s 1 inz('N')
D SplChk1 s 1
D Wcount s 2 0
D Special1 s 2 0
D @arr11 s 10 dim(999)
* For Sorting Subfile and Validating Input Fields
D RecNum S 4 0
D Count S 4 0
D Count1 S 4 0
D mySelect s 32787 varying
D myFrom s 32787 varying
D myWhere s 32787 varying
D myOrder1 s 32787 varying
D WhereAnd s 32787 varying
D LastPid s 32787 varying
D mySFW s 5000
D Q c const(X'7D')
D P c const(X'6C')
D AllBlanks s 1A inz('Y')
D OptBlank s 1A inz('Y')
D Fill s 1A inz('N')
D OtherFields S 1A inz('N')
* Parameter passed to Message subfile
D @id s 7 dim(20)
D @MSG s 50 dim(20)
D @id1 s 7 dim(20)
D @MSG1 s 50 dim(20)
* Parameters passed to DATCON.
D jul_d s 7 0 inz(0)
D iso_d s 6A
* Variables to Store Converted Julian dates
D WkSJul s 7 0 inz(0)
D WkEJul s 7 0 inz(0)
D WkChgJul s 7 0 inz(0)
D WkCrtJul s 7 0 inz(0)
* Variables to Store Converted ISO dates
D WkSIso s 6A
D WkEIso s 6A
D WkChgIso s 6A
D WkCrtiso s 6A
* Variables to get current Date and Time
D curd s 6A
D curtime s 6 0
D chd s 12A
D curjul s 7 0 inz(0)
*-----------------------------------------------------------------------
* Constants Fields
*-----------------------------------------------------------------------
D wkstring1 c const('ABCDEFGHIJKLMNOPQRSTUVWXYZ')
D wknumber1 c const('0123456789')
D WkSpecial c const('!@#$%¢&*()+|~-=\<>:;",.?/"')
D Heading1 c Const(' Project Details')
*-----------------------------------------------------------------------
* Data Structures Used
*-----------------------------------------------------------------------
D CusLoc DS
D rowcol 370 371B 0
*= For ENTER Handling
D Sflp 378 379b 0
*= For Program Name, WrkStn ID and User ID
D Sds sDS
D PGMNAM 10 Overlay(Sds)
D Wrkstn 10 Overlay(Sds:244)
D Usrid 10 Overlay(Sds:254)
*= Parameters passed to CITCON
D mscity EuDS
D action s 2a inz('01')
D result s 1a
*=
D Compan EUDS
*-----------------------------------------------------------------------
*Indicator Data Structure
*-----------------------------------------------------------------------
D DispInd DS
D Exit 3 3N
D DeleteRec 4 4N
D UpdateRec 5 5N
D PrintSub 6 6N
D AddRec 9 9N
D Refresh 10 10N
D Erase 11 11N
D Previous 12 12N
D DelOptRed 24 24N
D Help 25 25N
D Forchain 50 50N
D DspSfl 60 60N
D DspSflCtl 61 61N
D ClearSfl 62 62N
D EndSfl 63 63N
D ProtectPid 40 40N
D ProtectOther 45 45N
D SflNxtChg 59 59N
D OvrFloInd 70 70N
D ProtectIECUS 81 81N
D PosPID 13 13N
D PosDID 14 14N
D PosSDate 15 15N
D PosEDate 16 16N
D PosSts 17 17N
D PosType 18 18N
D PosIESC 19 19N
D PosCity 20 20N
D PosMgtN 21 21N
D PosQaN 22 22N
D PoswkPid 82 82N
D PoswkDid 83 83N
D PoswkTyp 84 84N
D PoswkSts 85 85N
D PoswkIes 86 86N
D OptInd 93 93N
D SflEndInd 99 99N
*-----------------------------------------------------------------------
* Host Variables Data Structure
*-----------------------------------------------------------------------
D HostStr uDS
D HvPjid 10A
D HvDvid 6A
D HvType 3A
D HvPsts 3A
D HvIesc 3A
D HvPnst 1A
D HvQnst 1A
D HvUnst 1A
*
D HvStrd 7S 0
D HvEndd 7S 0
D HvCity 6A
D HvChgu 10A
D HvChgd 7S 0
D HvChgt 6S 0
D HvCrtu 10A
D HvCrtd 7s 0
D HvCrtt 6S 0
D HvMgtn 40A
D HvQan 40A
D HvDevn 40A
*----------------------------------------------------------
C Exsr TimeSr
C Exsr CompNam
C Exsr ClearSub
C Exsr LoadSub
* Main Loop
C DoW Not(Exit)
c if RecNum>0
C Eval DspSfl=*on
C Eval Erase = *off
* // To load blank subfile
C Else
C Eval Erase = *on
C EndIf
C Write RecFot
C Eval PGMMOD='MAIN'
c move *zeros wkm1
c *like define M wkm1
c move *blanks @MSG1
c exsr @@MESG
C Eval KeepIt = 'N'
C* Exsr SortIndOff
C whlp01 tag
C Exfmt Ctl001
* Help key Processing---------------------------------------
c if Help = *on
c movel 'CTL001 ' HTFRMT
C exsr helpsr
c goto whlp01
c endif
c eval row# = 0
c eval col# = 0
*-----------------------------------------------------------
* // To handle ENTER and retain control on same page
c if RecNum>0
C eval pag =sflp
C EndIf
c *like define M wkerr
c eval wkerr = 0
c eval flgrrn = 0
C if Exit = *off
C Readc Sub001 69
C Else
C* Eval *inlr=*on
C goto lr
C Leave
C EndIf
C If PidBlk = 'N' and DidBlk = 'N'
C and TypBlk = 'N' and IesBlk = 'N'
C and StsBlk = 'N'
C* Exsr ClrBlk
C Eval Err99 = 'N'
C Else
C Dow *in69 = *off
C Readc Sub001 69
C Eval Wsopt = *blanks
C iter
C enddo
C EndIf
* // For Options on Main Screen 2,3,4,5 and 6
C Dow *in69 = *off and refresh = *off
* // To check invalid option
C If WsOpt <> '2' and WsOpt <> '3' and
C WsOpt <> '4' and WsOpt <> '5' and
C WsOpt <> '6' and WsOpt <> *blank
C Eval OptBlank = 'N'
C eval flgrrn = flgrrn + 1
C if flgrrn = 1
C eval rrn1 = recnum
C endif
C *like define recnum rrn1
C Eval SflNxtChg = *on
C Eval OptInd = *on
* // wkerr field to retain the control on error option screen
C eval wkerr = wkerr + 1
C eval M = M + 1
C eval @ID(M)= 'IOP0001'
C Update sub001
C Readc Sub001 69
C iter
C Else
c if wsOpt= *blanks
c eval SflNxtChg = *off
C Eval optblank ='Y'
C else
C Eval OptBlank = 'N'
c eval SflNxtChg = *on
c endif
C Eval OptInd = *off
C Update sub001
C Readc Sub001 69
C iter
C EndIf
C Enddo
c if wkerr <> 0
c eval pag = rrn1
C eval sflp = pag
c eval flgrrn = 0
c endif
* // If no error message then go for valid options
C If Wkerr = 0 and Err99='N' and refresh = *off
c eval Recnum = 1
c eval wkdel = 'N'
C Readc Sub001 69
C Dow *in69 = *off
c eval wkdel = 'Y'
* // To check valid option
C Select
C When Wsopt='2'
C Eval OptBlank = 'N'
C Exsr EditRec
C Eval OptBlank = 'Y'
C When Wsopt='3'
C Eval OptBlank = 'N'
C Exsr CopyRec
C Eval OptBlank = 'Y'
C When Wsopt='4'
C Eval OptBlank = 'N'
C Exsr DeleteSR
C Eval OptBlank = 'Y'
C When Wsopt='5'
C Eval OptBlank = 'N'
C Exsr DisplayRec
C Eval OptBlank = 'Y'
C When Wsopt='6'
C Eval OptBlank = 'N'
C Exsr PrintRec
C Eval OptBlank = 'Y'
C EndSl
C if Exit = *off
C Readc Sub001 69
C Else
C* Eval *inlr=*on
C goto lr
C Leave
C EndIf
C* Readc Sub001 69
C EndDo
c if wkdel = 'Y' and keepit = 'N'
c exsr ClearSub
c exsr LoadSub
c endif
C*********** Exsr MultiMsg
C Endif
* Function keys place
* // For function keys on Main Screen F6, F9 and F10
C Select
C When PrintSub and wkerr =0
C Exsr PrintSubSR
C When AddRec and wkerr =0 and err99 = 'N'
C Exsr AddSub
C When Refresh
C Exsr RefreshSub
c endsl
* // To check Sort Fileds
C If WKPJID = *blanks and WKDVID= *blanks and
C WKTYPE = *blanks and WKPSTS= *blanks and
C WKIESC = *blanks and WKPGM = *blank and
C WKQA = *blank and WKDEV = *blank and
C OptBlank = 'Y'
C Eval AllBlanks = 'Y'
C If pag =1 and PrintSub=*off
C Exsr ClearSub
C Exsr LoadSub
C Elseif pag > 1 and PrintSub = *off
C Eval retain = Pag
C *like Define pag retain
C Exsr ClearSub
C Exsr LoadSub
C Eval Pag = retain
C Endif
C Endif
* // To sort on Project Id
C If wkpjid <> *blanks and wkerr = 0
C Eval GetVar = %trimr(Wkpjid)
C Exsr ChkBlank
C If Err99 = 'N'
C If DidBlk = 'N' and TypBlk = 'N'
C and StsBlk = 'N' and IesBlk = 'N'
C Eval AllBlanks = 'N'
C Exsr sortid
C Exsr ClearSub
C Exsr LoadSub
C endif
C Eval PidBlk= 'N'
C eval PoswkPid = *off
C Else
C Eval PidBlk = 'Y'
c eval wkm1 = wkm1 + 1
c eval @ID1(Wkm1) = 'GEN0000'
c eval @MSG1(Wkm1) = 'Blank Space not allowed -
C in Project Id field'
C eval PoswkPid = *on
C endif
C Else
C Eval PidBlk= 'N'
C eval PoswkPid = *off
C Endif
* // To sort on Developer ID
C If wkdvid <> *blanks and wkerr = 0
C Eval GetVar = %trimr(Wkdvid)
C Exsr ChkBlank
C If Err99 = 'N'
C If PidBlk = 'N' and TypBlk = 'N'
C and StsBlk = 'N' and IesBlk = 'N'
C Eval AllBlanks = 'N'
C Exsr sortid
C Exsr ClearSub
C Exsr LoadSub
C Endif
C Eval DidBlk = 'N'
C eval PoswkDid = *off
C Else
C Eval DidBlk = 'Y'
c eval wkm1 = wkm1 + 1
c eval @ID1(Wkm1) = 'GEN0000'
c eval @MSG1(Wkm1) = 'Blank Space not allowed -
C in DevId field'
C eval PoswkDid = *on
C Endif
C Else
C Eval DidBlk= 'N'
C eval PoswkDid = *off
C Endif
* // To sort on Type
C If wktype <> *blanks and wkerr = 0
C Eval GetVar = %trimr(Wktype)
C Exsr ChkBlank
C If Err99 = 'N'
C If PidBlk = 'N' and DidBlk = 'N'
C and StsBlk = 'N' and IesBlk = 'N'
C Eval AllBlanks = 'N'
C Exsr sortid
C Exsr ClearSub
C Exsr LoadSub
C Endif
C Eval TypBlk = 'N'
C eval PoswkTyp = *off
C Else
C Eval TypBlk = 'Y'
c eval wkm1 = wkm1 + 1
c eval @ID1(Wkm1) = 'GEN0000'
c eval @MSG1(Wkm1) = 'Blank Space not allowed -
C in Type field'
C eval PoswkTyp = *on
C Endif
C Else
C Eval TypBlk= 'N'
C eval PoswkTyp = *off
C Endif
* // To sort on Status
C If wkpsts <> *blanks and wkerr = 0
C Eval GetVar = %trimr(Wkpsts)
C Exsr ChkBlank
C If Err99 = 'N'
C If PidBlk = 'N' and DidBlk = 'N'
C and TypBlk = 'N' and IesBlk = 'N'
C Eval AllBlanks = 'N'
C Exsr sortid
C Exsr ClearSub
C Exsr LoadSub
C Endif
C Eval StsBlk = 'N'
C eval PoswkSts = *off
C Else
C Eval StsBlk = 'Y'
c eval wkm1 = wkm1 + 1
c eval @ID1(Wkm1) = 'GEN0000'
c eval @MSG1(Wkm1) = 'Blank Space not allowed -
C in Status field'
C eval PoswkSts = *on
C Endif
C Else
C Eval StsBlk= 'N'
C eval PoswkSts = *off
C Endif
* // To sort on IES/CUS
C If wkiesc <> *blanks and wkerr = 0
C Eval GetVar = %trimr(Wkiesc)
C Exsr ChkBlank
C If Err99 = 'N'
C If PidBlk = 'N' and DidBlk = 'N'
C and TypBlk = 'N' and StsBlk = 'N'
C Eval AllBlanks = 'N'
C Exsr sortid
C Exsr ClearSub
C Exsr LoadSub
C Endif
C Eval IesBlk = 'N'
C eval PoswkIes = *off
C Else
C Eval IesBlk = 'Y'
c eval wkm1 = wkm1 + 1
c eval @ID1(Wkm1) = 'GEN0000'
c eval @MSG1(Wkm1) = 'Blank Space not allowed -
C in IES/CUS field'
C eval PoswkIes = *on
C Endif
C Else
C Eval IesBlk= 'N'
C eval PoswkIes = *off
C Endif
C Exsr MultiMsg
C* If PidBlk = 'N' and DidBlk = 'N'
C* and TypBlk = 'N' and IesBlk = 'N'
C* and StsBlk = 'N'
C* Exsr ClrBlk
C****** Exsr SortIndOff
C* Endif
* // To sort on PrjMgt Notes status
C If wkpgm <> *blanks and wkerr = 0
C If PidBlk = 'N' and DidBlk = 'N'
C and TypBlk = 'N' and IesBlk = 'N'
C and StsBlk = 'N'
C Eval AllBlanks = 'N'
C Exsr sortid
C Exsr ClearSub
C Exsr LoadSub
C Endif
C Endif
* // To sort on QA Notes status
C If wkqa <> *blanks and wkerr = 0
C If PidBlk = 'N' and DidBlk = 'N'
C and TypBlk = 'N' and IesBlk = 'N'
C and StsBlk = 'N'
C Eval AllBlanks = 'N'
C Exsr sortid
C Exsr ClearSub
C Exsr LoadSub
C Endif
C Endif
* // To sort on Dev Notes status
C If wkdev <> *blanks and wkerr = 0
C If PidBlk = 'N' and DidBlk = 'N'
C and TypBlk = 'N' and IesBlk = 'N'
C and StsBlk = 'N'
C Eval AllBlanks = 'N'
C Exsr sortid
C Exsr ClearSub
C Exsr LoadSub
C Endif
C Endif
C lr tag
C Eval *inlr=*on
C EndDo
*----------------------- Main Loop End------------------------------------
* ========================================================================
* S U B R O U T I N E S
* ========================================================================
*Clear Subfile
C ClearSub BegSr
C Clear HostStr
C Eval RecNum=0
C Eval PAG=1
C EVAL DspSfl=*off
C Eval DspSflCtl=*off
C Eval ClearSfl=*on
C Write Ctl001
C Eval ClearSfl=*off
C Eval DspSflCtl=*on
C EndSr
* Load Subfile
C LoadSub BegSr
C Exsr Prepare
C Exsr Declare
C Exsr Open
C Eval Count=0
C Z-ADD *ZERO N 3 0
C MOVEA *blanks @arr11
C DoW SqlCod=0
C Exsr Fetch
C Eval LastPID1= HvPjid
C Eval N = N +1
c Eval @arr11(N) = HvPjid
C If SqlCod<>0
C Eval EndSfl=*on
C Iter
C EndIf
C Exsr DS2Scr
C Eval RecNum=RecNum+1
C Eval Count =Count + 1
C Write Sub001
C EndDo
C Exsr Close
C EndSr
* Prepare Cursor
C Prepare Begsr
C EXSR SORT
C*==========> Exsr ClrSortFlds
C/Exec Sql
C+ Prepare Sel From :mySFW
C/End-Exec
c Eval myWhere = ''
c Eval whereAnd = 'Where '
c Eval Fill = 'N'
c Eval OtherFields = 'N'
C Endsr
* Declare Cursor
C Declare Begsr
C/Exec Sql
C+ Declare C1 Cursor For Sel
C/End-Exec
C EndSr
* Close Cursor
C Close Begsr
C/Exec Sql
C+ Close C1
C/End-Exec
C EndSr
* Open Cursor
C Open Begsr
C/Exec Sql
C+ Open C1
C/End-Exec
C EndSr
* Fetch Cursor
C Fetch BegSr
C/Exec Sql
C+ Fetch Next From C1 into :HostStr
C/End-Exec
C EndSr
* Refresh Subfile
C RefreshSub Begsr
C Eval WSOPT=''
C Eval M = 0
C MOVEA *BLANKS @ID
C MOVEA *BLANKS @MSG
C WRITE MSGCLR
C Eval OptInd = *off
C Eval SflNxtChg = *off
C Exsr ClrSortFlds
C Exsr ClearSub
C Exsr LoadSub
C EndSr
* // Add New Record to Subfile
C AddSub Begsr
C Exsr ClearAdd
C Eval ProtectPid=*off
C Eval ProtectOther=*on
C Eval PosPid=*off
C DoW Previous=*off
C Eval PGMMOD='ADD'
c exsr @@MESG
C whlp02 tag
C Exfmt RecAdd
* Help key Processing---------------------------------------
c if Help = *on
c movel 'RecAdd ' HTFRMT
C exsr helpsr
c goto whlp02
c endif
c eval row# = 0
c eval col# = 0
*-----------------------------------------------------------
C if Previous=*on OR Exit=*on
C Exsr AddIndOff
C Eval Previous=*off
C Eval WSOPT=''
C Leave
C Endif
C Exsr ValidateFlds
C If UpdateRec=*on and Flgoff = 0
c eval M = M + 1
c eval @ID(M) = 'GEN0000'
c eval @MSG(M)='New record '+%trim(WSPJID1)+' added'
c eval SflNxtChg = *off
*
C/Exec Sql
C+ Insert into TPICCP(TPPJID,TPDVID,TPPSTS
C+ ,TPSTRD,TPENDD,TPTYPE,TPIESC,TPCITY,TPMGTN,TPQAN,TPDEVN,APCRTD,APCRTT
C+ ,APCRTU,APCHGD,APCHGT,APCHGU)
C+ Values(:WSPJID1,:WSDVID1,:WSPSTS1
C+ ,:WkSJul,:WkEJul,:WSTYPE1,:WSIESC1,:WsCity1,:WsMgtn1,:WsQan1,:WsDevn1
C+ ,:CurJul,:CurTime,:UsrId,:CurJul,:CurTime,:UsrId)
C/End-Exec
C if Wsmgtn1<>''
C/Exec Sql
C+ Update TPICCP
C+ set TPPNST='Y'
C+ Where TPPJID=:WSPJID1
C/End-Exec
*
C Else
C/Exec Sql
C+ Update TPICCP
C+ set TPPNST='N'
C+ Where TPPJID=:WSPJID1
C/End-Exec
C Endif
C if WsQan1<>''
C/Exec Sql
C+ Update TPICCP
C+ set TPQNST='Y'
C+ Where TPPJID=:WSPJID1
C/End-Exec
*
C Else
C/Exec Sql
C+ Update TPICCP
C+ set TPQNST='N'
C+ Where TPPJID=:WSPJID1
C/End-Exec
C Endif
C if WsDevn1<>''
C/Exec Sql
C+ Update TPICCP
C+ set TPUNST='Y'
C+ Where TPPJID=:WSPJID1
C/End-Exec
*
C Else
C/Exec Sql
C+ Update TPICCP
C+ set TPUNST='N'
C+ Where TPPJID=:WSPJID1
C/End-Exec
C Endif
C Eval UpdateRec=*off
C Eval PGMMOD=''
C Exsr ClearSub
C Exsr LoadSub
C Leave
C Endif
C If Refresh = *On
C Eval Refresh = *Off
C Exsr ClearAdd
C Exsr AddIndOff
C Eval ProtectPid=*off
C Eval ProtectOther=*on
C Eval PosPid=*off
C Eval M=0
C EndIf
C EndDo
C EndSr
* // Edit Selected Subfile Record
C EditRec Begsr
C WSPJID Chain TPICCP
C Eval Wsopt=''
C Eval Keepit= 'Y'
C Eval PGMMOD='EDIT'
C Eval ProtectPid=*on
C Eval ProtectOther=*off
C Eval ProtectIECUS=*on
C Exsr Pf2Scr
C Eval WSSTRD1 = WSSTRDT1
C Eval WSENDD1 = WSENDDT1
C DoW Previous=*off
c exsr @@MESG
C whlp03 tag
C Exfmt RecEdt
* Help key Processing---------------------------------------
c if Help = *on
c movel 'RecEdt ' HTFRMT
C exsr helpsr
c goto whlp03
c endif
c eval row# = 0
c eval col# = 0
*-----------------------------------------------------------
C if Previous=*on OR Exit= *on
C Eval WSOPT=''
C Eval Previous=*off
C Eval UpdateFlg = 'N'
c eval SflNxtChg = *off
C Exsr AddIndOff
C Update Sub001
C Leave
C Endif
C Eval WSSTRD1 = WSSTRDT1
C Eval WSENDD1 = WSENDDT1
C Exsr ValidateFlds
C If UpdateRec=*on and flgoff=0
c eval wkm1 = wkm1 + 1
c eval @ID1(Wkm1) = 'GEN0000'
c eval @MSG1(Wkm1) = %trim(WSPJID1)+' Changed'
c eval SflNxtChg = *off
C Eval UpdateRec=*off
*
C/Exec Sql
C+ Update TPICCP
c+ Set TPPJID = :WSPJID1,
c+ TPDVID = :WSDVID1,
c+ TPPSTS = :WSPSTS1,
c+ TPSTRD = :WkSJul,
c+ TPENDD = :WkEJul,
c+ TPTYPE = :WSTYPE1,
c+ TPIESC = :WSIESC1,
c+ TPCITY = :WsCity1,
c+ TPMGTN = :WsMgtn1,
c+ TPQAN = :WsQan1,
c+ TPDEVN = :WsDevn1,
C+ APCHGD = :CurJul,
C+ APCHGT = :CurTime,
C+ APCHGU = :UsrId
C+ Where TPPJID = :WSPJID1
C/End-Exec
C if Wsmgtn1<>''
C/Exec Sql
C+ Update TPICCP
C+ set TPPNST='Y'
C+ Where TPPJID=:WSPJID1
C/End-Exec
*
C Else
C/Exec Sql
C+ Update TPICCP
C+ set TPPNST='N'
C+ Where TPPJID=:WSPJID1
C/End-Exec
C Endif
C if WsQan1<>''
C/Exec Sql
C+ Update TPICCP
C+ set TPQNST='Y'
C+ Where TPPJID=:WSPJID1
C/End-Exec
*
C Else
C/Exec Sql
C+ Update TPICCP
C+ set TPQNST='N'
C+ Where TPPJID=:WSPJID1
C/End-Exec
C Endif
C if WsDevn1<>''
C/Exec Sql
C+ Update TPICCP
C+ set TPUNST='Y'
C+ Where TPPJID=:WSPJID1
C/End-Exec
*
C Else
C/Exec Sql
C+ Update TPICCP
C+ set TPUNST='N'
C+ Where TPPJID=:WSPJID1
C/End-Exec
C Endif
C Eval UpdateRec=*off
C Eval PGMMOD=''
C Update Sub001
C Leave
C Endif
C If Refresh = *On
C Eval Refresh = *Off
C Exsr AddIndOff
C Exsr Pf2Scr
C EndIf
C EndDo
C EndSr
* // Copy Record to Subfile
C CopyRec Begsr
C WSPJID Chain TPICCP
C Eval Keepit= 'Y'
C Eval Wsopt=''
C Eval PGMMOD='COPY'
C Eval ProtectPid=*off
C Eval ProtectOther=*on
C Eval PosPid = *off
C Exsr Pf2Scr
C EVAL WSPJID1 = *Blanks
C Eval WSSTRD1 = WSSTRDT1
C Eval WSENDD1 = WSENDDT1
C Dow Previous=*off
c exsr @@MESG
C whlp04 tag
C Exfmt RECCPY
* Help key Processing---------------------------------------
c if Help = *on
c movel 'RecCpy ' HTFRMT
C exsr helpsr
c goto whlp04
c endif
c eval row# = 0
c eval col# = 0
*-----------------------------------------------------------
C if Previous=*on OR Exit=*on
C Eval WSOPT=''
C Eval Previous=*off
c eval SflNxtChg = *off
C Exsr AddIndOff
c eval SflNxtChg = *off
C Update Sub001
C Leave
C Endif
C* Eval WSSTRD1 = WSSTRDT1
C* Eval WSENDD1 = WSENDDT1
C* Eval WSSTRD1 = WSSTRD1
C* Eval WSENDD1 = WSENDD1
C Exsr ValidateFlds
C If UpdateRec=*on and flgoff=0
c eval wkm1 = wkm1 + 1
c eval @ID1(Wkm1) = 'GEN0000'
c eval @MSG1(Wkm1) = %trim(WSPJID1)+' Copied'
C Eval UpdateRec=*off
c eval SflNxtChg = *off
*
C/Exec Sql
C+ Insert into TPICCP(TPPJID,TPDVID,TPPSTS
C+ ,TPSTRD,TPENDD,TPTYPE,TPIESC,TPCITY,TPMGTN,TPQAN,TPDEVN,APCHGD,APCHGT
C+ ,APCHGU)
C+ Values(:WSPJID1,:WSDVID1,:WSPSTS1
C+ ,:WkSJul,:WkEJul,:WSTYPE1,:WSIESC1,:WsCity1,:WsMgtn1,:WsQan1,:WsDevn1
C+ ,:CurJul,:CurTime,:UsrId)
C/End-Exec
C if Wsmgtn1<>''
C/Exec Sql
C+ Update TPICCP
C+ set TPPNST='Y'
C+ Where TPPJID=:WSPJID1
C/End-Exec
*
C Else
C/Exec Sql
C+ Update TPICCP
C+ set TPPNST='N'
C+ Where TPPJID=:WSPJID1
C/End-Exec
C Endif
C if WsQan1<>''
C/Exec Sql
C+ Update TPICCP
C+ set TPQNST='Y'
C+ Where TPPJID=:WSPJID1
C/End-Exec
*
C Else
C/Exec Sql
C+ Update TPICCP
C+ set TPQNST='N'
C+ Where TPPJID=:WSPJID1
C/End-Exec
C Endif
C if WsDevn1<>''
C/Exec Sql
C+ Update TPICCP
C+ set TPUNST='Y'
C+ Where TPPJID=:WSPJID1
C/End-Exec
*
C Else
C/Exec Sql
C+ Update TPICCP
C+ set TPUNST='N'
C+ Where TPPJID=:WSPJID1
C/End-Exec
C Endif
C Eval UpdateRec=*off
C Eval PGMMOD=''
C Eval WSOPT=''
C Update sub001
C Leave
C Endif
C If Refresh = *On
C Eval Refresh = *Off
C Exsr AddIndOff
C Exsr Pf2Scr
C Eval ProtectPid=*off
C Eval ProtectOther=*on
C Eval PosPid = *off
C Eval M=0
C EVAL WSPJID1 = *Blanks
C EndIf
C EndDo
C EndSr
* // Delete Selected Record
C DeleteSR Begsr
C Eval KeepIt = 'Y'
C WSPJID Chain TPICCP
C Eval Wsopt=''
C Eval PGMMOD='DELETE'
C Exsr Pf2Scr
C DoW Previous=*off
c exsr @@MESG
C whlp05 tag
C Exfmt RecDel
* Help key Processing---------------------------------------
c if Help = *on
c movel 'CTL001 ' HTFRMT
C exsr helpsr
c goto whlp05
c endif
c eval row# = 0
c eval col# = 0
*-----------------------------------------------------------
C If Previous=*on OR Exit=*on
C Eval PGMMOD=''
C Eval Previous=*off
c eval SflNxtChg = *off
C Eval DelOptRed = *off
C Leave
C EndIf
C If DeleteRec=*on
C Eval DeleteRec=*off
C Eval Conf=''
C DoW Previous=*off
C Exfmt WDW001
C if Conf='N' or Conf='Y'
C Eval Msgw1=' '
C Eval DelOptRed = *off
C Else
C Eval DelOptRed = *on
C Eval Msgw1='Valid Values Are (Y)es Or (N)o'
C EndIf
C
C If DeleteRec=*on
C Eval DeleteRec=*off
C Select
C When Conf='Y' or Conf='y'
C Eval Msgw1=''
*
C/Exec Sql
C+ Delete From TPICCP
C+ Where TPPJID=:WSPJID
C/End-Exec
*
c eval SflNxtChg = *off
c eval wkm1 = wkm1 + 1
c eval @ID1(Wkm1) = 'GEN0000'
c eval @MSG1(Wkm1) = %trim(WSPJID1)+' Deleted'
C Eval DelOptRed = *off
C Update sub001
C Leave
C When Conf='N' or Conf='n'
C Eval Conf=''
C Eval Msgw1=''
C Eval DelOptRed = *off
C Leave
C Other
C Eval DelOptRed = *on
C Eval Msgw1='Valid Values Are (Y)es Or (N)o'
C Iter
C EndSl
C ELSEIF Previous=*on
C Eval Previous=*off
C Eval Msgw1=''
C Eval DelOptRed = *off
C Leave
C EndIf
C* Eval Msgw1=''
C EndDo
C If Conf='Y'
C Leave
C EndIf
C EndIf
C EndDo
C EndSr
* // Display Details of Selected Record
C DisplayRec Begsr
C Eval KeepIt = 'Y'
C WSPJID Chain TPICCP
C Eval PGMMOD='DSPLY'
C Exsr Pf2Scr
C Dow Previous=*off
C whlp06 tag
C Exfmt RECDSP
* Help key Processing---------------------------------------
c if Help = *on
c movel 'CTL001 ' HTFRMT
C exsr helpsr
c goto whlp06
c endif
c eval row# = 0
c eval col# = 0
*-----------------------------------------------------------
C if Previous=*on OR Exit=*on
C Eval Previous=*off
C Eval PGMMOD=''
C Eval WSOPT=' '
c eval SflNxtChg = *off
C Leave
C Endif
C EndDo
C EndSr
* // Move data from DataBase file to Screen
C Pf2Scr BegSr
C Eval WSPJID1=TPPJID
C Eval WSDVID1=TPDVID
C Exsr Jul2iso
C MOVE WkSiso WSSTRDT1
C MOVE WkEiso WSENDDT1
C MOVE WkChgiso WSLASTD
C Eval WSLASTT=APCHGT
C Eval WSLASTU=APCHGU
C Eval WSPSTS1=TPPSTS
C Eval WSTYPE1=TPTYPE
C Eval WSIESC1=TPIESC
C Eval WSCITY1=TPCITY
C If PGMMOD = 'COPY' or PGMMOD = 'EDIT'
C Exsr CitConSr
C EndIf
C Eval WSMGTN1=TPMGTN
C Eval WSQAN1=TPQAN
C Eval WSDEVN1=TPDEVN
C EndSr
* // Move data from Screen to Database File
C Scr2Pf BegSr
C Eval TPPJID=WSPJID1
C Eval TPDVID=WSDVID1
C Eval TPPSTS=WSPSTS1
C Eval TPTYPE=WSTYPE1
C Eval TPIESC=WSIESC1
C Eval TPMGTN=WSMGTN1
C Eval TPQAN=WSQAN1
C Eval TPDEVN=WSDEVN1
C EndSr
* // Move data from HostVariable Data structure to Screen
C Ds2Scr Begsr
C Eval WSPJID=HvPjid
C Eval WSDVID=HvDvid
C Eval WSTYPE=HvType
C Eval WSPSTS=HvPsts
C Eval WSIESC=HvIesc
C Eval WSPNST=HvPnst
C Eval WSQNST=HvQnst
C Eval WSUNST=HvUnst
*
C Eval WSSTRD=HvStrd
C Eval WSENDD=HvEndd
C Eval WSCITY=HvCity
* Current User details
C Eval APCHGU=HvChgu
C Eval APCHGD=HvChgd
C Eval APCHGT=HvChgt
* Last User details
C Eval APCRTU=HvCrtu
C Eval APCRTD=HvCrtd
C Eval APCRTT=HvCrtt
*
C Eval WSMGTN=HvMgtn
C Eval WSQAN=HvQan
C Eval WSDEVN=HvDevn
C EndSr
* // To clear the fields on Add Screen
C ClearAdd BegSr
C eval WSPJID1=*blanks
C eval WSDVID1=*blanks
C eval WSStrd1=*Zeros
C eval WSEndd1=*Zeros
C eval WSPSTS1=*Blanks
C eval WSTYPE1=*blanks
C eval WSIESC1=*blanks
C eval WSCITY1=*blanks
c eval WSCITYLK = *blanks
C eval WSMGTN1=*blanks
C eval WSQAN1=*blanks
C eval WSDEVN1=*blanks
C EndSr
* // Input field validation
C ValidateFlds Begsr
C If WSPJID1=*blanks
C Eval PosPid=*on
C Eval FlgOff=1
c eval M = M + 1
c eval @ID(M) = 'GEN0000'
c eval @MSG(M) = 'Project ID cannot be blank'
C Elseif ProtectPid = *off
C Exsr chkpidsr
C If PosPid=*off
C Exsr Addindon
C Eval ProtectPid=*on
C Eval ProtectOther=*off
C EndIf
C EndIf
C If ProtectOther = *off
C Exsr ChkDidSr
C If WSStrd1 <> *Zeros
C Move *zeros Jul_d
C Move WsStrd1 Iso_d
C Exsr datesr
C If Jul_d <> 0
C Move Jul_d WkSJul
C Eval Wkchkd1 = 'y'
C Eval PosSdate = *off
C Else
C Eval Wkchkd1 = 'n'
C Eval PosSdate = *on
C Eval FlgOff =1
c eval M = M + 1
c eval @ID(M) = 'DTE0001'
C EndIf
C Else
C Eval Wkchkd1 = 'n'
C Eval PosSdate = *on
C Eval FlgOff =1
c eval M = M + 1
c eval @ID(M) = 'DTE0003'
C EndIf
C If WSEndd1 <> *Zeros and wkchkd1 = 'y'
C Move *zeros Jul_d
C Move WsEndd1 Iso_d
C Exsr datesr
C If Jul_d <> 0
C Move Jul_d WkEJul
C If WkEjul >= WkSjul
C Eval PosEdate = *off
C Else
C Eval PosEdate = *on
C Eval Flgoff=1
c eval M = M + 1
c eval @ID(M)= 'DTE0112'
C EndIf
C Else
C Eval PosEdate = *on
C Eval Flgoff=1
c eval M = M + 1
c eval @ID(M) = 'DTE0001'
C EndIf
C Else
C Eval PosEdate = *on
C Eval Flgoff=1
c eval M = M + 1
c eval @ID(M)= 'DTE0003'
C EndIf
C If WSPSts1 = *Blanks
C Eval PosSts = *on
C Eval FlgOff = 1
c eval M = M + 1
c eval @ID(M) = 'GEN0000'
c eval @MSG(M) = 'Project Status cannot be blank'
C Else
C if wspsts1 = 'COD' or wspsts1 = 'QAT' or
C wspsts1 = 'QAR' or wspsts1 = 'PRW' or
C wspsts1 = 'QAA'
C Eval PosSts = *off
C Else
C Eval PosSts = *on
C Eval FlgOff = 1
c eval M = M + 1
c eval @ID(M) = 'GEN0000'
c eval @MSG(M) = 'Invalid value. Must be COD,QAT,-
C QAR,PRW or QAA'
C EndIf
C EndIf
C If WSType1 <> *Blanks
c eval ChkSpace3= %scan(' ':wstype1:1)
C If chkspace3 = 0
C For wcount= 1 to 3 by 1
C Eval SplChk1 = %subst(WStype1:wcount:1)
C Eval Special1= %scan(Splchk1:WkSpecial)
C If Special1 <> 0
c eval M = M + 1
c eval @ID(M) = 'GEN0000'
c eval @MSG(M) = 'Special Charecter not Allowed'
C Eval PosType=*on
C Eval SplErr = 'N'
C Leave
C Else
C Eval PosType = *off
C EndIf
C EndFor
********
C EndIf
C Elseif WSType1 = *Blanks
C Eval PosType = *on
C Eval FlgOff = 1
c eval M = M + 1
c eval @ID(M) = 'GEN0000'
c eval @MSG(M) = 'Project Type cannot be blank'
C EndIf
C If PGMMOD ='ADD' OR PGMMOD ='COPY'
C If WSIESC1 <> *Blanks
C If Wkies = 'Y' and WSIESC1 = 'IES'
C Eval PosIESC = *off
C Elseif Wkies = 'Y'
C Eval PosIESC = *on
C Eval FlgOff = 1
c eval M = M + 1
c eval @ID(M) = 'GEN0000'
c eval @MSG(M) = 'Field Value must be IES'
C EndIf
C if Wkies = 'N' and WSIESC1 = 'CUS'
C Eval PosIESC = *off
C Elseif Wkies = 'N'
C Eval PosIESC = *on
C Eval FlgOff=1
c eval M = M + 1
c eval @ID(M) = 'GEN0000'
c eval @MSG(M) = 'Field Value must be CUS'
C EndIf
C Else
C Eval PosIESC = *on
C Eval FlgOff = 1
c eval M = M + 1
c eval @ID(M) = 'GEN0000'
c eval @MSG(M) = 'IES/CUS Field cannot be blank'
C EndIf
C EndIf
C If WSCITY1 <> *Blanks
C Eval PosCity = *off
C Exsr CitConSr
C Else
c eval WSCITYLK = *blanks
C Eval Poscity = *on
C Eval FlgOff = 1
c eval M = M + 1
c eval @ID(M) = 'GEN0000'
c eval @MSG(M) = 'City Field cannot be blank'
C EndIf
C If WSMgtN1 <> *Blanks or WSQaN1 <> *Blanks
C Eval PosMgtN = *off
C Eval PosQan = *off
C If PosDid <> *on and PosSDate <> *on and
C PosEDate<>*on and PosSts <> *on and
C PosType<>*on and PosIESC <> *on and
C PosCity <> *on
C Eval FlgOff= 0
C Else
C Eval FlgOff =1
C EndIf
C Else
C Eval PosMgtN = *on
C Eval PosQan = *on
C Eval FlgOff = 1
c eval M = M + 1
c eval @ID(M) = 'GEN0000'
c eval @MSG(M) = 'Notes Field cannot be blank,-
C either one required'
C EndIf
C EndIf
C EndSr
* // Check and validate ProjectId
c chkpidsr begsr
C Eval PosPid=*off
C Eval Valid1=0
C Eval PidLen=%Scan(' ':WSPJID1:1)
C If PidLen>=7 or PidLen=0
C If pidlen>0
C Eval SplErr = 'N'
C For wcount= 1 to pidlen by 1
C Eval SplChk1 = %subst(WSPJID1:wcount:1)
C Eval Special1= %scan(Splchk1:WkSpecial)
C If Special1 <> 0
c eval M = M + 1
c eval @ID(M) = 'GEN0000'
c eval @MSG(M) = 'Special Charecter not Allowed'
C Eval SplErr='Y'
C Eval PosPid=*on
C Eval FlgOff=1
C Leave
C EndIf
C EndFor
C If SplErr= 'N'
C Eval valid1=%check(' ':WSPJID1:Pidlen)
C EndIf
C Elseif pidlen=0
C Eval SplErr = 'N'
C Eval Valid1=0
C For wcount= 1 to 10 by 1
C Eval SplChk1 = %subst(WSPJID1:wcount:1)
C Eval Special1= %scan(Splchk1:WkSpecial)
C If Special1 <> 0
c eval M = M + 1
c eval @ID(M) = 'GEN0000'
c eval @MSG(M) = 'Special Charecter not Allowed'
C Eval SplErr='Y'
C Eval PosPid=*on
C Eval FlgOff=1
C Leave
C EndIf
C EndFor
C EndIf
C If Valid1=0
C/EXEC SQL
C+ SELECT COUNT(*) INTO :CNT FROM TPICCP WHERE TPPJID=:WSPJID1
C/End-Exec
C If cnt =0
C Eval Wkies=*blanks
c eval wkpart1 = %subst(wspjid1:1:3)
c eval wkpos1=%check(wkstring1:wkpart1:1)
c select
c when wkpos1 = 3
c eval wkies = 'Y'
c when wkpos1 =0
c eval wkies = 'N'
C Other
C Eval PosPid=*on
C Eval FlgOff=1
c eval M = M + 1
c eval @ID(M) = 'IV00005'
C EndSl
C Else
c eval M = M + 1
c eval @ID(M) = 'DF00024'
C Eval PosPid=*on
C Eval FlgOff=1
c EndIf
C Else
C Eval PosPid=*on
C Eval FlgOff=1
c eval M = M + 1
c eval @ID(M) = 'IV00005'
c EndIf
C Else
C Eval PosPid=*on
C Eval FlgOff=1
c eval M = M + 1
c eval @ID(M) = 'IV00005'
c EndIf
C EndSr
* // Check and validate Developer ID
C ChkDidSr Begsr
C if WSDVID1=*blanks
C Eval PosDid=*on
C Eval FlgOff=1
c eval M = M + 1
c eval @ID(M) = 'GEN0000'
c eval @MSG(M) = 'Developer ID cannot be blank'
C Else
C Eval PosDid = *off
C Eval DidLen = %Scan(' ':WSDVID1:1)
C Eval WkDidPart1 = %subst(WSDVID1:1:4)
c Eval WkDidPart21 = %subst(WSDVID1:5:1)
c Eval WkDidPart22 = %subst(WSDVID1:6:1)
C Eval ChkNumber21 = %check(Wknumber1:Wkdidpart21:1)
C Eval ChkNumber22 = %check(Wknumber1:Wkdidpart22:1)
C Eval ChkString21 = %check(WkString1:Wkdidpart21:1)
C Eval ChkString22 = %check(WkString1:Wkdidpart21:1)
C If DidLen>=5 or DidLen=0
C Eval WkPos2 = %Check(Wkstring1:WkDidPart1:1)
C If WkPos2 = 0
C Select
C When WkDidPart21 = ' ' and WkDidPart22 = ' '
C Eval PosDid = *off
C When ChkNumber21 = 0 or ChkNumber22 = 0
C Eval PosDid = *on
c eval M = M + 1
c eval @ID(M)='IV00005'
C Eval FlgOff=1
C When WkdidPart21 = ' ' and WkDidPart22 <> ' '
C Eval PosDid = *on
C Eval FlgOff=1
c eval M = M + 1
c eval @ID(M) = 'IV00005'
C When WkdidPart21 = ' ' and WkDidPart22 ='1'
C Eval PosDid = *on
C Eval FlgOff=1
c eval M = M + 1
c eval @ID(M) = 'IV00005'
C When ChkString21 = 0 and WkDidPart22 = ' '
C Eval PosDid = *off
C When ChkString21 = 0 and ChkString22 = 0
C Eval PosDid = *off
C Other
C Eval PosDid = *on
C Eval FlgOff=1
c eval M = M + 1
c eval @ID(M) = 'IV00005'
C EndSl
C Else
C Eval PosDid = *on
C Eval FlgOff=1
c eval M = M + 1
c eval @ID(M) = 'IV00005'
C EndIf
C Else
C Eval PosDid = *on
C Eval FlgOff=1
c eval M = M + 1
c eval @ID(M) = 'IV00005'
C EndIf
C EndIf
C EndSr
C AddIndOn Begsr
C Eval PosDID = *on
C Eval PosSDate = *on
C Eval PosEDate = *on
C Eval PosSts = *on
C Eval PosType = *on
C Eval PosIESC = *on
C Eval PosCity = *on
C Eval PosMgtN = *on
C Eval PosQaN = *on
C EndSr
C AddIndOff Begsr
C Eval PosDID = *off
C Eval PosSDate = *off
C Eval PosEDate = *off
C Eval PosSts = *off
C Eval PosType = *off
C Eval PosIESC = *off
C Eval PosCity = *off
C Eval PosMgtN = *off
C Eval PosQaN = *off
C EndSr
c datesr begsr
c call 'DATCON'
c parm jul_d
c parm iso_d
c endsr
C Jul2iso begsr
C Exsr ClearDats
C MOVE TPSTRD WkSJul
C MOVE TPENDD WkEJul
C MOVE APCHGD WkChgJul
C MOVE APCRTD WkCrtJul
C MOVE WkSJul jul_d
C Exsr DateSr
C MOVE iso_d WkSiso
C MOVE WkEJul jul_d
C Exsr DateSr
C MOVE iso_d WkEiso
C MOVE WkChgJul jul_d
C Exsr DateSr
C MOVE iso_d WkChgiso
C MOVE WkCrtJul jul_d
C Exsr DateSr
C MOVE iso_d WkCrtiso
C EndSr
*
C ClearDats Begsr
C Eval jul_d = *zeros
C Eval iso_d = *blanks
C EndSr
C CitConSr begsr
c eval WKCITY1 = %triml(WSCITY1)
C eval WKCT1 = wkcity1
c *like define WSCITY1 WKCITY1
c *like define WSCITY1 WKCT1
C call 'CITCON'
c parm ACTION
c parm WKCITY1
c parm MSCITY
c parm RESULT
c if RESULT = '1'
c eval WSCITYLK = *blanks
c eval PosCity= *on
c eval M = M + 1
c eval @ID(M) = 'CU00010'
c if WKCT1 = '?'
C eval WSCITY1 = *blanks
c endif
c else
c eval WSCITYLK = CCLAME
c eval WSCITY1 = wkcity1
c eval PosCity = *Off
c endif
c endsr
C ClrSortFlds BEGSR
C Eval wkpjid = *blanks
C Eval wkdvid = *blanks
C Eval wktype = *blanks
C Eval wkpsts = *blanks
C Eval wkiesc = *blanks
C Eval wkpgm = *blanks
C Eval wkqa = *blanks
C Eval wkdev = *blanks
C ENDSR
C SORT BEGSR
C Eval mySelect = 'Select * '
C Eval myFrom = 'from TPICCP '
C Eval myOrder1= 'order by TPPJID'
C Eval mySFW = myselect + myfrom +mywhere+myOrder1
C ENDSR
C Sortid begsr
C WkPJID Chain TPICCP 96
C If *in96 = *on
C Eval WholeId = 'N'
C Else
C Eval WholeId = 'Y'
C EndIf
C If WKDVID <> ' ' OR
C WKTYPE <> ' ' OR WKPSTS <> ' ' OR
C WKIESC <> ' ' OR WKPGM <> ' ' OR
C WKQA <> ' ' OR WKDEV <> ' '
C Eval OtherFields = 'Y'
C Else
C Eval OtherFields = 'N'
C EndIF
C If WkPJID <> *blanks
C Eval Fill = 'Y'
C If WholeId = 'N'
C If OtherFields = 'Y'
c Eval whereAnd = 'Where TPPJID like'
C Eval Mywhere=Mywhere+WhereAnd+Q+%trim(WkPJID)+p+Q
C else
c Eval whereAnd = 'Where TPPJID between '
C Eval Mywhere=Mywhere+WhereAnd+Q+%trim(WkPJID)+p+Q
C Eval LastPid = '(Select MAX(TPPJID) from TPICCP)'
C Eval Mywhere=Mywhere+ 'and ' + (LastPid)
C EndIf
C else
C If OtherFields = 'Y'
c Eval whereAnd = 'Where TPPJID like'
C Eval Mywhere=Mywhere+WhereAnd+Q+%trim(WkPJID)+p+Q
C else
c Eval whereAnd = 'Where TPPJID>='+Q+%trim(WkPJID)+Q
C Eval Mywhere=Mywhere+WhereAnd
C Eval LastPid = '(Select MAX(TPPJID) from TPICCP)'
C Eval Mywhere=Mywhere+ 'and TPPJID<='+(LastPid)
C EndIf
C EndIf
C EndIf
C if wkdvid <> *blanks
C Eval OtherFields = 'Y'
C If Fill = 'Y'
C Eval WhereAnd = 'And TPDVID like'
C else
C Eval Fill = 'Y'
c eval WhereAnd = 'where TPDVID like'
C endif
C Eval mywhere=mywhere+whereand+Q+%trim(wkdvid)+p+Q
C Endif
C if wktype <> *blanks
C Eval OtherFields = 'Y'
C Eval OtherFields = 'Y'
C If Fill = 'Y'
C Eval WhereAnd = 'And TPTYPE like'
C else
C Eval Fill = 'Y'
c eval WhereAnd = 'where TPTYPE like'
C endif
C Eval mywhere=mywhere+whereand+Q+%trim(wktype)+p+Q
C Endif
C if wkpsts <> *blanks
C Eval OtherFields = 'Y'
C Eval OtherFields = 'Y'
C If Fill = 'Y'
C Eval WhereAnd = 'And TPPSTS like'
C else
C Eval Fill = 'Y'
c eval WhereAnd = 'where TPPSTS like'
C endif
C Eval mywhere=mywhere+whereand+Q+%trim(wkpsts)+p+Q
C Endif
C if wkiesc <> *blanks
C Eval OtherFields = 'Y'
C If Fill = 'Y'
C Eval WhereAnd = 'And TPIESC like'
C else
C Eval Fill = 'Y'
c eval WhereAnd = 'where TPIESC like'
C endif
C Eval mywhere=mywhere+whereand+Q+%trim(wkiesc)+p+Q
C Endif
C if wkpgm <> *blanks
C Eval OtherFields = 'Y'
C If Fill = 'Y'
C Eval WhereAnd = 'And TPPNST ='
C else
C Eval Fill = 'Y'
c eval WhereAnd = 'where TPPNST ='
C endif
C Eval mywhere=mywhere+whereand+Q+%trim(wkpgm)+Q
C Endif
C if wkqa <> *blanks
C Eval OtherFields = 'Y'
C If Fill = 'Y'
C Eval WhereAnd = 'And TPQNST ='
C else
C Eval Fill = 'Y'
c eval WhereAnd = 'where TPQNST ='
C endif
C Eval mywhere=mywhere+whereand+Q+%trim(wkqa)+Q
C Endif
C if wkdev <> *blanks
C Eval OtherFields = 'Y'
C If Fill = 'Y'
C Eval WhereAnd = 'And TPUNST ='
C else
C Eval Fill = 'Y'
c eval WhereAnd = 'where TPUNST ='
C endif
C Eval mywhere=mywhere+whereand+Q+%trim(wkdev)+Q
C Endif
C endsr
C @@MESG BEGSR
C MOVEL '*' PGMQ
C M IFGT *ZERO
C Eval SflEndInd = *on
C CALL 'MSGSFLCL'
C PARM @ID
C PARM @MSG
C PARM M
C PARM PGMNAM
C WRITE MSGCTL
C ELSE
C WRITE MSGCLR
C ENDIF
C Z-ADD *ZERO M 2 0
C MOVEA *BLANKS @ID
C MOVEA *BLANKS @MSG
C endsr
C MultiMsg Begsr
c if wkm1 > 0
c eval M = 1
c dow M <= wkm1
c eval @ID(M) = @ID1(wkm1)
c eval @MSG(M) = @MSG1(M)
c eval M = M + 1
c enddo
c eval M = wkm1
c endif
C EndSr
C TimeSr Begsr
C time curtime 6 0
C time tdate 12 0
c move tdate chd
c eval curd=%subst(chd:7:6)
c exsr ClearDats
c eval iso_d=curd
c exsr datesr
c eval curjul=jul_d
C EndSr
* Print subfile records
C PrintSubSr BegSr
C OPEN TPW001P
C eval scrhed=' Project Details'
C Eval OvrFloInd = '1'
C Eval Pgno = 1
C If Count = 0
C write Header1
C Write Header2
C else
C write Header1
C Write Header2
C If pag=1 and count<=10
C Eval N1=1
C *like Define N N1
C dow N1<=N-1
C @arr11(N1) Chain RTPICCP
C write dtail1
C Eval N1 = N1 + 1
C enddo
C EndIf
C If Pag=1 and count > 10
C eval count1=1
C read rtpiccp
C dow count1 <=10
C write dtail1
C eval Count1=count1+1
C read rtpiccp
C enddo
C EndIf
C If Pag > 1
C Eval wkpag1=pag-1
C*** Eval Count=1
C Eval Count1=1
C *like define pag wkpag1
c *loval setll rtpiccp
c dow count1 <= wkpag1
c read rtpiccp
c eval count1 = count1 + 1
c enddo
c eval count1 = 1
c read rtpiccp
c dow %eof = *off and count1<=10
c write dtail1
c eval count1 = count1 + 1
c read rtpiccp
c enddo
c endif
c endif
c write foot01
c CLOSE TPW001P
c* eval M = M + 1
c eval M = 1
c eval @ID = 'GEN0000'
c eval @MSG = 'Record(s) has been printed'
c endsr
C PrintRec Begsr
C Eval Keepit = 'Y'
C OPEN TPW001P
C Eval OvrFloInd = '1'
C WSPJID Chain TPICCP
C Eval Wsopt=''
C eval pgno = 1
C Exsr Jul2Iso
C MOVE WkSiso STRDTP
C MOVE WkEiso ENDDTP
C MOVE WkCrtiso CRTDT
C MOVE WkChgiso CHGT
C eval scrhed1='Detail of ProjectID-'+%trim(WSPJID)
C eval scrhed = scrhed1
C *like define scrhed scrhed1
C* eval scrhed='Detail of ProjectID-'+%trim(WSPJID)
c write header1
c write dtail2
c write foot01
c eval wkm1 = wkm1 + 1
c eval @ID1(Wkm1) = 'GEN0000'
c** eval @MSG1(Wkm1) = %trim(WSPJID)+' Printed'
c eval @MSG1(Wkm1) = 'Record has been Printed'
c CLOSE TPW001P
C eval scrhed = Heading1
C Eval WSopt = ' '
C update sub001
C EndSr
C CompNam Begsr
c eval str1 = CMNAME
c call 'FMTTXT'
c parm str1 256
c parm *blanks str2 256
c parm 30 len 15 5
c parm 'C' fmt 1
C eval CMNAME = str1
C eval scrhed = heading1
c endsr
c helpsr begsr
* Calculate Cursor Location from one binary field
c rowcol div 256 row# 3 0
c mvr col# 3 0
c movel 'SFLPGMPT8' HTPGM
c move row# HTROW#
c move col# HTCOL#
* Call Window Help Subroutine
* Pass Program Name, Format Name and Row#/Col#
c CALL 'WHDRVM'
c PARM HTPGM 10
c PARM HTFRMT 10
c PARM HTROW# 3 0
c PARM HTCOL# 3 0
c endsr
C ChkBlank begsr
C Eval VarLen = %len(GetVar)
C Eval chkspace5 = %scan (' ':GetVar)
C If Chkspace5=0
C Eval Err99 = 'N'
C else
C If chkspace5>0 and Chkspace5-1<Varlen
C Eval Err99 = 'Y'
C Else
C Eval Err99 = 'N'
C endIf
C endIf
c endsr
C ClrBlk Begsr
C Eval IesBlk = 'N'
C Eval StsBlk = 'N'
C Eval TypBlk = 'N'
C Eval DidBlk = 'N'
C Eval PidBlk = 'N'
C EndSr
C SortIndOff BegSr
C Eval PoswkPid = *off
c Eval PoswkDid = *off
c Eval PoswkTyp = *off
c Eval PoswkSts = *off
c Eval PoswkIes = *off
c EndSr

Вам также может понравиться