home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
simtel
/
sigm
/
vols000
/
vol049
/
arp010.pli
< prev
next >
Wrap
Text File
|
1984-04-29
|
12KB
|
452 lines
/*PROGRAM
ARP010 - A/R CUSTOMER MASTER FILE MAINTENANCE
PROGRAMMER
ROBERT M. WHITE
DATE WRITTEN
APRIL 15, 1981
PURPOSE
THIS PROGRAM ALLOWS THE OPERATOR TO UPDATE THE
A/R CUSTOMER MASTER FILE RECORDS. THIS INCLUDES
ALL COMMON MAINTENANCE FUNCTIONS.
INPUT
OUTPUT
REMARKS
*/
ARP010: PROC;
/* * * * CUSTOMER MASTER FILE MAINTENANCE PROGRAM * * * */
/* * * PROGRAM REPLACEMENTS * * */
%INCLUDE 'C:BTCCS.PLI';
%INCLUDE 'C:BTERRCS.PLI';
%REPLACE FALSE BY '0'B;
%REPLACE TRUE BY '1'B;
/* * * PROGRAM AREAS * * */
DCL I BIN(15); /* INDEX VARIABLE */
DCL RP CHAR(1); /* CHAR RESPONSE */
DCL NRP BIN(15); /* NUMERIC RESPONSE */
DCL RTN_COD BIN(7); /* RETURN CODE */
/* * * COMMON DCL INCLUDES * * */
%INCLUDE 'C:SUBS1.DCL';
%INCLUDE 'ARCOMMON.DCL';
%INCLUDE 'ARCUSTM.DCL';
/* * * COMMON PROC INCLUDES * * */
DCL BTREE ENTRY(BIN(7),BIN(7),PTR,BIN(7));
DCL ARM010 ENTRY; /* SCREEN ROUTINES */
DCL ARM011 ENTRY;
/* * * ZERO RECORD. * * */
ZERO_MSTR: PROC;
REC1.CSID=' ';
REC1.CSBILCON=' ';
REC1.CSBILCMP=' ';
REC1.CSBILAD1=' ';
REC1.CSBILAD2=' ';
REC1.CSBILAD3=' ';
REC1.CSBILZIP=' ';
REC1.CSBILTEL=' ';
REC1.CSBILEXT=0;
REC1.CSTECCON=' ';
REC1.CSTECCMP=' ';
REC1.CSTECAD1=' ';
REC1.CSTECAD2=' ';
REC1.CSTECAD3=' ';
REC1.CSTECZIP=' ';
REC1.CSTECTEL=' ';
REC1.CSTECEXT=0;
REC1.CSSTAT=' ';
REC1.CSTERM=' ';
REC1.CSBALTYP=' ';
REC1.CSPRCCOD=' ';
REC1.CSDISC=' ';
REC1.CSTAXCOD=' ';
REC1.CSCURAMT=0;
REC1.CS30DAMT=0;
REC1.CS60DAMT=0;
REC1.CSOVRAMT=0;
REC1.CSLYRAMT=0;
REC1.CSSPCL=' ';
END;
/* * * ENTER A FIELD. * * */
GET_FLD: PROC (I);
DCL I BIN(7);
GOTO FLDGET(I);
FLDGET(01):
CALL GETSTR(04,17,LENGTH(REC1.CSBILCON),ADDR(REC1.CSBILCON),
RTN_COD);
RETURN;
FLDGET(02):
CALL GETSTR(05,17,LENGTH(REC1.CSBILCMP),ADDR(REC1.CSBILCMP),
RTN_COD);
RETURN;
FLDGET(03):
CALL GETSTR(06,17,LENGTH(REC1.CSBILAD1),ADDR(REC1.CSBILAD1),
RTN_COD);
RETURN;
FLDGET(04):
CALL GETSTR(07,17,LENGTH(REC1.CSBILAD2),ADDR(REC1.CSBILAD2),
RTN_COD);
RETURN;
FLDGET(05):
CALL GETSTR(08,17,LENGTH(REC1.CSBILAD3),ADDR(REC1.CSBILAD3),
RTN_COD);
RETURN;
FLDGET(06):
CALL GETSTR(08,49,LENGTH(REC1.CSBILZIP),ADDR(REC1.CSBILZIP),
RTN_COD);
RETURN;
FLDGET(07):
CALL GETSTR(09,17,LENGTH(REC1.CSBILTEL),ADDR(REC1.CSBILTEL),
RTN_COD);
RETURN;
FLDGET(08):
CALL GETB15(09,36,REC1.CSBILEXT,0,9999,RTN_COD);
RETURN;
FLDGET(09):
CALL GETSTR(11,17,LENGTH(REC1.CSTECCON),ADDR(REC1.CSTECCON),
RTN_COD);
RETURN;
FLDGET(10):
CALL GETSTR(12,17,LENGTH(REC1.CSTECCMP),ADDR(REC1.CSTECCMP),
RTN_COD);
RETURN;
FLDGET(11):
CALL GETSTR(13,17,LENGTH(REC1.CSTECAD1),ADDR(REC1.CSTECAD1),
RTN_COD);
RETURN;
FLDGET(12):
CALL GETSTR(14,17,LENGTH(REC1.CSTECAD2),ADDR(REC1.CSTECAD2),
RTN_COD);
RETURN;
FLDGET(13):
CALL GETSTR(15,17,LENGTH(REC1.CSTECAD3),ADDR(REC1.CSTECAD3),
RTN_COD);
RETURN;
FLDGET(14):
CALL GETSTR(15,49,LENGTH(REC1.CSTECZIP),ADDR(REC1.CSTECZIP),
RTN_COD);
RETURN;
FLDGET(15):
CALL GETSTR(16,17,LENGTH(REC1.CSTECTEL),ADDR(REC1.CSTECTEL),
RTN_COD);
RETURN;
FLDGET(16):
CALL GETB15(16,36,REC1.CSTECEXT,0,9999,RTN_COD);
RETURN;
FLDGET(17):
CALL GETSTR(18,12,LENGTH(REC1.CSSTAT),ADDR(REC1.CSSTAT),
RTN_COD);
RETURN;
FLDGET(18):
CALL GETSTR(18,25,LENGTH(REC1.CSTERM),ADDR(REC1.CSTERM),
RTN_COD);
RETURN;
FLDGET(19):
CALL GETSTR(18,46,LENGTH(REC1.CSBALTYP),ADDR(REC1.CSBALTYP),
RTN_COD);
RETURN;
FLDGET(20):
CALL GETSTR(18,64,LENGTH(REC1.CSPRCCOD),ADDR(REC1.CSPRCCOD),
RTN_COD);
RETURN;
FLDGET(21):
CALL GETSTR(18,76,LENGTH(REC1.CSDISC),ADDR(REC1.CSDISC),
RTN_COD);
RETURN;
FLDGET(22):
CALL GETSTR(19,14,LENGTH(REC1.CSTAXCOD),ADDR(REC1.CSTAXCOD),
RTN_COD);
RETURN;
FLDGET(23):
CALL GETSTR(19,29,LENGTH(REC1.CSSPCL),ADDR(REC1.CSSPCL),
RTN_COD);
RETURN;
FLDGET(24):
CALL GETD92(20,13,REC1.CSCURAMT,0,0,RTN_COD);
RETURN;
FLDGET(25):
CALL GETD92(20,39,REC1.CS30DAMT,0,0,RTN_COD);
RETURN;
FLDGET(26):
CALL GETD92(20,65,REC1.CS60DAMT,0,0,RTN_COD);
RETURN;
FLDGET(27):
CALL GETD92(21,13,REC1.CSOVRAMT,0,0,RTN_COD);
RETURN;
FLDGET(28):
CALL GETD92(21,41,REC1.CSLYRAMT,0,0,RTN_COD);
RETURN;
END GET_FLD;
/* * * UPDATE A FIELD * * */
UPD_FLDS: PROC;
DCL I BIN(15);
UPD_LOOP:
CALL EOL(23,1);
CALL PUTMSG(23,1,
'PLEASE ENTER FIELD NUMBER TO CHANGE OR <ENTER> FOR END: ');
CALL GETB15(23,57,I,0,28,RTN_COD);
IF I=0 THEN
RETURN;
CALL GET_FLD(I);
GOTO UPD_LOOP;
END UPD_FLDS;
/* * * PRINT A RECORD. * * */
PRNT_MSTR: PROC;
CALL ARM011; /* PUT BACKGROUND ON SCREEN. */
CALL PUTSTR(04,17,LENGTH(REC1.CSBILCON),ADDR(REC1.CSBILCON));
CALL PUTSTR(05,17,LENGTH(REC1.CSBILCMP),ADDR(REC1.CSBILCMP));
CALL PUTSTR(06,17,LENGTH(REC1.CSBILAD1),ADDR(REC1.CSBILAD1));
CALL PUTSTR(07,17,LENGTH(REC1.CSBILAD2),ADDR(REC1.CSBILAD2));
CALL PUTSTR(08,17,LENGTH(REC1.CSBILAD3),ADDR(REC1.CSBILAD3));
CALL PUTSTR(08,49,LENGTH(REC1.CSBILZIP),ADDR(REC1.CSBILZIP));
CALL PUTSTR(09,17,LENGTH(REC1.CSBILTEL),ADDR(REC1.CSBILTEL));
CALL PUTB15(09,36,REC1.CSBILEXT);
CALL PUTSTR(11,17,LENGTH(REC1.CSTECCON),ADDR(REC1.CSTECCON));
CALL PUTSTR(12,17,LENGTH(REC1.CSTECCMP),ADDR(REC1.CSTECCMP));
CALL PUTSTR(13,17,LENGTH(REC1.CSTECAD1),ADDR(REC1.CSTECAD1));
CALL PUTSTR(14,17,LENGTH(REC1.CSTECAD2),ADDR(REC1.CSTECAD2));
CALL PUTSTR(15,17,LENGTH(REC1.CSTECAD3),ADDR(REC1.CSTECAD3));
CALL PUTSTR(15,49,LENGTH(REC1.CSTECZIP),ADDR(REC1.CSTECZIP));
CALL PUTSTR(16,17,LENGTH(REC1.CSTECTEL),ADDR(REC1.CSTECTEL));
CALL PUTB15(16,36,REC1.CSTECEXT);
CALL PUTSTR(18,12,LENGTH(REC1.CSSTAT),ADDR(REC1.CSSTAT));
CALL PUTSTR(18,25,LENGTH(REC1.CSTERM),ADDR(REC1.CSTERM));
CALL PUTSTR(18,46,LENGTH(REC1.CSBALTYP),ADDR(REC1.CSBALTYP));
CALL PUTSTR(18,64,LENGTH(REC1.CSPRCCOD),ADDR(REC1.CSPRCCOD));
CALL PUTSTR(18,76,LENGTH(REC1.CSDISC),ADDR(REC1.CSDISC));
CALL PUTSTR(19,14,LENGTH(REC1.CSTAXCOD),ADDR(REC1.CSTAXCOD));
CALL PUTSTR(19,29,LENGTH(REC1.CSSPCL),ADDR(REC1.CSSPCL));
CALL PUTD92(20,13,ADDR(REC1.CSCURAMT));
CALL PUTD92(20,39,ADDR(REC1.CS30DAMT));
CALL PUTD92(20,65,ADDR(REC1.CS60DAMT));
CALL PUTD92(21,13,ADDR(REC1.CSOVRAMT));
CALL PUTD92(21,41,ADDR(REC1.CSLYRAMT));
END PRNT_MSTR;
/* * PRINT SECTION HEADING * */
PRNT_HDNG: PROC (SUB);
DCL SUB CHAR(25) VARYING;
DCL BLANKS CHAR(13) STATIC INITIAL(' ');
DCL NUM_BLANKS BIN(15);
/* ADJUST INPUT. */
NUM_BLANKS=DIVIDE(25-LENGTH(SUB),2,5);
IF LENGTH(SUB)<25 THEN
SUB=SUBSTR(BLANKS,1,NUM_BLANKS)||SUB;
/* PRINT HEADINGS. */
CALL CLRSCRN;
CALL PUTMSG(1,15,'* * * CUSTOMER FILE MAINTENANCE * * *');
CALL PUTMSG(2,22,SUB);
/* RETURN TO CALLER. */
END PRNT_HDNG;
/* * * START OF MAIN PROGRAM * * */
MAIN_MENU:
BEGIN;
CALL ARM010; /* PRINT MENU */
CALL GETB15(09,23,NRP,0,04,RTN_COD); /* GET FUNCTION NUMBER. */
GOTO MAIN_FUNC(NRP); /* PERFORM THE FUNCTION. */
END; /* MAIN_MENU */
/* * * RETURN TO MAIN MENU * * */
MAIN_FUNC(00):
BEGIN;
CALL CLRSCRN;
CALL PUTMSG(1,1,'RETURNING TO MASTER MENU...');
RETURN;
END;
/* * * ADD BY ID * * */
MAIN_FUNC(01):
BEGIN;
/* GET THE KEY FIELD. */
CALL ZERO_MSTR; /* ZERO THE RECORD. */
CALL PRNT_HDNG('***ADD A CUSTOMER***');
CALL PUTMSG(3,1,'ENTER ID:');
CALL GETSTR(03,11,LENGTH(REC1.CSID),ADDR(REC1.CSID),RTN_COD);
IF REC1.CSID=' ' THEN
DO;
CALL PUTERR('*** 1)ID IS INVALID OR MISSING. ***');
GOTO ADD_NEXT;
END;
CALL BTREE(BT_LOCATE,IDX1,IOCB1P,RTN_COD);
IF RTN_COD=0 THEN
DO;
CALL PUTERR('RECORD ALREADY EXISTS!');
GOTO ADD_NEXT;
END;
IF RTN_COD=3 THEN /* RECORD DOESN'T EXIST.*/
DO;
END;
ELSE
DO;
CALL PUTERR('ADD RETURN CODE ='||RTN_COD||'.');
GOTO ADD_NEXT;
END;
/* GET EACH FIELD IN THE RECORD. */
CALL PRNT_HDNG('ADDING: '||REC1.CSID);
CALL PRNT_MSTR; /* FORMAT THE SCREEN. */
CALL EOL(23,1); /* ERASE CURRENT LINE. */
CALL PUTMSG(23,1,'PLEASE ENTER EACH FIELD AS PROMPTED.');
DO I=1 TO 28;
CALL GET_FLD(I);
END;
CALL UPD_FLDS;
/* ADD THE RECORD TO THE FILE. */
CALL BTREE(BT_WRITE,IDX1,IOCB1P,RTN_COD);
IF RTN_COD=0 THEN
DO;
CALL PUTERR('RECORD SUCCESSFULLY ADDED');
END;
ELSE
DO;
CALL PUTERR('ADD RETURN CODE ='||RTN_COD||'.');
END;
/* EITHER RETURN OR DO ANOTHER RECORD */
ADD_NEXT:
CALL EOL(23,1); /* ASK ABOUT ANOTHER ADD */
CALL PUTMSG(23,1,'DO YOU WISH TO ADD ANOTHER N/A (Y/N)? ');
CALL GETSTR(23,39,1,ADDR(RP),RTN_COD);
IF RP~='N' THEN
GOTO MAIN_FUNC(01);
GOTO MAIN_MENU;
END;
/* * * UPDATE BY ID * * */
MAIN_FUNC(02):
BEGIN;
/* GET THE RECORD TO BE UPDATED */
CALL PRNT_HDNG('***UPDATE A CUSTOMER***');
CALL PUTMSG(3,1,'ENTER ID:');
CALL GETSTR(03,11,LENGTH(REC1.CSID),ADDR(REC1.CSID),RTN_COD);
IF REC1.CSID=' ' THEN
DO;
CALL PUTERR('*** 1)ID IS INVALID OR MISSING. ***');
GOTO UPD_NEXT;
END;
CALL BTREE(BT_READ,IDX1,IOCB1P,RTN_COD);
IF RTN_COD=0 THEN
DO;
END;
ELSE
DO;
CALL PUTERR('READ RETURN CODE ='||RTN_COD||'.');
GOTO UPD_NEXT;
END;
/* UPDATE THE FIELDS IN THIS RECORD */
CALL PRNT_HDNG('UPDATING: '||REC1.CSID);
CALL PRNT_MSTR; /* FORMAT THE SCREEN. */
CALL UPD_FLDS;
/* UPDATE THE RECORD. */
CALL BTREE(BT_UPDATE,IDX1,IOCB1P,RTN_COD);
IF RTN_COD=0 THEN
DO;
CALL PUTERR('RECORD SUCCESSFULLY UPDATED.');
END;
ELSE
DO;
CALL PUTERR('UPDATE RETURN CODE ='||RTN_COD||'.');
END;
/* EITHER RETURN OR DO ANOTHER RECORD. */
UPD_NEXT:
CALL EOL(23,1); /* ASK ABOUT ANOTHER ADD */
CALL PUTMSG(23,1,'DO YOU WISH TO UPDATE ANOTHER N/A (Y/N)? ');
CALL GETSTR(23,42,1,ADDR(RP),RTN_COD);
IF RP~='N' THEN
GOTO MAIN_FUNC(02);
GOTO MAIN_MENU;
END;
/* * * DELETE BY ID * * */
MAIN_FUNC(03):
BEGIN;
/* GET THE RECORD. */
CALL PRNT_HDNG('***DELETE A CUSTOMER***');
CALL PUTMSG(3,1,'ENTER ID:');
CALL GETSTR(03,11,LENGTH(REC1.CSID),ADDR(REC1.CSID),RTN_COD);
CALL BTREE(BT_READ,IDX1,IOCB1P,RTN_COD);
IF RTN_COD=0 THEN
DO;
END;
ELSE
DO;
CALL PUTERR('READ RETURN CODE ='||RTN_COD||'.');
GOTO DELT_NEXT;
END;
/* DISPLAY THE RECORD. */
CALL PRNT_HDNG('DELETING: '||REC1.CSID);
CALL PRNT_MSTR; /* FORMAT THE SCREEN. */
/* ISSUE THE DELETE TO MDBS. */
CALL PUTMSG(23,1,'DO YOU REALLY WANT TO DELETE THIS(Y/N)? ');
CALL GETSTR(23,41,1,ADDR(RP),RTN_COD);
IF RP~='Y' THEN
GOTO DELT_NEXT;
CALL BTREE(BT_DELETE,IDX1,IOCB1P,RTN_COD);
IF RTN_COD=0 THEN
DO;
CALL PUTERR('DELETE WAS SUCCESSFUL.');
END;
ELSE
DO;
CALL PUTERR('DELETE RETURN CODE ='||RTN_COD||'.');
END;
/* EITHER RETURN OR DO ANOTHER RECORD. */
DELT_NEXT:
CALL EOL(23,1); /* ASK ABOUT ANOTHER ADD */
CALL PUTMSG(23,1,'DO YOU WISH TO DELETE ANOTHER N/A (Y/N)? ');
CALL GETSTR(23,42,1,ADDR(RP),RTN_COD);
IF RP~='N' THEN
GOTO MAIN_FUNC(03);
GOTO MAIN_MENU;
END;
/* * * DISPLAY BY ID * * */
MAIN_FUNC(04):
BEGIN;
/* GET THE RECORD TO BE DISPLAYED. */
CALL PRNT_HDNG('***DISPLAY A CUSTOMER***');
CALL PUTMSG(3,1,'ENTER ID:');
CALL GETSTR(03,11,LENGTH(REC1.CSID),ADDR(REC1.CSID),RTN_COD);
CALL BTREE(BT_READ,IDX1,IOCB1P,RTN_COD);
IF RTN_COD=0 THEN
DO;
END;
ELSE
DO;
CALL PUTERR('READ RETURN CODE ='||RTN_COD||'.');
GOTO DSPL_NEXT;
END;
/* DISPLAY THE RECORD. */
CALL PRNT_HDNG('DISPLAYING: '||REC1.CSID);
CALL PRNT_MSTR; /* FORMAT THE SCREEN. */
/* EITHER RETURN OR DO ANOTHER RECORD. */
DSPL_NEXT:
CALL EOL(23,1); /* ASK ABOUT ANOTHER ADD */
CALL PUTMSG(23,1,'DO YOU WISH TO DISPLAY ANOTHER N/A (Y/N)? ');
CALL GETSTR(23,42,1,ADDR(RP),RTN_COD);
IF RP~='N' THEN
GOTO MAIN_FUNC(04);
GOTO MAIN_MENU;
END;
END ARP010;