Mike
I use the SPUT for fixed fields.
The code is list below.
Buddy
*******Code Starts Here
SET ERR MESS OFF
SET MESS OFF
*( Remove the EOFchar)
SET EOFChar OFF
SET WIDTH = 5000
SET VAR VRecord TEXT = (SFIL((CHAR(32)),388))
--This when the coverage will take effect
SET VAR VEffDate DATE = 09/01/2003
DEL C:\TEMP\UPMCFile.TXT
OUT C:\TEMP\UPMCFile.TXT
SEL COUNT(*) INTO VRows INDIC IVRows FROM HlthIns WHE ASSN IN (SEL ASSN FROM
ActiveStudents) AND +
EnrollWaive = 'Enroll' AND Coverage = 'Individual' AND AcademicYear = '2003-2004'
AND SentToUPMC IS NULL
--Add header and footer lines to count
SET VAR VRows = (.VRows + 2)
--Counter for rows actually added to file
SET VAR VHowmany INTEGER = 0
--This creates the header line
--H001Record Type
SET VAR VRecord = (SPUT(.VRecord,'H',1))
--H003 Submitter Name
SET VAR VRecord = (SPUT(.VRecord,'PITT Med Sch',23))
--H004 Create Date
SET VAR VRecord = (SPUT(.VRecord,(CTXT(FORMAT(.#DATE,'YYYYMMDD'))),63))
--H005 Record Count includes header and footer
SET VAR VRecord = (SPUT(.VRecord, (RJS((CTXT(.VRows)),10)),71))
-- OUT C:\TEMP\UPMCFile.TXT APPEND
WRI .VRecord
-- OUT TERM
SET VAR VASSN TEXT, VOBGYN TEXT, VPrac TEXT, VPCP TEXT, VPrac TEXT, +
VGLName TEXT, VGFName TEXT, VLAddress TEXT, VLCity TEXT, VLState TEXT, +
VLZip TEXT, VGender TEXT, VDOB DATE,VDivision TEXT,VCLassYear INTEGER
--File must be in SSN order ASC
DROP CURSOR C#1
DECL C#1 CURSOR FOR SELECT ASSN,PCPNumber,OBGYNNumber,PracNumb FROM HlthIns WHE +
EnrollWaive = 'Enroll' AND Coverage = 'Individual' AND AcademicYear = '2003-2004'
AND SentToUPMC IS NULL +
ORDER BY ASSN
OPEN C#1
FETCH C#1 INTO VASSN INDIC IVASSN, VPCP INDIC IVPCP, VOBGYN INDIC IVOBGYN, VPrac
INDIC IVPrac
WHILE SQLCODE <> 100 THEN
SEL GLNAME,GFNAME,LAddress,LCity,LState,LZip,DateOfBirth,Gender,(IYR(ClassOf))
INTO +
VGLName INDIC IVGLName, VGFName INDIC IVGFName, +
VLAddress INDIC IVLAddress, VLCity INDIC IVLCity, VLState INDIC IVLState, +
VLZip INDIC IVLZip,VDOB INDIC IVDOB, VGender INDIC IVGender,VCLassYear INDIC
IVClassYear +
FROM ActiveStudents WHE ASSN = .VASSN
SWITCH (.VClassYear)
CASE 2004
--4th Year
SET VAR VDivision = ('0061693020')
BREAK
CASE 2005
--3rd Year
SET VAR VDivision = ('0061693020')
BREAK
CASE 2006
--2nd Year
SET VAR VDivision = ('0061693020')
BREAK
CASE 2007
--1st Year
SET VAR VDivision = ('0061693020')
BREAK
DEFAULT
SET VAR VDivision = NULL
ENDSW
IF SQLCODE <> 0 THEN
GOTO NxtOne
ENDIF
--Set var to all spaces
SET VAR VRecord TEXT = (SFIL((CHAR(32)),387))
-- SET VAR VRecord TEXT = (SFIL((CHAR(255)),387))
--D001 Record Type
SET VAR VRecord = (SPUT(.VRecord,'D',1))
--D002 Contract Holders SSN
SET VAR VRecord = (SPUT(.VRecord,.VASSN,3))
--D003 Members SSN
SET VAR VRecord = (SPUT(.VRecord,.VASSN,13))
--D004 Last Name
SET VAR VRecord = (SPUT(.VRecord,(LUC(.VGLName)),23))
--D005 First Name
SET VAR VRecord = (SPUT(.VRecord,(LUC(.VGFName)),37))
--D006 Address Line 1
IF VLAddress CONTAINS '#' THEN
SET VAR VLAddress = (SRPL(.VLAddress,'#',' ',0))
ENDIF
SET VAR VRecord = (SPUT(.VRecord,(LUC(.VLAddress)),51))
--D013 Birth Date
SET VAR VRecord = (SPUT(.VRecord,(CTXT(FORMAT(.VDOB,'YYYYMMDD'))),143))
--D014 City
SET VAR VRecord = (SPUT(.VRecord,(LUC(.VLCity)),151))
--D015 Class
SET VAR VRecord = (SPUT(.VRecord,'SB',175))
--D019 Division Number
SET VAR VRecord = (SPUT(.VRecord,.VDivision,191))
--D020 Effective Date
SET VAR VRecord = (SPUT(.VRecord,(CTXT(FORMAT(.VEffDate,'YYYYMMDD'))),201))
--This will have to be changed next year. No longer using PCPNumbers only Practice
Numbers
*(
IF (SLEN(.VOBGYN)) = 6 THEN
--D029 Alternate Provider Number
SET VAR VRecord = (SPUT(.VRecord,.VOBGYN,247))
ENDIF
)
IF (SLEN(.VOBGYN)) = 4 THEN
--D030 OBGYN Practice number
SET VAR VRecord = (SPUT(.VRecord,.VOBGYN,259))
ENDIF
IF (SLEN(.VPCP)) = 6 THEN
--D031 Primary Care Physicians Provider Number
SET VAR VRecord = (SPUT(.VRecord,.VPCP,263))
ENDIF
IF (SLEN(.VPrac)) = 4 THEN
--D032 Primary Care Physicans Practice Number
SET VAR VRecord = (SPUT(.VRecord,.VPrac,275))
ENDIF
--D037 Gender
SET VAR VRecord = (SPUT(.VRecord,(LUC(.VGender)),295))
--D038 State
SET VAR VRecord = (SPUT(.VRecord,(LUC(.VLState)),297))
--D046
SET VAR VRecord = (SPUT(.VRecord,VLZip,363))
-- OUT C:\TEMP\UPMCFILE.TXT APPEND
WRI .VRecord
-- OUT TERM
SET VAR VHowmany = (.VHowMany + 1)
UPD HlthIns SET SentToUPMC = .#DATE WHE +
ASSN = .VASSN AND AcademicYear = '2003-2004' AND EnrollWaive = 'Enroll' AND +
Coverage = 'Individual' AND SENTTOUPMC IS NULL
LABEL NxtOne
SET VAR VPCP = NULL
SET VAR VOBGYN = NULL
SET VAR VPrac = NULL
FETCH C#1 INTO VASSN INDIC IVASSN, VPCP INDIC IVPCP, VOBGYN INDIC IVOBGYN, VPrac
INDIC IVPrac
ENDWHILE
DROP CURSOR C#1
--Set var to all spaces
SET VAR VRecord TEXT = (SFIL((CHAR(32)),388))
--Add header and footer lines to howmany added
SET VAR VHowmany = (.VHowmany + 2)
SET VAR VDepCount INTEGER = 0
--T001 Record Type
SET VAR VRecord = (SPUT(.VRecord,'T',1))
--T003 Submitter Name
SET VAR VRecord = (SPUT(.VRecord,'PITT Med Sch',23))
--T004 Create Date
SET VAR VRecord = (SPUT(.VRecord,(CTXT(FORMAT(.#DATE,'YYYYMMDD'))),63))
--T005 Record Count includes header and footer
SET VAR VRecord = (SPUT(.VRecord, (RJS((CTXT(.VHowmany)),10)),71))
--T006 Contract Holder Count
--Subtract header and footer lines to howmany added
SET VAR VHowmany = (.VHowmany - 2)
SET VAR VRecord = (SPUT(.VRecord, (RJS((CTXT(.VHowmany)),10)),81))
--T007 Dependent Count
SET VAR VRecord = (SPUT(.VRecord, (RJS((CTXT(.VDepCount)),10)),91))
-- OUT C:\TEMP\UPMCFILE.TXT APPEND
WRI .VRecord
-- OUT TERM
--Subtract Header and footer from VRows to compare
SET VAR VRows = (.VRows - 2)
IF VHowmany <> .VRows THEN
CLS
PAUSE 2 USI 'Error.....Counts Not matching please check file' AT CENTER CENTER
ENDIF
SET EOFChar ON
SET WIDTH = 79
OUT TERM
*******Code Ends Here